Tarea Script por lotes

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2015

Use esta tarea para ejecutar un script Windows .bat o .cmd. Opcionalmente, permita que modifique permanentemente las variables de entorno.

Nota

Esta tarea no es compatible con Windows contenedores. Si necesita ejecutar un script por lotes en un contenedor Windows, use la tarea de línea de comandos en su lugar.

Para obtener información sobre la compatibilidad con varias plataformas, vea Scripting multiplataforma.

Nota

En Microsoft Team Foundation Server (TFS) 2018 y versiones anteriores, las canalizaciones de compilación y versión se denominan definiciones, las ejecuciones se denominan compilaciones, las conexiones de servicio se denominan puntos de conexión de servicio, las fases se denominan entornos y los trabajos se denominan fases.

Fragmento de código YAML

# Batch script
# Run a Windows command or batch script and optionally allow it to change the environment
- task: BatchScript@1
  inputs:
    filename: 
    #arguments: # Optional
    #modifyEnvironment: False # Optional
    #workingFolder: # Optional
    #failOnStandardError: false # Optional

Argumentos

Argumento Descripción
filename
Path
(Obligatorio) Ruta de acceso del script cmd o bat que se ejecutará. Debe ser una ruta de acceso completa o relativa al directorio de trabajo predeterminado (tenga en cuenta que el directorio de trabajo podría diferir de "workingFolder", que podría especificarse para esta tarea).
arguments
Argumentos
(Opcional) Especifique los argumentos que se pasarán al script.
modifyEnvironment
Modificación del entorno
(Opcional) Determina si las modificaciones de variables de entorno afectarán a las tareas posteriores
Valor predeterminado: False
workingFolder
Carpeta de trabajo
(Opcional) Directorio de trabajo actual cuando se ejecuta el script. El valor predeterminado es el directorio de trabajo predeterminado del agente.
failOnStandardError
Error cuando se produce un error estándar
(Opcional) Si esto es así, se producirá un error en esta tarea si se escribe algún error en la secuencia StandardError.
Valor predeterminado: false

Ejemplo

Cree test.bat en la raíz del repositorio:

@echo off
echo Hello World from %AGENT_NAME%.
echo My ID is %AGENT_ID%.
echo AGENT_WORKFOLDER contents:
@dir %AGENT_WORKFOLDER%
echo AGENT_BUILDDIRECTORY contents:
@dir %AGENT_BUILDDIRECTORY%
echo BUILD_SOURCESDIRECTORY contents:
@dir %BUILD_SOURCESDIRECTORY%
echo Over and out.

En la pestaña Compilar de una canalización de compilación, agregue esta tarea:


Utilidad: Script por lotes

Ejecute test.bat.

  • Ruta de acceso: test.bat

Código Abierto

Esta tarea es de código abierto en GitHub. Los comentarios y las contribuciones son bienvenidos.

Preguntas más frecuentes

¿Dónde puedo aprender Windows comandos?

Índice A-Z de la línea de comandos Windows CMD

Cómo establecer una variable para que pueda leerla mediante scripts y tareas posteriores?

Para más información sobre cómo definir variables de compilación en un script, consulte Definición y modificación de las variables de compilación en un script.

Para más información sobre cómo definir variables de versión en un script, consulte Definición y modificación de las variables de versión en un script.

P: Tengo problemas con la publicación de mis artefactos. ¿Cómo puedo ver los registros detallados?

Para habilitar registros detallados para la canalización:

  1. Editar la canalización y seleccionar Variables
  2. Agregar una nueva variable con el nombre System.Debug y el valor true
  3. Guardar

P: ¿Qué variables están disponibles para mí?

A: $(Build.SourcesDirectory) y son solo algunas de las variables que puede usar en la $(Agent.BuildDirectory) canalización. Las variables están disponibles como expresiones o scripts.

Consulte Definición de variables,variables predefinidasy variables clásicas de versión y artefactos para obtener información sobre los distintos tipos de variables.

P: La tarea me permite publicar artefactos en el trabajo de implementación en la canalización yaml, pero ¿no puedo usarlos en la canalización de nivel inferior?

A. Los trabajos de implementación no tienen el contexto de las ramas de origen y, por tanto, no son adecuados para publicar artefactos. Se han diseñado principalmente para consumir artefactos. Una solución alternativa sería aislar esa lógica en un trabajo independiente (con dependencias en los trabajos de implementación).

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