Skip to content

Build docker images on github actions #666

Build docker images on github actions

Build docker images on github actions #666

Workflow file for this run

name: CI
on: [push, pull_request]
jobs:
test:
name: Test
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install OTP and Elixir
uses: erlef/setup-beam@v1
with:
otp-version: 27.2
elixir-version: 1.18.1
- name: Install dependencies
run: |
mix deps.get
mix deps.compile
- name: Check for compiler warnings
run: |
MIX_ENV=test mix compile --warnings-as-errors
- name: Check mix format
run: mix format --check-formatted
- name: Run tests
run: |
mix test
docker:
name: Docker
runs-on: ubuntu-24.04
permissions:
contents: 'read'
id-token: 'write'
env:
IMAGE_NAME: 'bob'
PROJECT_ID: 'hexpm-prod'
SERVICE_ACCOUNT: ${{ secrets.GCLOUD_SERVICE_ACCOUNT }}
WORKLOAD_IDENTITY_PROVIDER: ${{ secrets.GCLOUD_WORKFLOW_IDENTITY_POOL_PROVIDER }}
steps:
- uses: actions/checkout@v4
- name: Set short git commit SHA
id: vars
run: |
calculatedSha=$(git rev-parse --short ${{ github.sha }})
echo "COMMIT_SHORT_SHA=$calculatedSha" >> $GITHUB_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Google auth
id: auth
uses: 'google-github-actions/auth@v2'
if: ${{ github.event_name != 'pull_request' }}
with:
token_format: 'access_token'
project_id: ${{ env.PROJECT_ID }}
service_account: ${{ env.SERVICE_ACCOUNT }}
workload_identity_provider: ${{ env.WORKLOAD_IDENTITY_PROVIDER }}
- name: Docker Auth
id: docker-auth
uses: 'docker/login-action@v3'
if: ${{ github.event_name != 'pull_request' }}
with:
registry: gcr.io
username: 'oauth2accesstoken'
password: '${{ steps.auth.outputs.access_token }}'
- name: Build and push
uses: docker/build-push-action@v6
with:
tags: gcr.io/${{ env.PROJECT_ID }}/${{ env.IMAGE_NAME }}:${{ env.COMMIT_SHORT_SHA }}
push: ${{ github.event_name != 'pull_request' }}
cache-from: type=gha
cache-to: type=gha,mode=max