Como administrador o desarrollador de DevOps, es posible que desee crear una canalización en Code Stream mediante código YAML en lugar de usar la interfaz de usuario. Cuando crea canalizaciones como código, puede utilizar cualquier editor e insertar comentarios en el código de la canalización.
En el código de la canalización, puede consultar configuraciones externas (por ejemplo, variables de entorno y credenciales de seguridad). Cuando actualice las variables que utiliza en el código de la canalización, podrá actualizarlas sin tener que actualizar el código de la canalización.
Puede utilizar el código YAML de la canalización como una plantilla para clonar y crear otras canalizaciones, y puede compartir las plantillas con otros.
Puede almacenar las plantillas de código de la canalización en un repositorio de control de origen, el cual controla sus versiones y realiza un seguimiento de las actualizaciones. Mediante un sistema de control de origen, puede realizar fácilmente una copia de seguridad del código de la canalización y restaurarlo si es necesario.
Requisitos previos
- Compruebe que tenga un editor de código.
- Si planea almacenar el código de la canalización en un repositorio de control de origen, compruebe que puede acceder a una instancia en funcionamiento.
Procedimiento
Resultados
Con los ejemplos de código, se crea el código YAML que representa la canalización y los endpoints.
Ejemplo: Ejemplo de código YAML para canalización y endpoints
En este ejemplo de código YAML, se incluyen secciones que representan el área de trabajo de las fases, las tareas, las notificaciones y la compilación nativa de Code Stream en una canalización, entre otros elementos.
Para obtener ejemplos de código de complementos compatibles, consulte Conectar Code Stream a endpoints
--- 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} ---
Este código YAML representa un ejemplo de endpoint de 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 ---
Este código YAML representa un ejemplo de endpoint de Kubernetes.
--- name: my-k8s tags: [ ] kind: ENDPOINT properties: kubernetesURL: https://urlname.examplelocation.amazonaws.com userName: admin password: encryptedpassword description: '' type: kubernetes:KubernetesServer isLocked: false ---
Qué hacer a continuación
Ejecute la canalización y realice los ajustes necesarios. Consulte Cómo ejecutar una canalización y ver los resultados.