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

  1. Vaya a la página de configuración de proyectos de su organización en Configuración de la organización>General>Proyectos.

    Seleccione la configuración de su organización.

  2. Selección del proyecto que quiere editar.

    Seleccione su proyecto.

  3. En Configuración del proyecto, seleccione Repositorios. Seleccione el repositorio en el que desea ejecutar comandos de Git.

  4. Seleccione Seguridad para editar la seguridad del repositorio.

    Elija Seguridad para editar la seguridad del repositorio.

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

administrar proyecto

Si ve esta página, seleccione el repositorio y, a continuación, seleccione el vínculo:

panel de control superior al proyecto

pestaña de control de versiones del proyecto del panel de control

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.

permisos

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

Agregue una sección checkout con persistCredentials establecido en true.

steps:
- checkout: self
  persistCredentials: true

Más información acerca de checkout.

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:

Asegúrese de que checkout tiene clean establecido en true.

steps:
- checkout: self
  clean: true

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?

¿Qué tareas puedo usar para ejecutar comandos de Git?

Script de Batch

Línea de comandos

PowerShell

Script de shell

¿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 o skip-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.