Als DevOps-beheerder of -ontwikkelaar wilt u mogelijk een pijplijn in Automation Pipelines maken met behulp van YAML-code in plaats van de gebruikersinterface te gebruiken. Wanneer u pijplijnen als code maakt, kunt u een willekeurige editor gebruiken en opmerkingen in de pijplijncode invoegen.
In uw pijplijncode kunt u verwijzen naar externe configuraties zoals omgevingsvariabelen en beveiligingsreferenties. Wanneer u variabelen bijwerkt die u in uw pijplijncode gebruikt, kunt u deze bijwerken zonder dat u de pijplijncode hoeft bij te werken.
U kunt de YAML-code voor de pijplijn gebruiken als sjabloon voor het klonen en maken van andere pijplijnen en het delen van de sjablonen met anderen.
U kunt sjablonen voor pijplijncodes opslaan in een opslagplaats voor bronbeheer, waarin versies worden gemaakt en updates worden bijgehouden. Met behulp van een bronbeheersysteem kunt u eenvoudig een back-up maken van uw pijplijncode en deze indien nodig herstellen.
Voorwaarden
- Controleer of u een code-editor heeft.
- Als u van plan bent uw pijplijncode op te slaan in een bronbeheeropslagplaats moet u controleren of u toegang heeft tot een werkende instantie.
Procedure
resultaten
Door de codevoorbeelden te gebruiken, heeft u de YAML-code gemaakt die uw pijplijn en eindpunten weergeeft.
Voorbeeld: Voorbeeld van een YAML-code voor een pijplijn en eindpunten
Dit voorbeeld van een YAML-code bevat onderdelen die de werkplek voorstellen voor de systeemeigen build van Automation Pipelines, fasen, taken, meldingen en meer in een pijplijn.
Zie Automation Pipelines verbinden met eindpuntenvoor voorbeelden van code voor ondersteunde invoegtoepassingen
---
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}
---
Deze YAML-code geeft een voorbeeld van een Jenkins-eindpunt weer.
--- 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 ---
Deze YAML-code geeft een voorbeeld van een Kubernetes-eindpunt weer.
--- name: my-k8s tags: [ ] kind: ENDPOINT properties: kubernetesURL: https://urlname.examplelocation.amazonaws.com userName: admin password: encryptedpassword description: '' type: kubernetes:KubernetesServer isLocked: false ---
Volgende stappen
Voer uw pijplijn uit en maak zo nodig aanpassingen. Zie Hoe kan ik een pijplijn uitvoeren en de resultaten bekijken?.