大家。我需要一些帮助来解决我为Angular项目配置circleCi所面临的一些问题。
我用于构建和部署过程的 config.yml 详述如下。目前,我已经决定为每个环境执行单独的工作,每个工作都包括构建和部署。这种方法的问题在于我正在重复自己,而且我无法找到在同一工作流程中部署先前作业中构建的工件的正确方法。
version: 2
jobs:
build:
docker:
- image: circleci/node:8-browsers
steps:
- checkout
- restore_cache:
key: dependency-cache-{{ checksum "package.json" }}
- run:
name: Install dependencies
command: npm install
- save_cache:
key: dependency-cache-{{ checksum "package.json" }}
paths:
- .node_modules
- run:
name: Build Application (Production mode - aot enabled)
command: npm run build:prod
- store_artifacts:
path: dist
destination: dist
deploy_prod:
docker:
- image: circleci/node:8-browsers
environment:
- FIREBASE_TOKEN: "1/AFF2414141ASdASDAKDA4141421sxscq"
steps:
- checkout
- restore_cache:
key: dependency-cache-{{ checksum "package.json" }}
- run:
name: Install dependencies
command: npm install
- save_cache:
key: dependency-cache-{{ checksum "package.json" }}
paths:
- .node_modules
- run:
name: Build Application (Production mode - aot enabled)
command: npm run build:prod
- store_artifacts:
path: dist
destination: dist
- run:
command: ./node_modules/.bin/firebase use default
- deploy:
command: ./node_modules/.bin/firebase deploy --token=$FIREBASE_TOKEN
deploy_qa:
docker:
- image: circleci/node:8-browsers
environment:
- FIREBASE_TOKEN: "1/AFF2414141ASdASDAKDA4141421sxscq"
steps:
- checkout
- restore_cache:
key: dependency-cache-{{ checksum "package.json" }}
- run:
name: Install dependencies
command: npm install
- save_cache:
key: dependency-cache-{{ checksum "package.json" }}
paths:
- .node_modules
- run:
name: Build Application (Production mode - aot enabled)
command: npm run build:prod
- store_artifacts:
path: dist
destination: dist
- run:
command: ./node_modules/.bin/firebase use qa
- deploy:
command: ./node_modules/.bin/firebase deploy --token=$FIREBASE_TOKEN
workflows:
version: 2
build-and-deploy:
jobs:
- build:
filters:
branches:
only:
- master
ignore:
- /feat-.*/
- deploy_prod:
filters:
branches:
ignore:
- /.*/
tags:
only:
- /v[0-9]+(\.[0-9]+){2}/
- deploy_qa:
filters:
branches:
ignore:
- /.*/
tags:
only:
- /v[0-9]+(\.[0-9]+){2}-BETA-([0-9]*)/
据我所知,每个作业都使用不同的泊坞窗图片,因此这会阻止我在同一个工作区上工作。
问:如何在同一工作流程中为不同的作业使用相同的泊坞窗图像?
我认为store_artifacts认为它可以帮助我,但我读到的是它只适用于通过仪表板或API使用。
问:我是否能够在需要存储工件的不同作业的作业上恢复工件?我知道我正在重复自己,我的目标是根据标签提供每个环境部署作业所需的构建作业'名称。所以我的deploy_ {env}作业主要是firebase命令。
workflows:
version: 2
build-and-deploy:
jobs:
- build:
filters:
branches:
only:
- master
ignore:
- /feat-.*/
tags:
only:
- /v[0-9]+(\.[0-9]+){2}/
- /v[0-9]+(\.[0-9]+){2}-BETA-([0-9]*)/
- deploy_prod:
requires:
- build
filters:
branches:
ignore:
- /.*/
tags:
only:
- /v[0-9]+(\.[0-9]+){2}/
- deploy_qa:
requires:
- build
filters:
branches:
ignore:
- /.*/
tags:
only:
- /v[0-9]+(\.[0-9]+){2}-BETA-([0-9]*)/
问:此解决方案的建议步骤(最佳做法)是什么?
答案 0 :(得分:0)
问:如何在同一工作流程中为不同的作业使用相同的泊坞窗图像?
可能有两种解决方法:
1。)Docker Layer Caching:https://circleci.com/docs/2.0/docker-layer-caching/
2。)缓存.tar文件:https://circleci.com/blog/how-to-build-a-docker-image-on-circleci-2-0/
问:我能否在需要不同的工作上恢复工件 存储工件的工作?
persist_to_workspace
和attach_workspace
密钥在这里应该会有所帮助:https://circleci.com/docs/2.0/workflows/#using-workspaces-to-share-data-among-jobs
问:此解决方案的建议步骤(最佳做法)是什么?
这里不确定!无论哪种方式对你来说都是最快最干净的。 :)