Como administrador ou desenvolvedor de DevOps, você pode querer criar um pipeline no Automation Pipelines usando o código YAML, em vez de usar a interface do usuário. Ao criar pipelines como código, você pode usar qualquer editor e inserir comentários no código do pipeline.
No seu código de pipeline, você pode fazer referência a configurações externas, como variáveis de ambiente e credenciais de segurança. Ao atualizar as variáveis que você usa no seu código de pipeline, a atualização pode ser feita sem a necessidade de atualizar o código do pipeline.
Você pode usar o código YAML do pipeline como modelo para clonar e criar outros pipelines e compartilhar os modelos com outros.
Você pode armazenar seus modelos de código de pipeline em um repositório de controle de origem, que cria versões desses modelos e rastreia atualizações. Usando um sistema de controle de origem, você pode fazer backup do seu código de pipeline facilmente e restaurá-lo se necessário.
Pré-requisitos
- Verifique se você tem um editor de código.
- Se você planeja armazenar seu código de pipeline em um repositório de controle de origem, verifique se é possível acessar uma instância operacional.
Procedimento
Resultados
Usando os exemplos de código, você criou o código YAML que representa o pipeline e os endpoints.
Exemplo: Exemplo de código YAML para um pipeline e endpoints
Este exemplo de código YAML inclui seções que representam o espaço de trabalho para a compilação nativa do Automation Pipelines, estágios, tarefas, notificações e muito mais em um pipeline.
Para obter exemplos de códigos para plug-ins com suporte, consulte Como conectar o Automation Pipelines aos 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 um endpoint do Jenkins de exemplo.
--- 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 um endpoint do Kubernetes de exemplo.
--- name: my-k8s tags: [ ] kind: ENDPOINT properties: kubernetesURL: https://urlname.examplelocation.amazonaws.com userName: admin password: encryptedpassword description: '' type: kubernetes:KubernetesServer isLocked: false ---
O que Fazer Depois
Execute o pipeline e faça os ajustes necessários. Consulte Como executar um pipeline e ver os resultados.