En tant qu'administrateur ou développeur DevOps, vous pouvez créer un pipeline dans Code Stream à l'aide du code YAML, au lieu d'utiliser l'interface utilisateur. Lorsque vous créez des pipelines en tant que code, vous pouvez utiliser n'importe quel éditeur et insérer des commentaires dans le code de pipeline.
Dans votre code de pipeline, vous pouvez vous reporter à des configurations externes telles que des variables d'environnement et des informations d'identification de sécurité. Lorsque vous mettez à jour les variables que vous utilisez dans votre code de pipeline, vous pouvez les mettre à jour sans devoir mettre à jour le code de pipeline.
Vous pouvez utiliser le code YAML du pipeline comme modèle pour cloner et créer d'autres pipelines, et partager les modèles avec d'autres utilisateurs.
Vous pouvez stocker vos modèles de code de pipeline dans un référentiel de contrôle de code source, qui en gère les versions et assure le suivi des mises à jour. En utilisant un système de contrôle de source, vous pouvez facilement sauvegarder votre code de pipeline et le restaurer si nécessaire.
Conditions préalables
- Vérifiez que vous disposez d'un éditeur de code.
- Si vous prévoyez de stocker votre code de pipeline dans un référentiel de contrôle de source, vérifiez que vous pouvez accéder à une instance opérationnelle.
Procédure
Résultats
En utilisant les exemples de code, vous avez créé le code YAML qui représente votre pipeline et vos points de terminaison.
Exemple : Exemple de code YAML pour un pipeline et des points de terminaison.
Cet exemple de code YAML inclut des sections qui représentent l'espace de travail de la build native, des étapes, des tâches, des notifications, etc. de Code Stream.
Pour obtenir des exemples de code pour les plug-ins pris en charge, consultez Connexion de Code Stream à des points de terminaison
---
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}
---
Ce code YAML représente un exemple de point de terminaison 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 ---
Ce code YAML représente un exemple de point de terminaison Kubernetes.
--- name: my-k8s tags: [ ] kind: ENDPOINT properties: kubernetesURL: https://urlname.examplelocation.amazonaws.com userName: admin password: encryptedpassword description: '' type: kubernetes:KubernetesServer isLocked: false ---
Que faire ensuite
Exécutez votre pipeline et apportez les modifications nécessaires. Reportez-vous à la section Comment exécuter un pipeline et afficher les résultats.