Рубрики
Uncategorized

Circleci + AWS Как создать CI / CD-трубопровод с нуля 1 — Создание и нажимание изображений

Подготовьте среду для контейнеров Создайте пользователя IAM Сразу после создания … Теги с DevOps, AWS.

Circleci + AWS Как создать CI/CD-трубопровод с нуля (3 части серии)

Подготовьте среду для контейнеров

Создайте пользователь IAM

Сразу после создания учетной записи AWS вы входите в систему под пользователем root. У вас есть полный доступ к каждому обслуживанию и консоль управления платежным управлением. Чтобы обеспечить взаимодействие с AWS, это хорошая практика для создания нового пользователя внутри группы, которая имеет только необходимые разрешения.

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

Создать окно группы

На втором этапе выберите следующую политику

  • Amazonec2containerregistryLaccess.
  • AwscodedeDoyRoleForecs.
  • Amazonec2containerServiceFullaccess.
  • AmazonecstaskexecutiveRolepolicy

Группа после создания

Затем создайте роль, которую мы дадим ECS, чтобы развернуть наши контейнеры в экземпляры EC2.

Создавать роль

А на втором этапе выберите в политике Amazonec2ContainerServiceForec2role.

Результат

Подробнее о нем показано там

И, наконец, давайте добавим нового пользователя и добавить к ранее созданной группе:

Новый пользователь

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

Создать ECR

ЭКР Место, где вы будете хранить контейнеры от них, будут развернуты. Просто перейдите в ECR и нажмите кнопку «Создать репозиторию». Вы увидите окно, где вы должны выбрать имя для хранилища. Другое Настройки используются по умолчанию

Здорово! У вас есть репозиторий и все необходимые учетные данные для создания и нажатия изображений. Время для автоматизации его.

Настройка круга CI.

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

Прежде чем начать настроить трубопровод, вам нужно будет подготовить приложение Следуя этой фантастической Начало работы страница.

Тесты

Наиболее популярным использованием корпуса круга CI, который я видел, является запущенным тестами (не все разработчики доверяют для внешних Услуги по развертыванию приложений). Чтобы запустить их, вы должны определить работа и добавьте его как шаг к рабочий процесс Отказ Есть пример Тест рабочий процесс для Simple_plug_server применение:

version: 2.1
jobs:
  test:
    docker:
      - image: elixir:1.10
        environment:
          MIX_ENV: test
    working_directory: ~/repo
    steps:
      - checkout
      - run: mix local.hex --force
      - run: mix local.rebar --force
      - run: mix deps.get
      - run: mix deps.compile
      - run: mix test
      - store_test_results:
          path: _build/test/lib/simple_plug_server
workflows:
  version: 2
  test:
    jobs:
      - test

У него есть только один рабочий процесс Тест с одной работой Тест Отказ Эта работа имеет три части:

  • Docker — где определяется как контейнер, внутри которого вы будете развернуть тестовую среду и проводить тесты
  • Whoad_directory — имя папки, где все происходит
  • Шаги — набор команд, где вы загружаете код, настройки и наконец-то прогон. Вы также можете Кэш-зависимости на этом шаге.

Мы также можем улучшить представление неудачных тестов, для него необходимо добавить Junit Formatter для результатов теста (для эликсира это шестнадцатеричный пакет JunitFormatter ) и укажите Каталог, содержащий подкаталоги junit xml или файлов метаданных json json. Более подробную информацию об этом и как добавить поддержку для других языков и тестовых каркасов Просмотр здесь Отказ

Построить и толкать контейнеры

На предыдущих шагах мы создали репозиторий ECR и пользователь, который может нажать изображения, время для настройки CIRCLECI CONFIG.

Для работы с изображениями мы будем использовать официальный ORB для ECR circleci/aws-ecr @ 6.9.1 Он значительно упрощает здание и нажатие изображений, давайте добавим новый шаг в наш файл конфигурации:

version: 2.1
orbs:
  aws-ecr: circleci/aws-ecr@6.9.1
  aws-ecs: circleci/aws-ecs@1.2.0
jobs:
  test:
    docker:
      - image: elixir:1.10
        environment:
          MIX_ENV: test
    working_directory: ~/repo
    steps:
      - checkout
      - run: mix local.hex --force
      - run: mix local.rebar --force
      - run: mix deps.get
      - run: mix deps.compile
      - run: mix test
      - store_test_results:
          path: _build/test/lib/simple_plug_server
workflows:
  version: 2
  test-and-build:
    jobs:
      - test
      - aws-ecr/build-and-push-image:
          repo: "simple_plug_server"
          tag: "${CIRCLE_BRANCH}_${CIRCLE_SHA1},${CIRCLE_BRANCH}_latest"
          requires:
            - test
          filters:
            branches:
              only:
                - master
                - development

Кратко о шагах этой работы:

  • Репо — название репозитория (последняя часть 815991645042.dkr.ecr.us-west-2.amazonaws.com/simple_plug_server )
  • Теги — теги, которые мы обращаемся к встроенному контейнеру, для главной ветки он добавит два тега: Master_02DACFB07F7C09107E2D8DA9955461F025F7F443 и master_latest.
  • Требуется — там вы должны описать предыдущие необходимые шаги, в этом примере мы создаем изображение только в том случае, если проходят все тесты
  • Фильтры — Опишите, для каких ветвей эта работа должна выполняться. Есть много других Фильтры что вы можете использовать для настройки рабочего процесса

Но прежде чем начать запустить этот рабочий процесс, вы должны добавить следующие переменные среды:

  • Aws_access_key_id — ключ доступа для Circleci что вы получили на этот шаг
  • Aws_secret_access_key — секретный ключ для Circleci что вы получили на этот шаг
  • AWS_REGION — регион, где поместил свой экземпляр ECR
  • AWS_ECR_ACCOUNT_URL — URL ECR (выглядит как 815991645042.dkr.ecr.us-west-2.amazonaws.com)

Пример настройки Circleci Env

После успешной сборки разработки и ветвей магистрали вы увидите что-то вроде там:

ECR после успешного толчка

Здорово! Вы автоматизируете процесс запущенных тестов и создания изображений в следующей главе, вы увидите, как настроить серверы на инфраструктуре AWS и перераспределите их после успешного прошлого тестов.

Circleci + AWS Как создать CI/CD-трубопровод с нуля (3 части серии)

Оригинал: «https://dev.to/evanilukhin/circleci-aws-how-to-create-ci-cd-pipeline-from-scratch-part-1-build-and-push-images-511d»