Definición de recursos en YAML
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Los recursos de YAML representan orígenes de canalizaciones, compilaciones, repositorios, contenedores, paquetes y webhooks. Los recursos también proporcionan la rastreabilidad completa de los servicios usados en la canalización, incluyendo la versión, los artefactos, las confirmaciones asociadas y los elementos de trabajo. Al definir un recurso, se puede consumir en cualquier lugar de la canalización. Además, puede automatizar completamente el flujo de trabajo de DevOps mediante la suscripción a eventos desencadenadores en los recursos.
Para obtener más información, vea Acerca de los recursos y Definición de esquema YAML de recursos.
Schema
resources:
pipelines: [ pipeline ]
builds: [ build ]
repositories: [ repository ]
containers: [ container ]
packages: [ package ]
webhooks: [ webhook ]
Variables
Cuando un recurso desencadena una canalización, se establecen las siguientes variables:
resources.triggeringAlias
resources.triggeringCategory
Estos valores están vacíos si el recurso no desencadena una ejecución de canalización. La variable Build.Reason
debe ser ResourceTrigger
para que estos valores se establezcan.
Definición de un recurso pipelines
Si tiene una canalización que genera artefactos, puede consumir los artefactos definiendo un recurso pipelines
. pipelines
es un recurso dedicado solo para Azure Pipelines. También puede establecer desencadenadores en un recurso de canalización para los flujos de trabajo de implementación continua.
En la definición del recurso, pipeline
es un valor único que puede usar para hacer referencia al recurso de canalización más adelante. source
es el nombre de la canalización que genera un artefacto. Use la etiqueta definida por pipeline
para hacer referencia al recurso de canalización desde otras partes de la canalización, por ejemplo, al usar variables de recursos de canalización o descargar artefactos.
Para ver una manera alternativa de descargar canalizaciones, consulte las tareas de Artefactos de canalización.
resources: # types: pipelines | builds | repositories | containers | packages
pipelines:
- pipeline: string # identifier for the resource used in pipeline resource variables
project: string # project for the source; optional for current project
source: string # name of the pipeline that produces an artifact. If it is in a different pipelines folder, it needs to be the full path, e.g. MyTeam/MyPipeline
version: string # the pipeline run number to pick the artifact, defaults to latest pipeline successful across all stages; Used only for manual or scheduled triggers
branch: string # branch to pick the artifact, optional; defaults to all branches; Used only for manual or scheduled triggers
tags: [ string ] # list of tags required on the pipeline to pickup default artifacts, optional; Used only for manual or scheduled triggers
trigger: # triggers aren't enabled by default unless you add trigger section to the resource
branches: # branch conditions to filter the events, optional; Defaults to all branches.
include: [ string ] # branches to consider the trigger events, optional; Defaults to all branches.
exclude: [ string ] # branches to discard the trigger events, optional; Defaults to none.
tags: [ string ] # list of tags to evaluate for trigger event, optional
stages: [ string ] # list of stages to evaluate for trigger event, optional
Importante
Al definir un desencadenador de recursos, si su recurso de canalización procede del mismo repositorio (por ejemplo, self) que la canalización actual, el desencadenamiento sigue la misma rama y confirmación en las que se genera el evento. Sin embargo, si el recurso de canalización procede de otro repositorio, la canalización actual se desencadena en la rama predeterminada del repositorio self.
Evaluación de la versión del artefacto
La versión de los artefactos de la canalización de recursos depende de cómo se desencadene la canalización.
Si la canalización se ejecuta porque la desencadenó manualmente o debido a una ejecución programada, la versión de los artefactos se define mediante los valores de las propiedades version
, branch
y tags
.
Propiedades especificadas | Versión del artefacto |
---|---|
version |
Los artefactos de la compilación que tienen el número de ejecución especificado. |
branch |
Los artefactos de la compilación más reciente realizada en la rama especificada. |
Lista de tags |
Los artefactos de la compilación más reciente que tiene todas las etiquetas especificadas. |
branch y lista de tags |
Los artefactos de la última compilación realizada en la rama especificada y que tiene todas las etiquetas especificadas |
Ninguno | Los artefactos de la compilación más reciente en todas las ramas. |
Veamos un ejemplo. Supongamos que la canalización contiene la siguiente definición de recurso.
resources:
pipelines:
- pipeline: MyCIAlias
project: Fabrikam
source: Farbrikam-CI
branch: main ### This branch input cannot have wild cards. It is used for evaluating default version when pipeline is triggered manually or scheduled.
tags: ### These tags are used for resolving default version when the pipeline is triggered manually or scheduled
- Production ### Tags are AND'ed
- PreProduction
Al desencadenar manualmente la canalización para que se ejecute, la versión de los artefactos de la canalización MyCIAlias
es la de la compilación más reciente realizada en la rama main
y que tiene las etiquetas Production
y PrepProduction
.
Cuando la canalización se desencadena porque se completa una de sus canalizaciones de recursos, la versión de los artefactos es la de la canalización desencadenante. Los valores de las propiedades version
, branch
y tags
se omiten.
Desencadenadores especificados | Resultado |
---|---|
branches |
Cada vez que la canalización de recursos completa correctamente una ejecución en las ramas include , se desencadena una nueva ejecución de la canalización actual. |
tags |
Cada vez que la canalización de recursos completa correctamente una ejecución etiquetada con todas etiquetas especificadas, se desencadena una nueva ejecución de la canalización actual. |
stages |
Cada vez que la canalización de recursos ejecuta correctamente el desencadenador stages especificado, se desencadena una nueva ejecución de la canalización actual. |
branches , tags y stages |
Cada vez que la ejecución de la canalización de recursos satisface todas las condiciones de rama, etiquetas y fases, se desencadena una nueva ejecución de la canalización actual. |
trigger: true |
Cada vez que la canalización de recursos completa correctamente una ejecución, se desencadena una nueva ejecución de la canalización actual. |
Nada | Cuando la canalización de recursos completa correctamente una ejecución, no se desencadena ninguna nueva ejecución de la canalización actual. |
Veamos un ejemplo. Supongamos que la canalización contiene la siguiente definición de recurso.
resources:
pipelines:
- pipeline: SmartHotel
project: DevOpsProject
source: SmartHotel-CI
trigger:
branches:
include:
- releases/*
- main
exclude:
- topic/*
tags:
- Verified
- Signed
stages:
- Production
- PreProduction
La canalización se ejecutará siempre que las ejecuciones de canalización SmartHotel-CI
en una de las ramas releases
o en la rama main
se etiqueten con Verified
y Signed
, y se completen las fases Production
y PreProduction
.
download
para canalizaciones
Todos los artefactos de la canalización actual y de todos los recursos pipeline
se descargan automáticamente y están disponibles al principio de cada trabajo deployment
. Puede invalidar este comportamiento. Para más información, consulte Artefactos de canalización. Los artefactos de "trabajo" normales no se descargan automáticamente. Use download
explícitamente cuando sea necesario.
steps:
- download: [ current | pipeline resource identifier | none ] # disable automatic download if "none"
artifact: string ## artifact name, optional; downloads all the available artifacts if not specified
patterns: string # patterns representing files to include; optional
Los artefactos del recurso pipeline
se descargan en la carpeta $(PIPELINE.WORKSPACE)/<pipeline-identifier>/<artifact-identifier>
.
Variables de recursos de canalización
En cada ejecución, los metadatos de un recurso de canalización están disponibles para todos los trabajos en forma de variables predefinidas. <Alias>
es el identificador que proporcionó para el recurso de canalización. Las variables de recursos de canalización solo están disponibles en tiempo de ejecución.
Para obtener más información sobre la sintaxis de variables, consulte Definición de variables.
resources.pipeline.<Alias>.projectID
resources.pipeline.<Alias>.pipelineName
resources.pipeline.<Alias>.pipelineID
resources.pipeline.<Alias>.runName
resources.pipeline.<Alias>.runID
resources.pipeline.<Alias>.runURI
resources.pipeline.<Alias>.sourceBranch
resources.pipeline.<Alias>.sourceCommit
resources.pipeline.<Alias>.sourceProvider
resources.pipeline.<Alias>.requestedFor
resources.pipeline.<Alias>.requestedForID
Para más información, consulte Metadatos de recursos de canalización como variables predefinidas.
Definición de un recurso builds
Si tiene un sistema de compilación de integración continua externo que genera artefactos, puede consumir artefactos con un recurso builds
. Un recurso builds
puede ser cualquier sistema de integración continua externo, como Jenkins, TeamCity, CircleCI, etc.
resources: # types: pipelines | builds | repositories | containers | packages
builds:
- build: string # identifier for the build resource
type: string # the type of your build service like Jenkins, circleCI etc.
connection: string # service connection for your build service.
source: string # source definition of the build
version: string # the build number to pick the artifact, defaults to Latest successful build
trigger: boolean # Triggers aren't enabled by default and should be explicitly set
builds
es una categoría extensible. Puede escribir una extensión para consumir artefactos del servicio de compilaciones e introducir un nuevo tipo de servicio como parte de builds
. Jenkins es un tipo de recurso en builds
.
Importante
Solo se admiten desencadenadores para Jenkins hospedado, donde Azure DevOps tiene línea de visión con el servidor Jenkins.
Tarea downloadBuild
para compilaciones
Puede consumir artefactos del recurso build
como parte de los trabajos que usan la tarea downloadBuild
. En función del tipo de recurso build
definido, esta tarea se resuelve automáticamente en la tarea de descarga correspondiente para el servicio durante el tiempo de ejecución.
Los artefactos del recurso build
se descargan en la carpeta $(PIPELINE.WORKSPACE)/<build-identifier>/
.
Importante
Los artefactos de recursos build
no se descargan automáticamente en los trabajos o trabajos de implementación. Debe agregar explícitamente la tarea downloadBuild
para consumir los artefactos.
- downloadBuild: string # identifier for the resource from which to download artifacts
artifact: string # artifact to download; if left blank, downloads all artifacts associated with the resource provided
patterns: string | [ string ] # a minimatch path or list of [minimatch paths](tasks/file-matching-patterns.md) to download; if blank, the entire artifact is downloaded
Definición de un recurso repositories
Si la canalización tiene plantillas en otro repositorio o si quiere usar la restauración de varios repositorios con un repositorio que requiera una conexión de servicio, debe informar al sistema sobre ese repositorio.
La palabra clave repository
le permite especificar un repositorio externo.
resources:
repositories:
- repository: string # Required as first property. Alias for the repository.
endpoint: string # ID of the service endpoint connecting to this repository.
trigger: none | trigger | [ string ] # CI trigger for this repository, no CI trigger if skipped (only works for Azure Repos).
name: string # repository name (format depends on 'type'; does not accept variables).
ref: string # ref name to checkout; defaults to 'refs/heads/main'. The branch checked out by default whenever the resource trigger fires.
type: string # Type of repository: git, github, githubenterprise, and bitbucket.
Tipo
Las canalizaciones admiten los valores siguientes para el tipo de repositorio: git
, github
, githubenterprise
y bitbucket
.
El tipo git
hace referencia a los repositorios de Git de Azure Repos.
Tipo especificado | Resultado | Ejemplo |
---|---|---|
type: git |
El valor name hace referencia a otro repositorio del mismo proyecto. |
name: otherRepo Para hacer referencia a un repositorio de otro proyecto dentro de la misma organización, anteponga al nombre el nombre de ese proyecto. Un ejemplo es name: OtherProject/otherRepo . |
type: github |
El valor name es el nombre completo del repositorio de GitHub e incluye el usuario u organización. |
name: Microsoft/vscode |
type: githubenterprise |
El valor name es el nombre completo del repositorio de GitHub Enterprise e incluye el usuario u organización. |
name: Microsoft/vscode |
type: bitbucket |
El valor name es el nombre completo del repositorio de Bitbucket Cloud e incluye al usuario u organización. |
name: MyBitbucket/vscode |
Los repositorios de GitHub Enterprise requieren una conexión de servicio de GitHub Enterprise para la autorización.
Los repositorios de Bitbucket Cloud requieren una conexión de servicio de Bitbucket Cloud para la autorización.
Variables
En cada ejecución, la canalización de un recurso de canalización está disponible para todos los trabajos en forma de variables de tiempo de ejecución. <Alias>
es el identificador que proporcionó para el repositorio de canalización.
Variables
En cada ejecución, la canalización de un recurso de canalización está disponible para todos los trabajos en forma de variables de tiempo de ejecución. <Alias>
es el identificador que proporcionó para el repositorio de canalización.
Uso de checkout
para consumir el repositorio
Use la palabra clave checkout
para consumir los repositorios definidos como parte del recurso repository
.
Schema
steps:
- checkout: string # Required as first property. Configures checkout for the specified repository.
clean: string # If true, run git clean -ffdx followed by git reset --hard HEAD before fetching.
fetchDepth: string # Depth of Git graph to fetch.
fetchTags: string # Set to 'true' to sync tags when fetching the repo, or 'false' to not sync tags. See remarks for the default behavior.
lfs: string # Set to 'true' to download Git-LFS files. Default is not to download them.
persistCredentials: string # Set to 'true' to leave the OAuth token in the Git config after the initial fetch. The default is not to leave it.
submodules: string # Set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules. Default is not to fetch submodules.
path: string # Where to put the repository. The default is $(Build.SourcesDirectory).
condition: string # Evaluate this condition expression to determine whether to run this task.
continueOnError: boolean # Continue running even on failure?
displayName: string # Human-readable name for the task.
target: string | target # Environment in which to run this task.
enabled: boolean # Run this task when the job runs?
env: # Variables to map into the process's environment.
string: string # Name/value pairs
name: string # ID of the step.
timeoutInMinutes: string # Time to wait for this task to complete before the server kills it.
retryCountOnTaskFailure: string # Number of retries if the task fails.
Los repositorios del recurso repository
no se sincronizan automáticamente en los trabajos. Use checkout
para capturar los repositorios como parte de los trabajos.
Para más información, consulte Restauración de varios repositorios en la canalización.
Definición de un recurso containers
Si necesita consumir una imagen de contenedor como parte de la canalización de integración continua o entrega continua (CI/CD), puede hacerlo con containers
. Un recurso de contenedor puede ser un registro de Docker público o privado o Azure Container Registry.
Si necesita consumir imágenes del registro de Docker como parte de la canalización, puede definir un recurso de contenedor genérico (no se requiere la palabra clave type
).
resources:
containers:
- container: string # identifier (A-Z, a-z, 0-9, and underscore)
image: string # container image name
options: string # arguments to pass to container at startup
endpoint: string # reference to a service connection for the private registry
env: { string: string } # list of environment variables to add
ports: [ string ] # ports to expose on the container
volumes: [ string ] # volumes to mount on the container
mapDockerSocket: bool # whether to map in the Docker daemon socket; defaults to true
mountReadOnly: # volumes to mount read-only - all default to false
externals: boolean # components required to talk to the agent
tasks: boolean # tasks required by the job
tools: boolean # installable tools like Python and Ruby
work: boolean # the work directory
Puede usar un recurso de contenedor genérico como una imagen consumida como parte del trabajo, o también se puede usar para los trabajos de contenedor. Si la canalización requiere el respaldo de uno o varios servicios, le interesará crear contenedores de servicio y conectarse a ellos. Puede usar volúmenes para compartir datos entre servicios.
Puede usar un tipo de recurso de contenedor de primera clase para Azure Container Registry (ACR) para consumir las imágenes de ACR. Este tipo de recursos se puede usar como parte de los trabajos y también para habilitar desencadenadores de canalización automáticos. Para que ACR use desencadenadores de canalización automáticos, debe tener permisos de colaborador o de propietario. Para obtener más información, vea Roles y permisos de Azure Container Registry.
resources: # types: pipelines | repositories | containers | builds | packages
containers:
- container: string # identifier for the container resource
type: string # type of the registry like ACR, GCR etc.
azureSubscription: string # Azure subscription (ARM service connection) for container registry;
resourceGroup: string # resource group for your ACR
registry: string # registry for container images
repository: string # name of the container image repository in ACR
trigger: # Triggers aren't enabled by default and need to be set explicitly
enabled: boolean # set to 'true' to trigger on all image tags if 'tags' is unset.
tags:
include: [ string ] # image tags to consider the trigger events, optional; defaults to any new tag
exclude: [ string ] # image tags on discard the trigger events, optional; defaults to none
Nota
La sintaxis que se usa para habilitar los desencadenadores de contenedor para todas las etiquetas de imagen (enabled: 'true'
) es diferente de la que se usa con otros desencadenadores de recursos. Preste mucha atención al uso de la sintaxis correcta para un recurso específico.
Nota:
Las conexiones de servicio que usan la federación de identidades de carga de trabajo no se admiten en azureSubscription
.
Variables de recursos de contenedor
Una vez definido un contenedor como recurso, los metadatos de la imagen de contenedor se pasan a la canalización en forma de variables. Se puede acceder a información, como la imagen, el registro y los detalles de conexión, en todos los trabajos que se van a usar en las tareas de implementación del contenedor.
Las variables de recursos de contenedor funcionan con Docker y Azure Container Registry. No se pueden usar variables de recursos de contenedor para contenedores de imágenes locales.
resources.container.<Alias>.type
resources.container.<Alias>.registry
resources.container.<Alias>.repository
resources.container.<Alias>.tag
resources.container.<Alias>.digest
resources.container.<Alias>.URI
resources.container.<Alias>.location
La variable de ubicación solo es aplicable al tipo ACR
de recursos de contenedor.
Definición de un recurso packages
Puede consumir paquetes de GitHub de NuGet y npm como recurso en las canalizaciones YAML.
Al especificar recursos package
, establezca el paquete como NuGet o npm. También puede habilitar desencadenadores de canalización automatizados cuando se publique una nueva versión del paquete.
Para usar paquetes de GitHub, use la autenticación basada en tokens de acceso personal (PAT) y cree una conexión de servicio de GitHub que use PAT.
De forma predeterminada, los paquetes no se descargan automáticamente en los trabajos. Para ello, use getPackage
.
resources:
packages:
- package: myPackageAlias # alias for the package resource
type: Npm # type of the package NuGet/npm
connection: GitHubConnectionName # GitHub service connection with the PAT type
name: nugetTest/nodeapp # <Repository>/<Name of the package>
version: 1.0.1 # Version of the package to consume; Optional; Defaults to latest
trigger: true # To enable automated triggers (true/false); Optional; Defaults to no triggers
Definición de un recurso webhooks
Nota:
Los webhooks se publicaron en Azure DevOps Server 2020.1.
Con otros recursos (como canalizaciones, contenedores, compilaciones y paquetes), puede consumir artefactos y habilitar desencadenadores automatizados. Sin embargo, no puede automatizar el proceso de implementación en función de otros eventos o servicios externos. El recurso webhooks
le permite integrar la canalización con cualquier servicio externo y automatizar el flujo de trabajo. Puede suscribirse a cualquier evento externo mediante sus webhooks (GitHub, GitHub Enterprise, Nexus, Artifactory, etc.) y desencadenar las canalizaciones.
Siga estos pasos para configurar los desencadenadores de webhook.
Configure un webhook en el servicio externo. Al crear el proyecto del flujo de trabajo, debe proporcionar la siguiente información:
Dirección URL de solicitud
https://dev.azure.com/<ADO Organization>/_apis/public/distributedtask/webhooks/<WebHook Name>?api-version=6.0-preview
Secreto: opcional. Si necesita proteger la carga JSON, proporcione el valor de Secreto.
Cree una nueva conexión de servicio de "Webhook entrante". Esta conexión es un tipo de conexión de servicio recién introducido que le permite definir la siguiente información importante:
- Nombre del webhook: el nombre del webhook debe coincidir con el webhook creado en el servicio externo.
- Encabezado HTTP: el nombre del encabezado HTTP en la solicitud que contiene el valor hash HMAC-SHA1 de la carga para la comprobación de la solicitud. Por ejemplo, para GitHub, el encabezado de solicitud es "X-Hub-Signature".
- Secreto: el secreto se usa para comprobar el hash HMAC-SHA1 de la carga que se usa para la comprobación de la solicitud entrante (opcional). Si usó un secreto al crear el webhook, debe proporcionar la misma clave de secreto.
En las canalizaciones YAML, se introduce un nuevo tipo de recurso denominado
webhooks
. Para suscribirse a un evento de webhook, defina un recurso de webhook en la canalización y haga que apunte a la conexión de servicio de webhook entrante. También puede definir más filtros en el recurso de webhook, en función de los datos de carga JSON, para personalizar los desencadenadores de cada canalización. Consuma los datos de carga en forma de variables en los trabajos.Cada vez que la conexión de servicio de webhook entrante recibe un evento de webhook, se desencadena una nueva ejecución para todas las canalizaciones suscritas a dicho evento. Puede consumir los datos de carga JSON de los trabajos con el formato
${{ parameters.<WebhookAlias>.<JSONPath>}}
.
resources:
webhooks:
- webhook: MyWebhookTriggerAlias ### Webhook alias
connection: IncomingWebhookConnection ### Incoming webhook service connection
filters: ### List of JSON parameters to filter; Parameters are AND'ed
- path: JSONParameterPath ### JSON path in the payload
value: JSONParameterExpectedValue ### Expected value in the path provided
Los webhooks automatizan el flujo de trabajo en función de cualquier evento de webhook externo que no sea compatible con los recursos de primera clase, como canalizaciones, compilaciones, contenedores y paquetes. Además, en el caso de los servicios locales en los que Azure DevOps no tiene visibilidad sobre el proceso, puede configurar webhooks en el servicio y desencadenar automáticamente las canalizaciones.
Selector manual de versiones de recursos en el cuadro de diálogo "Crear ejecución"
Al desencadenar manualmente una canalización YAML de implementación continua, se evalúa automáticamente la versión predeterminada de los recursos definidos en la canalización, en función de las entradas proporcionadas. Sin embargo, puede elegir una versión diferente con el selector de versiones de recursos al crear una ejecución.
En el panel Crear ejecución, seleccione Recursos. Verá una lista de los recursos consumidos en esta canalización.
Seleccione un recurso y elija una versión específica de la lista de versiones disponibles. El selector de versiones de recursos se admite para los recursos de canalización, compilación, repositorio, contenedor y paquete.
Para los recursos de canalización, puede ver todas las ejecuciones disponibles en todas las ramas. Búsquelos en función del número de canalización o la rama. Y, elija una ejecución correcta, con errores o en curso. Esta flexibilidad garantiza que puede ejecutar la canalización de implementación continua si está seguro de que generó todos los artefactos que necesita. No es necesario esperar a que la ejecución de la integración continua se complete o vuelva a ejecutarse debido a un error de fase no relacionado en dicha ejecución. Sin embargo, solo se considera que se han completado correctamente las ejecuciones de integración continua cuando se evalúa la versión predeterminada de los desencadenadores programados o si no se usa el selector manual de versiones.
En el caso de los recursos en los que no se pueden capturar las versiones disponibles, como los paquetes de GitHub, se muestra un cuadro de texto como parte del selector de versiones para que pueda proporcionar la versión de la ejecución que se va a seleccionar.
Autorización de una canalización YAML
Los recursos deben estar autorizados para poder usarse. Un propietario de recursos controla los usuarios y canalizaciones que pueden acceder a ese recurso. La canalización debe estar autorizada para usar el recurso. Consulte las siguientes formas de autorizar una canalización YAML.
Vaya a la experiencia de administración del recurso. Por ejemplo, los grupos de variables y los archivos seguros se administran en la página Biblioteca en Canalizaciones. Los grupos de agentes y las conexiones de servicio se administran en Configuración del proyecto. Aquí puede autorizar a todas las canalizaciones el acceso a ese recurso. Esta autorización es conveniente si no tiene que restringir el acceso a un recurso; por ejemplo, probar los recursos.
Cuando se crea una canalización por primera vez, todos los recursos a los que se hace referencia en el archivo YAML se autorizan automáticamente para su uso por la canalización, si se es miembro del rol Usuario en ese recurso. Por lo tanto, los recursos a los que se hace referencia en el archivo YAML al crear una canalización se autorizan automáticamente.
Al realizar cambios en el archivo YAML y agregar recursos, la compilación produce un error similar al siguiente:
Could not find a <resource> with name <resource-name>. The <resource> does not exist or has not been authorized for use.
.En este caso, verá una opción para autorizar los recursos en la compilación con errores. Si es miembro del rol Usuario del recurso, puede seleccionar esta opción. Una vez autorizados los recursos, puede iniciar una nueva compilación.
Compruebe que los roles de seguridad del grupo de agentes del proyecto sean correctos.
Establecimiento de comprobaciones de aprobación de recursos
Puede controlar manualmente cuándo se ejecuta un recurso con comprobaciones de aprobación y plantillas. Con la comprobación de aprobación de plantillas necesaria, puede exigir que cualquier canalización que use un recurso o entorno también se extienda desde una plantilla YAML específica. Establecer una aprobación de plantilla necesaria mejora la seguridad. Asegúrese de que el recurso solo se usa en condiciones específicas con una plantilla. Más información sobre cómo mejorar la seguridad de la canalización con plantillas y recursos.
Rastreabilidad
Se proporciona rastreabilidad completa para cualquier recurso consumido a nivel de canalización o de trabajo de implementación.
Rastreabilidad de canalización
Para cada ejecución de canalización, se muestra la siguiente información.
Recurso que ha desencadenado la canalización, si la desencadena un recurso.
Versión del recurso y los artefactos consumidos.
Confirmaciones asociadas a cada recurso.
Elementos de trabajo asociados a cada recurso.
Rastreabilidad del entorno
Cada vez que una canalización se implementa en un entorno, puede ver una lista de recursos que se consumen. En la vista siguiente se incluyen los recursos consumidos como parte de los trabajos de implementación y sus confirmaciones y elementos de trabajo asociados.
Presentación de información de canalizaciones de implementación continua asociadas en canalizaciones de integración continua
Para proporcionar rastreabilidad completa, puede realizar un seguimiento de las canalizaciones de implementación continua que consumen una canalización de integración continua determinada. Puede ver la lista de canalizaciones YAML de implementación continua en las que se consume una ejecución de canalización de integración continua mediante el recurso pipeline
. Si otras canalizaciones consumen la canalización de integración continua, verá una pestaña "Canalizaciones asociadas" en la vista de ejecución. Aquí puede encontrar todas las ejecuciones de canalización que consumen la canalización y los artefactos de esta.
Soporte técnico y trazabilidad de los problemas de desencadenadores de recursos YAML
Puede resultar confuso cuando los desencadenadores de canalización no se ejecutan. Hemos agregado un nuevo elemento de menú en la página de definición de canalización llamado Problemas del desencadenador, donde puede descubrir por qué los desencadenadores no se ejecutan. Para acceder a esta página, abra el historial de canalizaciones. La opción Problemas del desencadenador solo está disponible para los recursos que no son de repositorio.
Los desencadenadores de recursos podrían no ejecutarse por los siguientes motivos.
Si el origen de la conexión de servicio que se proporciona no es válido, o si hay algún error de sintaxis en el desencadenador, este no se configura, lo que provoca un error.
Si no coinciden las condiciones del desencadenador, el desencadenador no se ejecuta. Aparece una advertencia para que pueda saber por qué las condiciones no coincidieron.
Pasos siguientes
Preguntas más frecuentes
¿Por qué debo usar canalizaciones resources
en lugar del acceso directo download
?
El uso de un recurso pipelines
es una manera de consumir artefactos de una canalización de integración continua y también de configurar desencadenadores automatizados. Un recurso proporciona visibilidad completa sobre el proceso al mostrar la versión consumida, los artefactos, las confirmaciones y los elementos de trabajo. Al definir un recurso de canalización, los artefactos asociados se descargan automáticamente en los trabajos de implementación.
Puede optar por descargar los artefactos en trabajos de compilación o invalidar el comportamiento de descarga en los trabajos de implementación con download
. Para obtener más información, consulte steps.download.
¿Por qué debo usar resources
en lugar de la tarea Descargar artefactos de canalización?
Al usar la tarea Descargar artefactos de canalización directamente, se pierde la rastreabilidad y los desencadenadores. A veces tiene sentido usar la tarea Descargar artefactos de canalización directamente. Por ejemplo, podría tener una tarea de script almacenada en una plantilla diferente que requiera que se descarguen artefactos de una compilación. O bien, es posible que no sepa si alguien que usa una plantilla quiere agregar un recurso de canalización. Para evitar dependencias, puede usar la tarea Descargar artefactos de canalización para pasar toda la información de compilación a una tarea.
¿Cómo puedo desencadenar una ejecución de canalización cuando se actualiza la imagen de Docker Hub?
Deberá configurar una canalización de versión clásica, ya que el desencadenador de recursos de contenedores no está disponible para Docker Hub en canalizaciones YAML.
Cree una nueva conexión de servicio de Docker Hub.
Cree una canalización de versión clásica y agregue un artefacto de Docker Hub. Establezca la conexión de servicio. Seleccione el espacio de nombres, el repositorio, la versión y el alias de origen.
Seleccione el desencadenador y establezca el desencadenador de implementación continua en Habilitar. Creará una versión cada vez que se produzca una inserción de Docker en el repositorio seleccionado.
Cree una fase y un trabajo nuevos. Agregue dos tareas: el inicio de sesión de Docker y Bash:
La tarea Docker tiene la acción
login
y le registra en Docker Hub.La tarea Bash ejecuta
docker pull <hub-user>/<repo-name>[:<tag>]
. Reemplacehub-user
,repo-name
ytag
por sus valores.
¿Cómo puedo validar y solucionar problemas de webhooks?
Cree una conexión de servicio.
Haga referencia a la conexión de servicio y asigne un nombre al webhook en la sección
webhooks
.resources: webhooks: - webhook: MyWebhookTriggerAlias connection: MyServiceConnection
Ejecutar la canalización. Al ejecutar la canalización, el webhook se creará en Azure como una tarea distribuida para su organización.
Realice una llamada API
POST
con JSON válido en el cuerpo ahttps://dev.azure.com/{organization}/_apis/public/distributedtask/webhooks/{webhook-name}?api-version={apiversion}
. Si recibe una respuesta de código de estado 200, el webhook está listo para su consumo por la canalización. Si recibe una respuesta de código de estado 500 con el errorCannot find webhook for the given webHookId ...
, el código puede estar en una rama que no sea la predeterminada.- Abra la canalización.
- Seleccione Editar.
- Seleccione el menú "Más acciones". .
- Seleccione Desencadenadores>YAML>Obtener orígenes.
- Vaya a Rama predeterminada para compilaciones manuales y programadas para actualizar la rama de características.
- Seleccione Guardar y poner en cola.
- Después de que esta canalización se ejecute correctamente, realice una llamada API
POST
con JSON válido en el cuerpo ahttps://dev.azure.com/{organization}/_apis/public/distributedtask/webhooks/{webhook-name}?api-version={apiversion}
. Ahora debería recibir una respuesta de código de estado 200.
Artículos relacionados
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de