An action that build docker image and push to Google Cloud Registry.
This action can be used to perform on every git push
or every tag
creation.
The service account key of google cloud. The service accout json file must be encoded in base64. This field is required.
The registry where the image should be pushed. Default gcr.io
.
The project id. This field is required.
The image name. This field is required.
The tag for the image. To create multiple tag of the same image, provide comma (,
) separeted tag name (e.g. v2.1,v2,latest
).
Default: latest
.
To use the pushed Tag Name
as image tag, see the example.
The image building Dockerfile.
If context is changed, Dockerfile
from context folder will be used.
Default: ./Dockerfile
.
The docker build context. Default: .
If you use multi-stage build and want to stop builing at a certain image, you can use this field. Default value is empty.
Pass a list of env vars as build-args for docker-build, separated by commas. ie: HOST=db.default.svc.cluster.local:5432,USERNAME=db_user
If you want to skip the build step and just push the image, use this option. Default for this is false
.
The service key you provided must have the Storage Admin
permission to push the image to GCR.
It is possible to use a lower access level Storage Object Admin
, but it will work only for already created registry. You must also add the Storage Legacy Bucket Reader
permission to the artifacts.<project id>.appspot.com
bucket for the given service account.
To create service key/account visit here
Put desired yml section in the .github/workflows/build.yml
file
name: Push to GCR GitHub Action
on: [push]
jobs:
build-and-push-to-gcr:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: RafikFarhad/[email protected]
with:
gcloud_service_key: ${{ secrets.GCLOUD_SERVICE_KEY }}
registry: gcr.io
project_id: my-awesome-project
image_name: server-end
name: Push to GCR GitHub Action
on:
push:
tags:
- '*'
jobs:
build-and-push-to-gcr:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Get the version
id: get_tag_name
run: echo ::set-output name=GIT_TAG_NAME::${GITHUB_REF/refs\/tags\//}
- uses: RafikFarhad/[email protected]
with:
gcloud_service_key: ${{ secrets.GCLOUD_SERVICE_KEY }}
registry: gcr.io
project_id: my-awesome-project
image_name: server-end
image_tag: ${{ steps.get_tag_name.outputs.GIT_TAG_NAME}}
dockerfile: ./build/Dockerfile
name: Push image to GCR GitHub Action
on: [push]
jobs:
just-push-to-gcr:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: RafikFarhad/[email protected]
with:
gcloud_service_key: ${{ secrets.GCLOUD_SERVICE_KEY }}
registry: gcr.io
project_id: my-awesome-project
image_name: server-end
push_only: true