Как интегрировать CD с CircleCI? - PullRequest
0 голосов
/ 20 февраля 2020

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

Я установил проект на Github, который выполняется локально на моем P C и не является веб-приложением. Я подключил его к 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, предупреждающее меня, что сборка не удалась, когда я делаю pu sh для мастеринга на github и одном из pytests потерпеть поражение.

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

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

Может кто-нибудь дать несколько советов о следующих шагах здесь?

1 Ответ

1 голос
/ 21 февраля 2020

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

  1. добавить тест
  2. версия сборки сборки
  3. Pu sh в 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/

...