Tarea Script de shell
Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2015
Use esta tarea para ejecutar un script de shell mediante Bash.
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.
Peticiones
sh
Fragmento de código YAML
- task: ShellScript@2
inputs:
scriptPath:
#args: '' # Optional
#disableAutoCwd: false # Optional
#cwd: '' # Optional
#failOnStandardError: false
Argumentos
| Argumento | Descripción |
|---|---|
| Ruta de acceso del script | Ruta de acceso relativa de la raíz del repositorio al archivo de script de shell que desea ejecutar. |
| Argumentos | Argumentos que desea pasar al script. |
Opciones avanzadas
| Argumento | Descripción |
|---|---|
| Directorio de trabajo | Directorio de trabajo en el que desea ejecutar el script. Si lo deja vacío, es la carpeta donde se encuentra el script. |
| Error cuando se produce un error estándar | Seleccione si desea que esta tarea no se haga correctamente si se escribe algún error en la secuencia StandardError. |
Opciones de control de tareas
Ejemplo
Cree test.sh en la raíz del repositorio.
Se recomienda crear este archivo desde un entorno Linux (como una máquina Linux real o Subsistema de Windows para Linux) para que los finales de línea sean correctos.
Además, no olvide hacerlo antes chmod +x test.sh de confirmarlo.
#!/bin/bash
echo "Hello World"
echo "AGENT_WORKFOLDER is $AGENT_WORKFOLDER"
echo "AGENT_WORKFOLDER contents:"
ls -1 $AGENT_WORKFOLDER
echo "AGENT_BUILDDIRECTORY is $AGENT_BUILDDIRECTORY"
echo "AGENT_BUILDDIRECTORY contents:"
ls -1 $AGENT_BUILDDIRECTORY
echo "SYSTEM_HOSTTYPE is $SYSTEM_HOSTTYPE"
echo "Over and out."
En la pestaña Compilar de una canalización de compilación, agregue esta tarea:
|
|
Ejecute test.bat.
|
Este ejemplo también funciona con canalizaciones de versión.
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 obtener información sobre los scripts de Bash?
Beginners/BashScripting para empezar.
Bash impresionante para profundizar.
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:
- Editar la canalización y seleccionar Variables
- Agregar una nueva variable con el nombre
System.Debugy el valortrue - 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.