This repository is to demonstrate workflow:
- Build docker image in CI
- Push it to Gitlab Registry (so we can run tests on it etc)
- If everything is ok then push it to Google Cloud Registry (GCR) so we can use it in Google Cloud etc for Kubernetes
GOOGLE_CLOUD_ACCOUNT
- google cloud service account credentials (see below how to get it)GITLAB_IMAGE
- where we push go Gitlab RegistryGCR_IMAGE
- where we push to Google Cloud Registry
Images variables can be set in Gitlab's settings or in your .gitlab-ci.yml
file:
variables:
GITLAB_IMAGE: registry.gitlab.com/author-name/my-project
GCR_IMAGE: eu.gcr.io/my-project/image-name
I recommend setting GOOGLE_CLOUD_ACCOUNT
via protected variables Settings -> CI/CD -> Environment variables
- Go to your Google Cloud account
- Pick a project
- Create service account with Storage admin role (IAM & Admin -> Service accounts -> Create service account)
- Copy the json key and enter it to gitlab
- If you run into
Error: Cannot perform an interactive login from a non TTY device
, it is because you have mismatch of protected variable and branch (both must have the same state - either protected or unprotected). https://gitlab.com/gitlab-com/support-forum/issues/3524#note_150577883