对于Circleci,我具有以下config.yml,效果很好 它使用的是aws-ecr和aws-ecs orbs。
version: 2.1
orbs:
aws-ecr: circleci/aws-ecr@0.0.2
aws-ecs: circleci/aws-ecs@0.0.3
workflows:
build-deploy:
jobs:
- aws-ecr/build_and_push_image:
account-url: "myaccount.amazonaws.com"
repo: "my/repo"
region: us-east-1
tag: "${CIRCLE_BRANCH}"
filters:
branches:
only: mybranch
问题是此存储库包含一个.gitmodules文件,该文件提取一个私有的subdmodule。 我似乎无法弄清楚如何覆盖/扩展orb以额外运行
git submodule update --init
我尝试将其添加到dockerfile中,但随后得到
Permission denied (publickey).
fatal: Could not read from remote repository.
注意:dockerfile在本地构建良好,因为本地docker自动注入了我的git键
我也尝试将orb作业重新配置为步骤
version: 2.1
orbs:
aws-ecr: circleci/aws-ecr@0.0.2
aws-ecs: circleci/aws-ecs@0.0.3
workflows:
build-deploy:
jobs:
- lb_build_and_push_image:
steps:
- add_ssh_keys:
fingerprints:
- "my:fin:ger:print"
- aws-ecr/build_and_push_image:
account-url: "account.amazonaws.com"
repo: "my/repo-backend"
region: us-east-1
tag: "${CIRCLE_BRANCH}"
filters:
branches:
only: mybranch
...其中指纹来自ssh签出密钥中的“用户密钥”。 我已经尝试过各种作业/步骤的配置。
模式总是失败,并显示以下消息:
Error: ERROR IN CONFIG FILE:
[#/workflows/build-deploy/jobs/0] 0 subschemas matched instead of one
1. [#/workflows/build-deploy/jobs/0] expected type: String, found: Mapping
是否有人指出如何进行操作,正确的配置是什么,或者只是有关如何进行故障排除的一般性指示? 任何见解都值得赞赏。
答案 0 :(得分:0)
这是最终的解决方案。较新版本的aws-ecr orb提供了有关步骤的命令
version: 2.1
orbs:
aws-ecr: circleci/aws-ecr@4.0.1
aws-ecs: circleci/aws-ecs@0.0.3
aws-cli: circleci/aws-cli@0.1.1
jobs:
build_and_push_image:
docker:
- image: circleci/python:3.7.1
steps:
- checkout
- run:
name: "Pull Submodules"
command: |
git submodule init
git submodule update --remote
- setup_remote_docker
- aws-ecr/build-image:
repo: "my/repo"
tag: "${CIRCLE_BRANCH}"
- aws-cli/install
- aws-ecr/ecr-login
- aws-ecr/push-image:
repo: "my/repo"
tag: "${CIRCLE_BRANCH}"
但是,这确实依赖于aws orb的更新,如果还有其他方法可以解决此问题,我会很感兴趣,假设这些步骤未作为命令公开