Ejecución de comandos Git en un script
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Para algunos flujos de trabajo, necesitará la canalización de compilación para ejecutar comandos de Git. Por ejemplo, después de realizar una compilación de CI en una rama de características, es posible que el equipo quiera combinar la rama en la main.
Git está disponible en agentes hospedados por Microsoft y en agentes locales.
Habilitación de scripts para ejecutar comandos de Git
Nota:
Antes de comenzar, asegúrese de que la identidad predeterminada de la cuenta esté establecida con el código siguiente. Esto debe hacerse como primer paso después de restaurar el código.
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Conceder permisos de control de versiones al servicio de compilación
Vaya a la página de configuración de proyectos de su organización en Configuración de la organización>General>Proyectos.
Selección del proyecto que quiere editar.
En Configuración del proyecto, seleccione Repositorios. Seleccione el repositorio en el que desea ejecutar comandos de Git.
Seleccione Seguridad para editar la seguridad del repositorio.
Busque Servicio de compilación de colección de proyectos. Elija el servicio de compilación de {{nombre del proyecto}} ({su organización}) de identidades (no las cuentas de servicio de compilación de la colección de proyectos ({su organización}) del grupo). De forma predeterminada, esta identidad puede leer desde el repositorio, pero no puede volver a insertar ningún cambio en él. Conceda los permisos necesarios para los comandos de Git que desea ejecutar. Normalmente, querrá conceder lo siguiente:
- Crear rama: permitir
- Contribuir: permitir
- Leer: permitir
- Crear etiqueta: permitir
Vaya a la pestaña del panel de control del control de versiones.
Azure Repos:
https://dev.azure.com/{your-organization}/{your-project}/_admin/_versioncontrol
Local:
https://{your-server}:8080/tfs/DefaultCollection/{your-project}/_admin/_versioncontrol
Si ve esta página, seleccione el repositorio y, a continuación, seleccione el vínculo:
En la pestaña Control de versiones, seleccione el repositorio en el que desea ejecutar comandos de Git y, a continuación, seleccione Servicio de compilación de colección de proyectos. De forma predeterminada, esta identidad puede leer desde el repositorio, pero no puede volver a insertar ningún cambio en él.
Conceda los permisos necesarios para los comandos de Git que desea ejecutar. Normalmente, querrá conceder lo siguiente:
- Crear rama: permitir
- Contribuir: permitir
- Leer: permitir
- Crear etiqueta: permitir
Cuando haya terminado de conceder los permisos, asegúrese de seleccionar Guardar cambios.
Permitir que los scripts accedan al token del sistema
En la pestaña opciones, seleccione Permitir que los scripts accedan al token de OAuth.
Asegúrese de limpiar el repositorio local.
La canalización de compilación no limpia automáticamente ciertos tipos de cambios en el repositorio local. Por lo tanto, asegúrese de:
- Eliminar las ramas locales que cree.
- Deshacer los cambios de configuración de Git.
Si tiene problemas con un agente local, asegúrese de que el repositorio está limpio:
En la pestaña repositorio, establezca Limpiar en true.
En la pestaña variables, cree o modifique la variable
Build.Clean
y establézcala ensource
.
Ejemplos
Enumeración de los archivos del repositorio
En la pestaña de compilación, agregue esta tarea:
Tarea | Argumentos |
---|---|
Utilidad: línea de comandos Enumere los archivos del repositorio de Git. |
Herramienta: git Argumentos: ls-files |
Combinación de una rama de características con la principal
Quiere que una compilación de CI se combine con la principal si la compilación se realiza correctamente.
En la pestaña Desencadenadores, seleccione Integración continua (CI) e incluya las ramas que desea compilar.
Cree merge.bat
en la raíz del repositorio:
@echo off
ECHO SOURCE BRANCH IS %BUILD_SOURCEBRANCH%
IF %BUILD_SOURCEBRANCH% == refs/heads/main (
ECHO Building main branch so no merge is needed.
EXIT
)
SET sourceBranch=origin/%BUILD_SOURCEBRANCH:refs/heads/=%
ECHO GIT CHECKOUT MAIN
git checkout main
ECHO GIT STATUS
git status
ECHO GIT MERGE
git merge %sourceBranch% -m "Merge to main"
ECHO GIT STATUS
git status
ECHO GIT PUSH
git push origin
ECHO GIT STATUS
git status
En la pestaña compilación, agregue esto como la última tarea:
Tarea | Argumentos |
---|---|
Utilidad: script por lotes Ejecute merge.bat. |
Ruta de acceso: merge.bat |
Preguntas más frecuentes
¿Puedo ejecutar comandos de Git si mi repositorio remoto está en GitHub u otro servicio de Git, como Bitbucket Cloud?
Sí
¿Qué tareas puedo usar para ejecutar comandos de Git?
¿Cómo evitar que se desencadene una compilación de CI con una inserción de script?
Agregue ***NO_CI***
al mensaje de confirmación. Estos son unos ejemplos:
git commit -m "This is a commit message ***NO_CI***"
git merge origin/features/hello-world -m "Merge to main ***NO_CI***"
Agregue [skip ci]
al mensaje de confirmación o la descripción. Estos son unos ejemplos:
git commit -m "This is a commit message [skip ci]"
git merge origin/features/hello-world -m "Merge to main [skip ci]"
También puede usar cualquiera de estas variantes para las confirmaciones en Git de Azure Repos, Bitbucket Cloud, GitHub y GitHub Enterprise Server.
[skip ci]
o[ci skip]
skip-checks: true
oskip-checks:true
[skip azurepipelines]
o[azurepipelines skip]
[skip azpipelines]
o[azpipelines skip]
[skip azp]
o[azp skip]
***NO_CI***
¿Necesito un agente?
Necesita al menos un agente para ejecutar la compilación o versión.
Tengo problemas. ¿Cómo puedo solucionarlos?
Vea Solución de problemas de compilación y versión.
No se puede seleccionar un grupo de agentes predeterminado y no se puede poner en cola la compilación o versión. ¿Cómo puedo corregirlo?
Vea Grupos de agentes.
La tarea de envío de cambios de NuGet genera el error siguiente: "Error: no se puede obtener el certificado del emisor local". ¿Cómo lo puedo corregir?
Esto se puede corregir si se añade un certificado raíz de confianza. Puede agregar la variable de entorno NODE_EXTRA_CA_CERTS=file
al agente de compilación, o bien la variable de tarea NODE.EXTRA.CA.CERTS=file
en la canalización. Vea la documentación de Node.js para obtener más detalles sobre esta variable. Consulte Establecimiento de variables en una canalización para obtener instrucciones sobre cómo establecer una variable en la canalización.
Utilizo TFS en el entorno local y no veo algunas de estas características. ¿Por qué no?
Algunas de estas características solo están disponibles en Azure Pipelines y todavía no lo están en el entorno local. Algunas características están disponibles en el entorno local si ha actualizado a la versión más reciente de TFS.