web-dev-qa-db-ja.com

GitLab CIで何よりも前に、PATHでdocker-credential-ecr-loginを設定するにはどうすればよいですか?

AWS ECRを使用してプライベートDockerfileイメージをホストしていますが、それをGitLab CIで使用したいと考えています。

ドキュメントに応じて、私はdocker-credential-ecr-loginを設定してプライベートイメージを取得する必要がありますが、他に何をするかはわかりません。それが私の.gitlab-ciファイルです:

image: 0222822883.dkr.ecr.us-east-1.amazonaws.com/api-build:latest

tests:
  stage: test
  before_script:
    - echo "before_script"
    - apt install Amazon-ecr-credential-helper
    - apk add --no-cache curl jq python py-pip
    - pip install awscli
  script:
    - echo "script"
    - bundle install
    - bundle exec rspec
  allow_failure: true # for now as we do not have tests

ありがとうございました。

5
Amanda Ferrari

GitLabドキュメントから。 AWSアカウントとやり取りするために、GitLab CI/CDパイプラインでは、AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYの両方を、[設定]> [CI/CD]> [変数]のGitLab設定で定義する必要があります。次に、beforeスクリプトに追加します。

image: 0222822883.dkr.ecr.us-east-1.amazonaws.com/api-build:latest

tests:
  stage: test
  before_script:
    - echo "before_script"
    - apt install Amazon-ecr-credential-helper
    - apk add --no-cache curl jq python py-pip
    - pip install awscli
    - $( aws ecr get-login --no-include-email )
  script:
    - echo "script"
    - bundle install
    - bundle exec rspec
  allow_failure: true # for now as we do not have tests

また、タイプミスはawscliではなくawsclirでした。その後、ビルド、テスト、Pushを適宜追加します。

0
paltaa

なんらかの論理エラーがあると思います。ビルド構成のimageは、ビルドしてデプロイするイメージではなく、CIスクリプトランナーイメージです。

ユーティリティとGitLab CIなどへの接続を持つ単なるイメージであるため、どのような場合でもそれを使用する必要はないと思います。通常、イメージにはプロジェクトの依存関係はありません。

このような例を確認してください https://Gist.github.com/jlis/4bc528041b9661ae6594c63cd2ef673c 正しい方法をより明確にするために、.

0

Gitlab runnerのdocker executorモードを使用して同じ問題に直面しました。

EC2インスタンスへのSSHは、docker-credential-ecr-login/usr/bin/に存在することを示しました。コンテナーに渡すには、このパッケージをgitlabランナーコンテナーにマウントする必要がありました。

gitlab-runner register -n \
--url '${gitlab_url}' \
--registration-token '${registration_token}' \
--template-config /tmp/gitlab_runner.template.toml \
--executor docker \
--tag-list '${runner_name}' \
--description 'gitlab runner for ${runner_name}' \
--docker-privileged \
--docker-image "Alpine" \
--docker-disable-cache=true \
--docker-volumes "/var/run/docker.sock:/var/run/docker.sock" \
--docker-volumes "/cache" \
--docker-volumes "/usr/bin/docker-credential-ecr-login:/usr/bin/docker-credential-ecr-login" \
--docker-volumes "/home/gitlab-runner/.docker:/root/.docker"

このスレッドの詳細情報: https://gitlab.com/gitlab-org/gitlab-runner/-/issues/1583#note_375018948

0
rahuljain1311