Como administrador o desarrollador de DevOps, es posible que desee crear una canalización en Automation Pipelines mediante código YAML en lugar de usar la interfaz de usuario. Cuando crea canalizaciones como código, puede utilizar cualquier editor e insertar comentarios en el código de la canalización.
En el código de la canalización, puede consultar configuraciones externas (por ejemplo, variables de entorno y credenciales de seguridad). Cuando actualice las variables que utiliza en el código de la canalización, podrá actualizarlas sin tener que actualizar el código de la canalización.
Puede utilizar el código YAML de la canalización como una plantilla para clonar y crear otras canalizaciones, y puede compartir las plantillas con otros.
Puede almacenar las plantillas de código de la canalización en un repositorio de control de origen, el cual controla sus versiones y realiza un seguimiento de las actualizaciones. Mediante un sistema de control de origen, puede realizar fácilmente una copia de seguridad del código de la canalización y restaurarlo si es necesario.
Requisitos previos
- Compruebe que tenga un editor de código.
- Si planea almacenar el código de la canalización en un repositorio de control de origen, compruebe que puede acceder a una instancia en funcionamiento.
Procedimiento
Resultados
Con los ejemplos de código, se crea el código YAML que representa la canalización y los endpoints.
Ejemplo: Ejemplo de código YAML para canalización y endpoints
En este ejemplo de código YAML, se incluyen secciones que representan el área de trabajo de las fases, las tareas, las notificaciones y la compilación nativa de Automation Pipelines en una canalización, entre otros elementos.
Para obtener ejemplos de código de complementos compatibles, consulte Conectar Automation Pipelines a endpoints
---
kind: PIPELINE
name: myPipelineName
tags:
- tag1
- tag2
# Ready for execution
enabled: false
#Max number of concurrent executions
concurrency: 10
#Input Properties
input:
input1: '30'
input2: 'Hello'
#Output Properties
output:
BuildNo: '${Dev.task1.buildNo}'
Image: '${Dev.task1.image}'
#Workspace Definition
ciWorkspace:
image: docker:maven-latest
path: /var/tmp
endpoint: my-k8s
cache:
- ~/.m2
# Starred Properties
starred:
input: input1
output: output1
# Stages in order of execution
stageOrder:
- Dev
- QA
- Prod
# Task Definition Section
stages:
Dev:
taskOrder:
- Task1, Task6
- Task2 Long, Task Long Long
- Task5
tasks:
Task1:
type: jenkins
ignoreFailure: false
preCondition: ''
endpoints:
jenkinsServer: myJenkins
input:
job: Add Two Numbers
parameters:
number1: 10
number2: 20
Task2:
type: blah
# repeats like Task1 above
QA:
taskOrder:
- TaskA
- TaskB
tasks:
TaskA:
type: ssh
ignoreFailure: false
preCondition: ''
input:
host: x.y.z.w
username: abcd
password: ${var.mypassword}
script: >
echo "Hello, remote server"
TaskB:
type: blah
# repeats like TaskA above
# Notificatons Section
notifications:
email:
- stage: Dev #optional ; if not found - use pipeline scope
task: Task1 #optional; if not found use stage scope
event: SUCCESS
endpoint: default
to:
- [email protected]
- [email protected]
subject: 'Pipeline ${name} has completed successfully'
body: 'Pipeline ${name} has completed successfully'
jira:
- stage: QA #optional ; if not found - use pipeline scope
task: TaskA #optional; if not found use stage scope
event: FAILURE
endpoint: myJiraServer
issuetype: Bug
project: Test
assignee: abc
summary: 'Pipeline ${name} has failed'
description: |-
Pipeline ${name} has failed
Reason - ${resultsText}
webhook:
- stage: QA #optional ; if not found - use pipeline scope
task: TaskB #optional; if not found use stage scope
event: FAILURE
agent: my-remote-agent
url: 'http://www.abc.com'
headers: #requestHeaders: '{"build_no":"123","header2":"456"}'
Content-Type: application/json
Accept: application/json
payload: |-
Pipeline ${name} has failed
Reason - ${resultsJson}
---
Este código YAML representa un ejemplo de endpoint de Jenkins.
--- name: My-Jenkins tags: - My-Jenkins - Jenkins kind: ENDPOINT properties: offline: true pollInterval: 15.0 retryWaitSeconds: 60.0 retryCount: 5.0 url: http://urlname.yourcompany.com:8080 description: Jenkins test server type: your.jenkins:JenkinsServer isLocked: false ---
Este código YAML representa un ejemplo de endpoint de Kubernetes.
--- name: my-k8s tags: [ ] kind: ENDPOINT properties: kubernetesURL: https://urlname.examplelocation.amazonaws.com userName: admin password: encryptedpassword description: '' type: kubernetes:KubernetesServer isLocked: false ---
Qué hacer a continuación
Ejecute la canalización y realice los ajustes necesarios. Consulte Cómo ejecutar una canalización y ver los resultados.