Администратору или разработчику DevOps может потребоваться создать конвейер в Code Streamне через пользовательский интерфейс, а с помощью кода YAML. При создании конвейеров в виде кода можно использовать любой редактор и вставлять комментарии в код конвейера.
В коде конвейера можно обращаться к внешним конфигурациям, таким как переменные среды и учетные данные для безопасного доступа. Переменные, используемые в коде конвейера, можно обновлять, не обновляя код конвейера.
Код YAML конвейера можно использовать в качестве шаблона для клонирования и создания других конвейеров, а также для предоставления общего доступа к шаблонам.
Шаблоны кода конвейеров можно хранить в репозитории системы управления версиями, который назначает версии и отслеживает обновления. Используя систему управления версиями, можно легко создать резервную копию кода конвейера и при необходимости восстановить его.
Необходимые условия
- Убедитесь в наличии редактора кода.
- Если планируется хранить код конвейера в репозитории системы управления версиями, убедитесь в наличии доступа к рабочему экземпляру.
Процедура
Результаты
С помощью примеров кода создан код YAML, который представляет собой конвейер и конечные точки.
Пример: Пример кода YAML для конвейера и конечных точек
Этот пример кода YAML включает в себя разделы, представляющие рабочую область для сборки с помощью встроенных инструментов, этапов, задач, уведомлений и других элементов Code Stream в конвейере.
Примеры кода для поддерживаемых подключаемых модулей см. в разделе Подключение Code Stream к конечным точкам
--- 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} ---
Этот код YAML представляет собой пример конечной точки 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 ---
Этот код YAML представляет собой пример конечной точки Kubernetes.
--- name: my-k8s tags: [ ] kind: ENDPOINT properties: kubernetesURL: https://urlname.examplelocation.amazonaws.com userName: admin password: encryptedpassword description: '' type: kubernetes:KubernetesServer isLocked: false ---
Дальнейшие действия
Запустите конвейер и внесите необходимые изменения. См. раздел Запуск конвейера и просмотр результатов.