LoginSignup
0
0

More than 1 year has passed since last update.

GitLab CIでbuildしたコンテナをGitLab Container RegistryとGoogle Cloud Container Registryにpushする

Posted at

ただの作業記録です。他のContaner Registryでも大差ないと思います。GCP使うならCloud Buildのほうが良いかもです。

  • GitLab CIのShared Runnerはprivilegedで動作しているので、build可能
  • ここではdind serviceを採用したが、image: docker:latestでもbuildできるはず
  • dindの場合、DOCKER_TLS等に関わる環境変数が必要
  • Google Cloud Container Registryへのdocker loginはservice account keyを利用し、GitLabのSettings > CI/CD > VariablesにFileとして保存する。GCP上の権限は適宜付与する。Screenshot from 2021-06-11 16-40-21.png
  • GCLOUD_PROJECT_IDも環境変数として利用できるようにGitLabのSettings > CI/CD > Variablesに保存
gitlab-ci.yaml
build:
  stage: build
  when: manual
  image: alpinelinux/docker-cli
  services:
    - docker:20.10.7-dind
  variables:
    DOCKER_HOST: tcp://docker:2376
    DOCKER_TLS_CERTDIR: /certs
    DOCKER_TLS_VERIFY: 1
    DOCKER_CERT_PATH: ${DOCKER_TLS_CERTDIR}/client
  before_script:
    docker login -u _json_key --password-stdin https://us.gcr.io < ${GOOGLE_APPLICATION_CREDENTIALS}
    echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER $CI_REGISTRY --password-stdin
  script:
    - docker build --tag=${CI_REGISTRY_IMAGE}/image-name --tag=us.gcr.io/${FIREBASE_PROJECT_ID}/image-name .
    - docker push us.gcr.io/${GCLOUD_PROJECT_ID}/image-name
    - docker push ${CI_REGISTRY_IMAGE}/image-name
  after_script:
    - docker logout
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0