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:

  1. Solo se descargan los archivos de ese artefacto específico. Si el artefacto no existe, se producirá un error en la tarea.

  2. Los patrones de coincidencia de archivos se evalúan en relación con la raíz del artefacto. Por ejemplo, el patrón *.jar hace que todos los archivos coincidan con una extensión en la raíz del .jar artefacto.

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:

  1. Se pueden descargar varios artefactos y la tarea no producirá un error si no se encuentra ningún archivo.

  2. Se crea un subdirectorio para cada artefacto.

  3. 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 del WebApp artefacto. El patrón */*.dll coincide con todos los archivos con una extensión en la raíz de cada .dll artefacto.

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.

Captura de pantalla que muestra la salida de la tarea de PowerShell

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:

  1. 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.

  2. 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.

  3. 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.