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.