Publicación y descarga de artefactos de canalización
Azure DevOps Services
Con Azure Pipelines, puede descargar artefactos de fases anteriores en 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 artefacto de canalización.
Publicación de artefactos
Puede publicar los artefactos mediante YAML, el editor clásico o la CLI de Azure:
Nota
No se admite la publicación de artefactos de canalización en canalizaciones de versión.
steps:
- publish: $(System.DefaultWorkingDirectory)/bin/WebApp
artifact: WebApp
Nota
La palabra clave publish
es un acceso directo para la tarea Publicar artefacto de canalización.
Aunque el nombre del artefacto es opcional, se recomienda especificar un nombre que refleje con precisión el contenido del artefacto. Si tiene previsto consumir el artefacto desde un trabajo que se ejecuta en otro sistema operativo, debe asegurarse de que todas las rutas de acceso de archivo sean válidas en el entorno de destino. Por ejemplo, un nombre de archivo que contenga el carácter \
o *
no se descargará en Windows.
Se requiere la ruta de acceso del archivo o carpeta que quiere publicar. Puede ser una ruta de acceso absoluta o relativa a $(System.DefaultWorkingDirectory)
.
Los paquetes de Azure Artifacts son inmutables. Una vez que publica un paquete, su versión queda reservada permanentemente. Si se ha publicado el paquete, se producirá un error al volver a ejecutar los trabajos con errores. Una buena manera de abordar esta situación si quiere poder volver a ejecutar trabajos con errores sin recibir el error el paquete ya existe, es usar condiciones para que se ejecuten solo si el trabajo anterior se realizó 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 artefactos de canalización. El almacenamiento en caché de canalizaciones también está exento de la facturación del almacenamiento. Consulte ¿Qué artefactos se incluyen en el almacenamiento facturado total?
Precaución
Al eliminar una ejecución de canalización, se eliminarán todos los artefactos asociados a esa ejecución.
Uso de .artifactignore
.artifactignore
usa una sintaxis similar a .gitignore
(con pocas limitaciones) para especificar qué archivos se deben omitir al publicar artefactos. Asegúrese de que el archivo .artifactignore se encuentra en el directorio especificado por el argumento targetPath de la tarea Publicar artefactos de canalización.
Nota
El carácter de signo más (+
) no se admite en las rutas de dirección URL y en algunos metadatos de compilaciones para tipos de paquete, como Maven.
Ejemplo: omita todos los archivos excepto los archivos .exe:
**/*
!*.exe
Importante
Azure Artifacts omite automáticamente la ruta de acceso de la carpeta .git cuando no hay un archivo .artifactignore. Para omitirla, cree un archivo .artifactignore vacío.
Descarga de artefactos
Puede descargar artefactos mediante YAML, el editor clásico o la CLI de Azure.
steps:
- download: current
artifact: WebApp
- actual: se descargan los artefactos generados por la ejecución de la canalización actual. Opciones: current, specific.
Nota
La lista de artefactos publicados solo estará disponible en los siguientes trabajos dependientes. Por lo tanto, use la opción current
solo en trabajos independientes que dependan de trabajos con tareas de publicación de artefactos.
Sugerencia
Puede usar recursos de canalización para definir el origen en un solo lugar y usarlo en cualquier parte de la canalización.
Nota:
La palabra clave download
descarga artefactos. Para obtener más información, consulte steps.download.
Para descargar un artefacto de canalización de un proyecto diferente dentro de la organización, asegúrese de que tiene los permisos adecuados configurados para el proyecto de bajada y la canalización que genera el artefacto. 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 más información.
steps:
- download: current
artifact: WebApp
patterns: |
**/*.js
**/*.zip
Selección de artefactos
Un solo paso de descarga puede descargar uno o varios artefactos. Para descargar varios artefactos, deje vacío el campo Nombre del artefacto y use patrones de coincidencia de archivos para limitar los archivos que se descargan. **
es el patrón de coincidencia de archivos predeterminado (todos los archivos de todos los artefactos).
Un solo artefacto
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
*.jar
coincide con todos los archivos con una extensión.jar
en la raíz del artefacto.
En el ejemplo siguiente se muestra cómo descargar todos los archivos *.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 produce 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 del artefactoWebApp
. El patrón*/*.dll
coincide con todos los archivos con una extensión.dll
en la raíz de cada artefacto.
En el ejemplo siguiente se muestra cómo descargar todos los archivos de todos los archivos .zip
de todos los artefactos:
steps:
- download: current
patterns: '**/*.zip'
Descargar un artefacto específico
En el ejemplo siguiente se muestra cómo descargar artefactos de canalización de una versión de compilación específica generada por una ejecución determinada:
resources:
pipelines:
- pipeline: myPipeline
project: 'xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx'
source: '79'
version: '597'
steps:
- download: myPipeline
artifact: drop
patterns: '**'
displayName: 'Download Pipeline Artifact'
Artefactos en trabajos de versión e implementación
Los artefactos solo se descargan automáticamente en los trabajos de implementación. De forma predeterminada, los artefactos se descargan en $(Pipeline.Workspace)
. La tarea de descarga de artefactos se insertará automáticamente solo cuando se use el enlace de ciclo de vida deploy
en la implementación. Para impedir que los artefactos se descarguen automáticamente, agregue un paso download
y establezca su valor en ninguno.
En un trabajo de compilación normal, debe usar explícitamente la palabra clave de paso download
o la tarea Descargar artefacto de canalización. Consulte los enlaces de ciclo de vida para más información sobre los otros tipos de enlaces.
steps:
- download: none
Uso de artefactos entre fases
Si desea poder acceder al artefacto a través de diferentes fases de la canalización, ahora puede publicar el artefacto en una fase y descargarlo en la siguiente aprovechando las dependencias. Consulte Dependencias de fase en fase para obtener más detalles.
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 nuestro 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. Los artefactos publicados mediante la tarea Publicar artefactos de compilación todavía se pueden descargar mediante Descargar artefactos de compilación, pero se recomienda usar en su lugar la tarea Descargar artefactos de canalización, más reciente.
Al migrar desde artefactos de compilación a artefactos de canalización:
De forma predeterminada, la tarea Descargar artefacto de canalización descarga archivos en
$(Pipeline.Workspace)
. Esta es la ruta de acceso predeterminada y recomendada para todos los tipos de artefactos.Se espera que los patrones de coincidencia de archivos de la tarea Descargar artefactos de compilación empiecen por (o coincidan con) el nombre del artefacto, independientemente de si se especificó o no un artefacto concreto. En la tarea Descargar artefacto de canalización, los patrones no deben incluir el nombre del artefacto cuando ya se ha especificado uno. Para más información, consulte Selección de un artefacto.
Ejemplo
- task: PublishPipelineArtifact@1
displayName: 'Publish pipeline artifact'
inputs:
targetPath: '$(Pipeline.Workspace)'
${{ if eq(variables['Build.SourceBranchName'], 'main') }}:
artifact: 'prod'
${{ else }}:
artifact: 'dev'
publishLocation: 'pipeline'
targetPath: (obligatorio) ruta de acceso del archivo o directorio que se va a publicar. Puede ser absoluta o relativa al directorio de trabajo predeterminado. Puede incluir variables, pero no se admiten caracteres comodín. Valor predeterminado: $(Pipeline.Workspace).
publishLocation: (obligatorio) ubicación de publicación de artefactos. Elija si quiere almacenar el artefacto en Azure Pipelines o copiarlo en un recurso compartido de archivos al que se debe acceder desde el agente de canalización. Opciones:
pipeline
,filepath
. Valor predeterminado: canalización.artefacto: (opcional) nombre del artefacto que se va a publicar. Si no se establece, se adopta como predeterminado un identificador único con ámbito para el trabajo.
Visualización de artefactos publicados
Una vez completada la ejecución de la canalización, siga estos pasos para ver o descargar el artefacto publicado:
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Seleccione Canalizaciones, seleccione la ejecución de canalización y, a continuación, seleccione la pestaña Resumen.
En la sección relacionada, seleccione el artefacto publicado.
Expanda la carpeta de entrega para buscar el artefacto. Luego puede descargar el artefacto y explorar su contenido.
Preguntas más frecuentes
P: ¿Qué son los artefactos de compilación?
R: Los artefactos de compilación son los archivos generados por la compilación. Consulte Artefactos de compilación para más información sobre cómo publicar y consumir los artefactos de compilación.
P: ¿Puedo eliminar artefactos de canalización al volver a ejecutar trabajos con errores?
R: Los artefactos de canalización no se pueden eliminar ni sobrescribir. Si quiere volver a generar artefactos al ejecutar de nuevo un trabajo con errores, puede incluir el identificador del trabajo en el nombre del artefacto. $(system.JobId)
es la variable adecuada para este propósito. Consulte Variables del sistema para más información sobre las variables predefinidas.
P: ¿Cómo puedo acceder a las fuentes de artefactos detrás de un firewall?
R: Si su organización usa un firewall o un servidor proxy, asegúrese de permitir direcciones IP y direcciones URL de dominio de Azure Artifacts.