Для создания конвейера непрерывной интеграции и предоставления (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 и введите значение в процентах для этапа развертывания.

    Смарт-шаблон конвейера может обрабатывать развертывания Canary, последовательных обновлений и Blue-Green с непрерывной интеграцией и доставкой (CICD).

Пример использования смарт-шаблона конвейера для создания конвейера для развертывания Blue-Green см. в разделе Как развернуть приложение Code Stream в среде Blue-Green.

Создание конвейера CICD с помощью смарт-шаблона конвейера

После сбора всей информации и настройки нужных параметров можно создать конвейер на основе смарт-шаблона конвейера CICD.

В разделе «Конвейеры» выберите Создать конвейер > Смарт-шаблоны.

При создании конвейера можно использовать смарт-шаблон.

Выберите смарт-шаблон конвейера CICD.

Для создания конвейера непрерывной интеграции и доставки можно нажать карточку смарт-шаблона конвейера CICD.

Заполните шаблон и сохраните конвейер с этапами, которые он формирует. Если необходимо внести окончательные изменения, конвейер можно отредактировать и сохранить.

Смарт-шаблон конвейера CICD позволяет создать конвейер с этапами сборки и публикации приложения и предоставить его в среде разработки и производственной среде.

Затем можно включить конвейер и запустить его. По окончании его работы можно выполнить следующие операции.

  • Убедитесь, что конвейер успешно выполнен. Щелкните Выполняемые элементы и найдите свой конвейер. В случае сбоя исправьте ошибки и запустите его повторно.
  • Убедитесь, что веб-перехватчик Git работает правильно. На вкладке Git Действие отобразятся события. Щелкните Триггеры > Git > Действие.
  • Перейдите на панель управления конвейером и просмотрите тенденции. Щелкните Панели управления и найдите панель управления своего конвейера. Кроме того, можно создать настраиваемую панель управления для формирования отчета о дополнительных ключевых показателях эффективности.

См. подробный пример в разделе Настройка непрерывной интеграции кода из репозитория GitHub или GitLab в конвейер Code Stream.