Als DevOps-beheerder of -ontwikkelaar wilt u mogelijk een pijplijn in Code Stream 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

  1. Maak een bestand in de code-editor.
  2. Kopieer en plak de voorbeeldpijplijncode en werk deze bij zodat die overeenkomt met uw specifieke pijplijnbehoeften.
  3. Om een eindpunt toe te voegen aan uw pijplijncode kopieert en plakt u de voorbeeldeindpuntcode en werkt u deze bij zodat die overeenkomt met uw eindpunt.

    Wanneer u een Kubernetes API-eindpunt in de pijplijnwerkplek gebruikt, maakt Code Stream de nodige Kubernetes-resources zoals ConfigMap, Geheim en Pod om de taak voor continue integratie (CI) of de aangepaste taak uit te voeren. Code Stream communiceert met de container via de NodePort.

    De Code Stream-pijplijnwerkplek ondersteunt Docker en Kubernetes voor taken voor continue integratie en aangepaste taken.

    Zie De pijplijnwerkplek configureren voor meer informatie over het configureren van de werkplek.

  4. Sla de code op.
  5. Om uw pijplijncode op te slaan en te controleren, controleert u de code in uw opslagplaats voor bronbeheer.
  6. Wanneer u een pijplijn voor continue integratie en levering maakt, moet u het Kubernetes YAML-bestand importeren.
    Om het Kubernetes YAML-bestand te importeren, selecteert u het in het gedeelte Continue levering van de slimme pijplijnsjabloon en klikt u op Proces. Of gebruik de API.

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 Code Stream, fasen, taken, meldingen en meer in een pijplijn.

Zie Code Stream 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?.