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
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?.