Рубрики
Uncategorized

Как создать простой CI / CD-трубопровод

Облачные нативные приложения находятся на повышении благодаря масштабируемости и гибкости, которую они обеспечивают. Как … Tagged с DevOps, Showdev, Учебник, Докер.

Облачные нативные приложения находятся на повышении благодаря масштабируемости и гибкости, которую они обеспечивают. Однако этот тип архитектуры имеет свои проблемы. Реализация CI/CD-трубопровода решит большинство из них, как Определение процедур доставки , Доставка приложений самостоятельно и Получение наблюдательности многочисленных строительных блоков в системе некоторые из них.

CI/CD-трубопровод — ключ к Автоматизация шагов процесса доставки программного обеспечения. Это включает в себя инициирующие код сборки, запущенные автоматизированные тесты и развертывание на тестирование или производственную среду.

Один CI/CD-трубопровод состоит из нескольких шагов, выполненных один за другим или параллельно. Есть два известных синтаксиса трубопровода — Сценарию и Декларативный Отказ Ключевое различие между ними — их гибкость.

Хотя оба синтаксиса основаны на Groovy DSL, Скрепление трубопровода синтаксис менее ограничительно. Это также позволяет практически все, что можно сделать в Groovy. Это означает, что скрипт может легко прочитать и писать.

С другой стороны, Декларативный синтаксис Более ограничивает и обеспечивает четко определенную структуру, которая идеально подходит для более простых трубопроводов CI/CD. Этот синтаксис поддерживает «Трубопровод как код» концепция. Следовательно, вы можете написать в файле, который можно проверить в систему управления исходным управлением, как Git.

Чтобы сделать его более удобным для разработчиков для настройки трубопровода CI/CD, Микротика Поддерживает декларативный синтаксис для определения процедур сборки вместе с исходным кодом.

Декларативные трубопроводы CI/CD

Для работы трубопровода для работы каждый компонент/микросервис должен иметь файл с именем Microtica.yaml на корневом уровне в исходном коде. Этот файл содержит спецификацию процесса сборки.

Во время процесса сборки микротика извлекает спецификацию из кода. Затем он создает состояние станка для управления определенным процессом.

Чтобы обеспечить единый источник истины для спецификации трубопровода, микротика не позволяет изменять изменения в строительстве трубопроводов из UI. Изменения вступают в силу только из файла YAML, предусмотренного в каждом репозитории исходного кода. Мы считаем это очень полезным при избежании возможной путаницы определения, обслуживания и, главное, проблемы отладки в процессе.

Определите трубопровод CI/CD

Нет ограничений к этапам построенного конвейера, который вы можете определить. Вот один пример Microtica.yaml Файл, который определяет Построить трубопровод для приложения Nodejs. Этот трубопровод выполняет три конкретных команда, определенные в разделе команд.

Pipeline:
 StartAt: Build
 States:
   Build:
     Type: Task
     Resource: microtica.actions.cmd
     Parameters:
       commands:
       - npm install
       - npm test
       - npm prune --production
       sourceLocation: "$.trigger.source.location"
       artifacts: true
     End: true
  • Трубопровод — корневой ключ, который определяет начало секции трубопровода
  • Startat — Определяет первое действие трубопровода
  • Штаты — определяет список государств для конкретного трубопровода
  • Тип — тип трубопровода. Всегда устанавливайте его на задачу.
  • Ресурс — действие, которое будет использовать двигатель. В настоящее время мы поддерживаем Microtica.actions.cmd. , действие, которое выполняет скрипты Bash.
  • Параметры — набор параметров, которые даны действию

    • Команды — список команд Bash. Здесь вы определяете свои пользовательские сценарии для сборки, тестирования, проверки качества кода и т. Д.
    • Искулокация — местоположение, где действие может найти исходный код. Вы не должны менять это. После выталкивания из хранилища Git Microcea хранит артефакты на месте, указанном пользователем для конкретного компонента/микросервиса. $ .trigger.source.location Определяет это место.
    • Артефакты — Значение, которое определяет, что эта сборка будет производить артефакты, которые будут храниться в S3 и используются во время развертывания. Установите это значение должно ложь в случае, если артефакт сборки является Docker Image
  • Конец — Определяет, что это последнее действие в трубопроводе.

Микротика Поддерживает команды Bash для выполнения действий. В будущем мы планируем позволить разработчикам определить свои собственные пользовательские действия.

Получение образа докера готов к развертыванию

Давайте создадим расширенный конвейер из приведенного выше примера, добавив дополнительный шаг для приготовления образа докера для развертывания:

Pipeline:
  StartAt: Build
  States:
    Build:
      Type: Task
      Resource: microtica.actions.cmd
      Parameters:
        environmentVariables:
          pipelineId: "$.pipeline.id"
          version: "$.commit.version"
        commands:
        - echo Starting build procedure...
        - npm install
        - npm test

        - echo Logging in to Amazon ECR...
        - $(aws ecr get-login --region $AWS_REGION --no-include-email)

        - echo Checking if repository exists in ECR. If not, create one
        - repoExists=`aws ecr describe-repositories --query "repositories[?repositoryName=='$pipelineId']" --output text`
        - if [ -z "$repoExists" ]; then aws ecr create-repository --repository-name $pipelineId; fi

        - awsAccountId=$(echo $CODEBUILD_BUILD_ARN | cut -d':' -f 5)
        - artifactLocation=$awsAccountId.dkr.ecr.$AWS_REGION.amazonaws.com/$pipelineId

        - echo Build Docker image...
        - docker build -t $pipelineId .
        - docker tag $pipelineId $artifactLocation:$version
        - docker tag $pipelineId $artifactLocation:latest

        - echo Push Docker image
        - docker push $artifactLocation
        sourceLocation: "$.source.location"
        artifacts: false
      End: true

В этом примере мы впервые вводим переменные среды в шаге Runtime с окружающая среда Параметр ( $ .pipeline.id и $ .commit.version. оба обеспечиваются микротикой).

Трубопровод CI/CD в последнем примере начинается с выполнения необходимых инструкций для создания и тестирования кода. Как только это будет сделано, микротика создает репозиторий ECR, если оно не существует.

После того, как у нас есть хранилище ECR на месте, последний шаг — создать новый образ докера, а затем подтолкнуть его в репозиторий.

После того, как вы определите Microtica.yaml Файл с конвейером сборки, вы можете автоматизировать Ваш процесс сборки в микротике, когда вы создаете компонент или микросервис с мастером в портале. Эта опция добавит webhook. к вашему репозитории.

WebHook — слушатель, который вызывает процесс сборки всякий раз, когда вы Нажмите новый код к вашей репозитории. Таким образом, вы можете быть уверены, что вы всегда работаете с новейшими изменениями.

Здание Docker Image дало нам артефакт, поэтому мы можем развернуть его в кластере Kubernetes. Вы можете сделать это из Детали микросервиса — Добавить в кластер или в приборной панели Kubernetes — Microsevices — развертывание.

Когда вы развертываете микросервис в кластере Kubernetes, вы можете выбрать параметры масштабирования. Более того, вы также можете настроить Непрерывная доставка для вашего микросервиса.

Обзор трубопроводов

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

Следуйте всем трубопроводам для ваших компонентов и микросервисов в Обзор трубопроводов Страница и отслеживать их статус. Микротика Отмечит трубопровод как не здоров, если обнаружено несколько неудачных сборки.

С этой страницы вы можете получить доступ к любой сборке в истории вашего проекта. Что еще более важно, вы также можете и осмотреть журналы, чтобы найти проблемы.

Мы сильные сторонники для автоматических трубопроводов, как они Удалить ручные ошибки Отказ Более того, они имеют решающее значение для надежной и устойчивой доставки программного обеспечения.

Они делают разработчики программного обеспечения Более продуктивные Выпуская их от необходимости выполнения шагов трубопроводов вручную. Самое главное, они Уменьшить стресс вокруг новых выпусков продукции.

Слияние Не стесняйтесь связаться со мной, если у вас есть какие-либо проблемы.

Оригинал: «https://dev.to/microtica/how-to-create-a-simple-ci-cd-pipeline-420»