Как использовать образ докера с этапа сборки на этапе развертывания в CircleCI 2.0?

В последние несколько дней изо всех сил пытается перейти с CircleCI 1.0 на 2.0, и пока процесс сборки завершен, развертывание остается большой проблемой. Документация CircleCI не очень помогает.

Вот похожий config.yml на то, что у меня есть:

version 2

jobs:
  build:
    docker:
      - image: circleci/node:8.9.1

    steps:
      - checkout
      - setup_remote_docker

      - run
          name: Install required stuff
          command: [...]

      - run:
          name: Build
          command: docker build -t project .

  deploy:
    docker:
      - image: circleci/node:8.9.1
    steps:
      - checkout
      - run:
          name: Deploy
          command: |
            bash scripts/deploy/deploy.sh
            docker tag project [...]
            docker push [...]

workflows:
  version: 2
  build-deploy:
    jobs:
      - build
      - deploy:
          requires:
            - build
          filters:
            branches:
              only: develop

Вопрос в deploy работа. Я должен указать docker: -image точка, но я хочу использовать окружающую среду из build работа, где все необходимые вещи уже установлены. Конечно, я мог бы просто установить их в deploy работа, но с несколькими deploy Работа приводит к дублированию кода, что я не хочу.

1 ответ

Вы , вероятно, захотите сохранить рабочее пространство и присоединить его к своему заданию развертывания. после этого вам не нужно будет использовать '- checkout'

https://circleci.com/docs/2.0/configuration-reference/

jobs:
    build:
        docker:
            - image: circleci/node:8.9.1

        steps:
            - checkout
            - setup_remote_docker

            - run
                name: Install required stuff
                command: [...]

            - run:
                  name: Build
                  command: docker build -t project .
            - persist_to_workspace:
                    root: ./
                    paths:
                        - ./

    deploy:
        docker:
            - image: circleci/node:8.9.1
        steps:
            - attach_workspace:
                at: ./
            - run:
                  name: Deploy
                  command: |
                      bash scripts/deploy/deploy.sh
                      docker tag project [...]
                      docker push [...]

workflows:
    version: 2
    build-deploy:
        jobs:
            - build
            - deploy:
                  requires:
                      - build
                  filters:
                      branches:
                          only: develop

Если вы пометите изображение, созданное build этап, вы можете ссылаться на это в deploy этап: https://docs.docker.com/compose/compose-file/

Другие вопросы по тегам