Circleci:具有AWS ECR Orb的私有git子模块

时间:2019-05-02 16:40:11

标签: git-submodules amazon-ecs circleci

对于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

是否有人指出如何进行操作,正确的配置是什么,或者只是有关如何进行故障排除的一般性指示? 任何见解都值得赞赏。

1 个答案:

答案 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的更新,如果还有其他方法可以解决此问题,我会很感兴趣,假设这些步骤未作为命令公开