Как интегрировать CD с CircleCI?

Я следил за множеством руководств по CI с использованием Python, но руководства, кажется, останавливаются на этом и редко делают следующий шаг к CD. Я тоже единственный разработчик.

Я настроил проект на Github, который работает локально на моем ПК и не является веб-приложением. Я подключил его к CircleCI для CI. Вот мой config.yml файл.

  version: 2
  jobs:
    build:
      docker:
        - image: circleci/python:3.7

      working_directory: ~/repo

      steps:
        # Step 1: obtain repo from GitHub
        - checkout
        - run:
            name: install dependencies
            command: |
              sudo apt-get update
              pip install -r requirements.txt
        - run:
            name: run tests
            command: |
              python -m pytest -v

Все работает отлично, и я получаю электронное письмо от CircleCI, предупреждающее меня о том, что сборка не удалась, когда я делаю толчок к мастеру на github, и один из pytest терпит неудачу.

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

  1. Создайте отдельные тестовые и рабочие версии кода. Автоматизируйте обновление рабочей версии, когда тестовая версия будет собрана без ошибок. Однако не уверен, какие инструменты для этого использовать.
  2. Отправьте проект в Dockerhub. Однако мне это кажется излишним, потому что Docker будет запускать те же pytests, что и CircleCI. Я не уверен, как это поможет даже с компакт-диском на данный момент.

Может ли кто-нибудь дать некоторые рекомендации по следующим шагам здесь?


person Alex F    schedule 20.02.2020    source источник


Ответы (1)


В настоящее время у вас есть только одна вакансия build, поэтому вы можете добавить больше вакансий в разделе вакансий. Итак, что вы хотите сделать здесь:

  1. добавить тест
  2. построить прод версию
  3. Отправить в Dockerhub

Пожалуйста, используйте конфигурацию 2.1, чтобы включить рабочие процессы.

version: 2.1
  jobs:
    build:
      docker:
        - image: circleci/python:3.7

      working_directory: ~/repo

      steps:
        # Step 1: obtain repo from GitHub
        - checkout
        - run:
            name: install dependencies
            command: |
              sudo apt-get update
              pip install -r requirements.txt
        - run:
            name: run tests
            command: |
              python -m pytest -v

    test:
      docker:
        - image: circleci/python:3.7
      steps:
        - checkout
        - run: echo "do your test here"

    build-prod:
      docker:
        - image: circleci/python:3.7
      steps:
        - checkout
        - run: echo "build your app"

    push-to-dockerhub:
      docker:
        - image: circleci/python:3.7
      steps:
        - checkout
        - setup_remote_docker # this is necessary to use docker daemon
        - run: echo "do docker login and docker push here"

workflows:
  build-and-push:
    jobs:
      - build
      - test
          requires:
            - build
      - build-prod
          requires:
            - test
      - push-to-dockerhub
          requires:
            - build-prod

Убедитесь, что мы используем requires для запуска задания только после успешного завершения требуемого задания.

Ну, определенно я не проверял конфигурацию со своей стороны, но она похожа на приведенную выше конфигурацию. У вас есть больше документов по настройке здесь, так что, пожалуйста, взгляните на них, чтобы все работало идеально. https://circleci.com/docs/2.0/configuration-reference/

person Sophie.K    schedule 21.02.2020
comment
Большое спасибо за это. У меня всего пара вопросов, если вы не возражаете. 1) В Python нет сборки, так что было бы правильно опустить это? 2) Есть ли в продолжении этого веб-хук на Dockerhub, который автоматически загружает код в PROD, если в Dockerhub выполняется успешная отправка? - person Alex F; 24.02.2020
comment
Вы можете изменить свое изображение по мере необходимости - не уверен, что вы спрашиваете. Просто измените конфигурацию и подтвердите с помощью Circleci cli. circleci.com/docs/2.0/local-cli Вам не нужно нажмите, чтобы запустить сборку для проверки вашей конфигурации. Я не уверен, что вы хотите сделать и для № 2. - person Sophie.K; 03.03.2020