Для создания конвейера непрерывной интеграции и предоставления (CICD) в Code Stream можно использовать смарт-шаблон конвейера CICD. Чтобы спланировать собственную сборку по модели непрерывной интеграции и непрерывного предоставления, необходимо собрать сведения, которые требуются для заполнения смарт-шаблона конвейера, прежде чем создавать конвейер в данном примере плана.
Чтобы создать конвейер непрерывной интеграции и непрерывного предоставления, необходимо спланировать для него этапы непрерывной интеграции и непрерывного предоставления.
После ввода информации в смарт-шаблон конвейера при его сохранении создается конвейер, который включает в себя этапы и задачи. Он также указывает место развертывания образа на основе выбранных типов среды, таких как «Разработка» и «Производственная среда». Конвейер опубликует образ контейнера и выполнит действия, необходимые для его запуска. После запуска конвейера можно отслеживать тенденции по всем циклам его выполнения.
Если конвейер включает в себя образ из Docker Hub, перед запуском конвейера необходимо убедиться, что в этом образе есть встроенная функция cURL или wget. При выполнении конвейера Code Stream загружает двоичный файл, в котором для выполнения команд используется функция cURL или wget.
Сведения о настройке рабочей области см. в разделе Настройка рабочей области конвейера.
Планирование этапа непрерывной интеграции (CI)
Чтобы спланировать этап непрерывной интеграции для конвейера, необходимо задать внешние и внутренние требования, а также определить сведения, которые нужно ввести в разделе непрерывной интеграции в смарт-шаблоне конвейера. Здесь приведен краткий обзор.
В этом примере используется рабочая область Docker.
Необходимые конечные точки и репозитории:
- Репозиторий исходного кода, куда разработчики могут сохранять код. Когда разработчики сохраняют изменения, Code Stream отправляет последнюю порцию кода в конвейер.
- Конечная точка типа службы GitHub-Enterprise, GitLab-Enterprise или Bitbucket-Enterprise для репозитория, в котором находится исходный код разработчика.
- Конечная точка Docker для узла сборки Docker, который будет выполнять команды сборки внутри контейнера.
- Конечная точка Kubernetes, благодаря которой Code Stream может развертывать образ в кластере Kubernetes.
- Образ построителя, который создает контейнер, в котором выполняются тесты непрерывной интеграции.
- Конечная точка реестра образов, с помощью которой узел сборки Docker может извлекать из него образ построителя.
Потребуется доступ к проекту. В проекте собираются все рабочие элементы, в том числе конвейер, конечные точки и панели управления. Проверьте, являетесь ли вы участником проекта в Code Stream. Если нет, попросите администратора Code Stream добавить вас в проект в качестве участника. См. раздел Добавление проекта в Code Stream.
Потребуется веб-перехватчик Git, позволяющий Code Stream использовать триггер Git, который запускает конвейер, когда разработчики вносят изменения в код. См. раздел Как использовать триггер Git в Code Stream для запуска конвейера.
Наборы средств сборки:
- Тип сборки, например, Maven.
- Все используемые средства сборки после обработки, такие как JUnit, JaCoCo, Checkstyle и FindBugs.
Средство публикации:
- Средство, например Docker, которое будет развертывать контейнер сборки.
- Тег образа, который может быть идентификатором отправленного кода или номером сборки.
Рабочая область сборки:
- Узел сборки Docker, который является конечной точкой Docker.
- Реестр образов. Раздел непрерывной интеграции в конвейере извлекает образ из выбранной конечной точки реестра. Контейнер запускает задачи CI и развертывает образ. Если реестру требуются учетные данные, сначала необходимо создать конечную точку реестра образов, а затем выбрать ее, чтобы узел мог извлечь образ из реестра.
- URL-адрес образа построителя, который создает контейнер, где выполняются тесты непрерывной интеграции.
Планирование этапа непрерывного предоставления (CD)
Чтобы спланировать этап непрерывного предоставления для конвейера, необходимо задать внешние и внутренние требования, а также определить сведения, которые нужно ввести в разделе непрерывного предоставления в смарт-шаблоне конвейера.
Необходимые конечные точки:
- Конечная точка Kubernetes, благодаря которой Code Stream может развертывать образ в кластере Kubernetes.
Типы среды и файлы:
- Все типы сред, где Code Stream будет развертывать приложение, например «Разработка» и «Производственная среда». Смарт-шаблон конвейера создает этапы и задачи в конвейере на основе выбранных типов среды.
Табл. 1. Этапы конвейера, создаваемые смарт-шаблоном конвейера непрерывной интеграции и предоставления Содержимое конвейера Функции Этап сборки — публикации Сборка и тестирование кода, создание образа построителя и публикация образа на узле Docker. Этап разработки Использование кластера разработки (AWS) Amazon Web Services для создания и развертывания образа. На этом этапе можно создать пространство имен в кластере и секретный ключ. Этап переноса в производственную среду Использование производственной версии выпуска VMware Tanzu Kubernetes Grid Integrated Edition (ранее — VMware Enterprise PKS) для развертывания образа в производственном кластере Kubernetes. - Файл Kubernetes YAML, выбираемый в разделе непрерывного предоставления в смарт-шаблоне конвейера CICD.
Файл YAML Kubernetes включает в себя три обязательных раздела для пространства имен, службы и развертывания и один необязательный раздел для секретного элемента. Если планируется создать конвейер путем загрузки образа из частного репозитория, необходимо добавить раздел с секретом конфигурации Docker. Если в создаваемом конвейере используются только общедоступные образы, секретный элемент не требуется. В следующем примере файла YAML содержатся четыре раздела.
apiVersion: v1 kind: Namespace metadata: name: codestream namespace: codestream --- apiVersion: v1 data: .dockerconfigjson: eyJhdXRocyI6eyJodHRwczovL2luZ1234567890lci5pby92MS8iOnsidXNlcm5hbWUiOiJhdXRvbWF0aW9uYmV0YSIsInBhc3N3b3JkIjoiVk13YXJlQDEyMyIsImVtYWlsIjoiYXV0b21hdGlvbmJldGF1c2VyQGdtYWlsLmNvbSIsImF1dGgiOiJZWFYwYjIxaGRHbHZibUpsZEdFNlZrMTNZWEpsUURFeU13PT0ifX19 kind: Secret metadata: name: dockerhub-secret namespace: codestream type: kubernetes.io/dockerconfigjson --- apiVersion: v1 kind: Service metadata: name: codestream-demo namespace: codestream labels: app: codestream-demo spec: ports: - port: 80 selector: app: codestream-demo tier: frontend type: LoadBalancer --- apiVersion: apps/v1 kind: Deployment metadata: name: codestream-demo namespace: codestream labels: app: codestream-demo spec: replicas: 10 selector: matchLabels: app: codestream-demo tier: frontend template: metadata: labels: app: codestream-demo tier: frontend spec: containers: - name: codestream-demo image: automationbeta/codestream-demo:01 ports: - containerPort: 80 name: codestream-demo imagePullSecrets: - name: dockerhub-secret
Примечание: Файл YAML Kubernetes также используется в смарт-шаблоне конвейера непрерывного предоставления, например, в следующих примерах использования.Чтобы применить файл в смарт-шаблоне, нажмите Выбрать и выберите файл YAML Kubernetes. Затем нажмите Обработать. В смарт-шаблоне конвейера отображаются доступные службы и среды развертывания. Выберите службу, конечную точку кластера и стратегию развертывания. Например, чтобы использовать модель развертывания Canary, выберите Canary и введите значение в процентах для этапа развертывания.
Пример использования смарт-шаблона конвейера для создания конвейера для развертывания Blue-Green см. в разделе Как развернуть приложение Code Stream в среде Blue-Green.
Создание конвейера CICD с помощью смарт-шаблона конвейера
После сбора всей информации и настройки нужных параметров можно создать конвейер на основе смарт-шаблона конвейера CICD.
В разделе «Конвейеры» выберите
.
Выберите смарт-шаблон конвейера CICD.
Заполните шаблон и сохраните конвейер с этапами, которые он формирует. Если необходимо внести окончательные изменения, конвейер можно отредактировать и сохранить.
Затем можно включить конвейер и запустить его. По окончании его работы можно выполнить следующие операции.
- Убедитесь, что конвейер успешно выполнен. Щелкните Выполняемые элементы и найдите свой конвейер. В случае сбоя исправьте ошибки и запустите его повторно.
- Убедитесь, что веб-перехватчик Git работает правильно. На вкладке Git Действие отобразятся события. Щелкните .
- Перейдите на панель управления конвейером и просмотрите тенденции. Щелкните Панели управления и найдите панель управления своего конвейера. Кроме того, можно создать настраиваемую панель управления для формирования отчета о дополнительных ключевых показателях эффективности.
См. подробный пример в разделе Настройка непрерывной интеграции кода из репозитория GitHub или GitLab в конвейер Code Stream.