Publicación y descarga de la canalización Artifacts
Azure Pipelines
Con Azure Pipelines, puede descargar artefactos de fases anteriores de la canalización o de otra canalización. También puede publicar el artefacto en un recurso compartido de archivos o hacer que esté disponible como un artefacto de canalización.
Publicación de artefactos
Puede publicar los artefactos mediante YAML, el editor clásico o CLI de Azure:
Nota
La publicación de artefactos de canalización no se admite en las canalizaciones de versión.
steps:
- publish: $(System.DefaultWorkingDirectory)/bin/WebApp
artifact: WebApp
Nota
La palabra clave es un acceso directo para la tarea Publicar artefacto publishpublish .
Aunque el nombre del artefacto es opcional, es una buena práctica especificar un nombre que refleje con precisión el contenido del artefacto. Si tiene previsto consumir el artefacto de un trabajo que se ejecuta en un sistema operativo diferente, debe asegurarse de que todas las rutas de acceso de archivo sean válidas para el entorno de destino. Por ejemplo, un nombre de archivo que contiene el carácter \ o * no se descargará en Windows.
Se requiere la ruta de acceso del archivo o carpeta que desea publicar. Puede ser una ruta de acceso absoluta o relativa a $(System.DefaultWorkingDirectory) .
Los paquetes Azure Artifacts son inmutables. Una vez que publique un paquete, su versión se reservará de forma permanente. Se producirá un error al volver a ejecutar los trabajos con errores si se ha publicado el paquete. Una buena manera de abordar esto si desea poder volver a ejecutar trabajos con errores sin tener que encontrarse con un paquete de errorya existe , es usar Condiciones para ejecutarse solo si el trabajo anterior se ha ejecutado correctamente.
jobs:
- job: Job1
steps:
- script: echo Hello Job1!
- job: Job2
steps:
- script: echo Hello Job2!
dependsOn: Job1
Nota
No se le facturará por almacenar pipeline Artifacts. El almacenamiento en caché de canalizaciones también está exento de la facturación del almacenamiento. Consulte Qué artefactos cuentan para mi almacenamiento facturado total.
Precaución
La eliminación de una ejecución de canalización provocará la eliminación de todos los Artifacts asociados a esa ejecución.
Uso de .artifactignore
.artifactignore usa la sintaxis de gloso de archivos idéntica de (con pocas limitaciones) para proporcionar una manera controlada por versiones de especificar qué archivos no se deben incluir al publicar .gitignore artefactos. Consulte Uso del archivo .artifactignore para obtener más detalles.
Ejemplo: omitir todos los archivos excepto.exe archivos:
**/*
!*.exe
Nota
.artifactignore sigue la misma sintaxis que .artifactignore con algunas limitaciones menores. El carácter de signo más no se admite en las rutas de dirección URL, así como en algunos de los metadatos de control de versiones semánticos de compilación (sufijo) en algunos tipos de ++ paquetes como Maven.
Descarga de artefactos
Puede descargar artefactos mediante YAML, el editor clásico o CLI de Azure.
steps:
- download: current
artifact: WebApp
- current:descargue los artefactos generados por la ejecución de canalización actual. Opciones: actual, específica.
Sugerencia
Puede usar los recursos de canalización para definir el origen en un solo lugar y usarlo en cualquier lugar de la canalización.
Nota
La download palabra clave es un acceso directo para la tarea Descargar artefacto de download
De forma predeterminada, los archivos se descargan en $(Pipeline.Workspace). Si no se especificó un nombre de artefacto, se creará un subdirectorio para cada artefacto descargado. Puede usar patrones de coincidencia para limitar los archivos que se descargan. Consulte Patrones de coincidencia de archivos para obtener más detalles.
steps:
- download: current
artifact: WebApp
patterns: |
**/*.js
**/*.zip
Artifacts selección
Un solo paso de descarga puede descargar uno o varios artefactos. Para descargar varios artefactos, deje vacío el campo de nombre del artefacto y use patrones de coincidencia de archivos para limitar los archivos que se descargarán. ** es el patrón de coincidencia de archivos predeterminado (todos los archivos de todos los artefactos).
Artefacto único
Cuando se especifica un nombre de artefacto:
Solo se descargan los archivos de ese artefacto específico. Si el artefacto no existe, se producirá un error en la tarea.
Los patrones de coincidencia de archivos se evalúan en relación con la raíz del artefacto. Por ejemplo, el patrón
*.jarhace que todos los archivos coincidan con una extensión en la raíz del.jarartefacto.
En el ejemplo siguiente se muestra cómo descargar todo *.js desde un artefacto WebApp :
steps:
- download: current
artifact: WebApp
patterns: '**/*.js'
Varios artefactos
Cuando no se especifica ningún nombre de artefacto:
Se pueden descargar varios artefactos y la tarea no producirá un error si no se encuentra ningún archivo.
Se crea un subdirectorio para cada artefacto.
Los patrones de coincidencia de archivos deben suponer que el primer segmento del patrón es (o coincide) con un nombre de artefacto. Por ejemplo,
WebApp/**coincide con todos los archivos delWebAppartefacto. El patrón*/*.dllcoincide con todos los archivos con una extensión en la raíz de cada.dllartefacto.
En el ejemplo siguiente se muestra cómo descargar todos .zip los archivos de todos los artefactos:
steps:
- download: current
patterns: '**/*.zip'
Artifacts en trabajos de versión e implementación
Artifacts solo se descargan automáticamente en los trabajos de implementación. La tarea de descarga del artefacto se insertará automáticamente solo cuando se use el enlace de ciclo de deploy vida en la implementación. Para impedir que los artefactos se descarguen automáticamente, agregue un download paso y establezca su valor en none.
En un trabajo de compilación normal, debe usar explícitamente la palabra clave step o la download tarea Descargar artefacto download canalización. Consulte enlaces del ciclo de vida para obtener más información sobre los otros tipos de enlaces.
steps:
- download: none
Nota
Actualmente no se admite la eliminación o sobrescritura Artifacts canalización. El flujo de trabajo recomendado si desea volver a ejecutar un trabajo de canalización con errores es incluir el identificador de trabajo en el nombre del artefacto. $(system.JobId) es la variable adecuada para este propósito. Consulte Variables del sistema para obtener más información sobre las variables predefinidas.
Uso de Artifacts entre fases
Si desea tener acceso al artefacto en distintas fases de la canalización, puede usar variables de salida para pasarlo a la siguiente fase del YAML. Consulte Expresiones de dependencia para obtener más detalles.
trigger: none
pool:
vmImage: 'ubuntu-latest'
stages:
- stage: A
jobs:
- job: A1
steps:
- script: echo ##vso[task.setvariable variable=shouldrun;isOutput=true]true
name: printvar
- stage: B
dependsOn: A
jobs:
- job: B1
condition: in(stageDependencies.A.A1.result, 'Succeeded', 'SucceededWithIssues', 'Skipped')
steps:
- script: echo hello from Job B1
- job: B2
condition: eq(stageDependencies.A.A1.outputs['printvar.shouldrun'], 'true')
steps:
- script: echo hello from Job B2
Ejemplo
En el ejemplo siguiente, copiaremos y publicaremos una carpeta de script de nuestro repositorio en $(Build.ArtifactStagingDirectory) . En la segunda fase, descargaremos y ejecutaremos el script.
trigger:
- main
stages:
- stage: build
jobs:
- job: run_build
pool:
vmImage: 'windows-latest'
steps:
- task: VSBuild@1
inputs:
solution: '**/*.sln'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: 'Any CPU'
configuration: 'Release'
- task: CopyFiles@2
displayName: 'Copy scripts'
inputs:
contents: 'scripts/**'
targetFolder: '$(Build.ArtifactStagingDirectory)'
- publish: '$(Build.ArtifactStagingDirectory)/scripts'
displayName: 'Publish script'
artifact: drop
- stage: test
dependsOn: build
jobs:
- job: run_test
pool:
vmImage: 'windows-latest'
steps:
- download: current
artifact: drop
- task: PowerShell@2
inputs:
filePath: '$(Pipeline.Workspace)\drop\test.ps1'
Migración desde artefactos de compilación
Los artefactos de canalización son la próxima generación de artefactos de compilación y son la manera recomendada de trabajar con artefactos. Artifacts publicado mediante la tarea Publicar compilación Artifacts todavía se puede descargar mediante Descargar compilación Artifacts , pero se recomienda usar la tarea Descargar artefacto de canalización más reciente en su lugar.
Al migrar de artefactos de compilación a artefactos de canalización:
En el caso de los artefactos de compilación, es habitual copiar archivos en y, a continuación, usar la tarea Publicar Artifacts
$(Build.ArtifactStagingDirectory)compilación para publicar esta carpeta.$(Build.ArtifactStagingDirectory)Con la tarea Publicar artefacto de canalización, solo puede publicar directamente desde la ruta de acceso que contiene los archivos.De forma predeterminada, la tarea Descargar artefacto de canalización descarga archivos en . Esta es la ruta de acceso predeterminada y recomendada para todos los tipos de artefactos.
Se espera que los patrones de coincidencia de archivos para la tarea Descargar Artifacts compilación comiencen por (o coincidan) con el nombre del artefacto, independientemente de si se especificó o no un artefacto específico. En la tarea Descargar artefacto de canalización, los patrones no deben incluir el nombre del artefacto cuando ya se ha especificado un nombre de artefacto. Para obtener más información, vea Selección de artefacto único.
Preguntas más frecuentes
P: ¿Qué son los artefactos de compilación?
A. Los artefactos de compilación son los archivos generados por la compilación. Consulte Build Artifacts para obtener más información sobre cómo publicar y consumir los artefactos de compilación.
P: ¿Esta tarea puede publicar artefactos en una carpeta compartida?
A: Actualmente no, pero esta característica está planeada.
tarea Publicar artefacto de canalización.
Descargar artefacto de canalización.