Skip to content

Docker Build

Docker Build #38

Workflow file for this run

name: Docker Build
on:
workflow_dispatch:
inputs: {}
concurrency:
group: ${{ github.ref }}
cancel-in-progress: false
jobs:
build:
name: Build Docker image
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Read Tools and App version
id: tool-versions
run: |
ERLANG_VERSION_FROM_FILE=$(awk 'NR==1{print $2}' .tool-versions)
ELIXIR_VERSION_FROM_FILE=$(awk 'NR==2' .tool-versions | awk 'NR==1{print $2}')
APP_VERSION_FROM_MIX=$(grep "version: " mix.exs | grep -o "[0-9.]*")
echo "Erlang version: ${ERLANG_VERSION_FROM_FILE}"
echo "Elixir version: ${ELIXIR_VERSION_FROM_FILE}"
echo "App version from mix: ${APP_VERSION_FROM_MIX}"
echo "erlang=$ERLANG_VERSION_FROM_FILE" >> "$GITHUB_OUTPUT"
echo "elixir=$ELIXIR_VERSION_FROM_FILE" >> "$GITHUB_OUTPUT"
echo "app=$APP_VERSION_FROM_MIX" >> "$GITHUB_OUTPUT"
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: DockerHub Login
uses: docker/login-action@v2
with:
username: brunojppb
password: ${{ secrets.DOCKER_TOKEN }}
- name: docker build
uses: docker/build-push-action@v3
with:
context: .
# I'm having troubles with arm64 and Elixir 1.15.
# need to investigate that further.
# platforms: "linux/amd64,linux/arm64"
platforms: "linux/amd64"
push: ${{ github.event_name != 'pull_request' }}
build-args: |
ELIXIR_VERSION=${{ steps.tool-versions.outputs.elixir }}
OTP_VERSION=${{ steps.tool-versions.outputs.erlang }}
tags: "brunojppb/turbo-racer:latest,brunojppb/turbo-racer:${{ steps.tool-versions.outputs.app }}"
cache-from: type=registry,ref=brunojppb/turbo-racer:latest
cache-to: type=inline
- name: login to Github Container registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: push to Github Container Registry
run: |
docker pull brunojppb/turbo-racer:${{ steps.tool-versions.outputs.app }}
docker pull brunojppb/turbo-racer:latest
docker tag brunojppb/turbo-racer:${{ steps.tool-versions.outputs.app }} ghcr.io/brunojppb/turbo-racer:${{ steps.tool-versions.outputs.app }}
docker tag brunojppb/turbo-racer:latest ghcr.io/brunojppb/turbo-racer:latest
docker push ghcr.io/brunojppb/turbo-racer:latest
docker push ghcr.io/brunojppb/turbo-racer:${{ steps.tool-versions.outputs.app }}