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

  1. Dans votre éditeur de code, créez un fichier.
  2. Copiez et collez l'exemple de code de pipeline et mettez-le à jour pour refléter les besoins spécifiques de votre pipeline.
  3. Pour inclure un point de terminaison dans votre code de pipeline, copiez et collez l'exemple de code de point de terminaison, puis mettez-le à jour pour refléter votre point de terminaison.

    Lors de l'utilisation d'un point de terminaison d'API Kubernetes dans l'espace de travail de pipeline, Code Stream crée les ressources Kubernetes nécessaires, telles que ConfigMap, Secret et Pod, pour exécuter la tâche d'intégration continue (CI) ou la tâche personnalisée. Code Stream communique avec le conteneur à l'aide du port de nœud.

    L'espace de travail de pipeline Code Stream prend en charge Docker et Kubernetes pour les tâches d'intégration continue et les tâches personnalisées.

    Pour plus d'informations sur la configuration de l'espace de travail, consultez Configuration de l'espace de travail de pipeline.

  4. Enregistrez le code.
  5. Pour stocker et gérer les versions de votre code de pipeline, archivez le code dans votre référentiel de contrôle de code source.
  6. Lorsque vous créez un pipeline d'intégration et de livraison continues, vous devez importer le fichier YAML Kubernetes.
    Pour importer le fichier YAML Kubernetes, sélectionnez-le dans la zone Livraison continue du modèle de pipeline intelligent, puis cliquez sur Traiter. Vous pouvez également utiliser l'API.

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.