如何在CircleCI 2.0的部署步骤中使用构建步骤中的docker映像?
在从CircleCI 1.0迁移到2.0的最后几天中苦苦挣扎,尽管构建过程已经完成,但部署仍然是一个大问题。CircleCI文档并没有太大帮助 这里有一个与我所拥有的类似的如何在CircleCI 2.0的部署步骤中使用构建步骤中的docker映像?,docker,deployment,circleci-2.0,circleci-workflows,Docker,Deployment,Circleci 2.0,Circleci Workflows,在从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
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
作业会导致代码重复,这是我不想要的。如果您标记由构建
阶段构建的映像,然后,您可以在deploy
阶段中引用它:您可能希望持久化到工作区并将其附加到部署作业中。
之后,您不需要使用“-checkout”
您是指图像
项目?如果是这样的话,我想我不需要在deploy
工作中安装所有的东西。我假设我需要相同的图像circleci/node:8.9.1
,在那里我检查了代码并安装了所需的东西。
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