Skip to content

Commit

Permalink
Add GitHub Actions workflow to build and push Docker images
Browse files Browse the repository at this point in the history
This workflow triggers on commits to the master branch and tag pushes. It builds and pushes Docker images for both release and development versions, supporting multiple architectures.
  • Loading branch information
rolandgroen committed Nov 19, 2024
1 parent d9d53dc commit 3be435f
Showing 1 changed file with 94 additions and 0 deletions.
94 changes: 94 additions & 0 deletions .github/workflows/build-images.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
name: 'Build Docker images'

on:
push:
branches:
- master
tags:
- 'v*'
pull_request:
branches:
- master
- build-images # remove when merged

# cancel build action if superseded by new commit on same branch
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set version params
id: version
shell: bash
run: |
echo "git_commit=$(echo ${GITHUB_SHA})" >> $GITHUB_OUTPUT
echo "git_branch=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_OUTPUT
echo "git_version=$(git name-rev --tags --name-only $(git rev-parse HEAD))" >> $GITHUB_OUTPUT
- uses: actions-ecosystem/action-get-latest-tag@v1
id: get-latest-tag
with:
semver_only: true

- name: Print version params
run: |
echo "Commit: ${{ steps.version.outputs.git_commit }}"
echo "Branch: ${{ steps.version.outputs.git_branch }}"
echo "Version: ${{ steps.version.outputs.git_version }}"
echo "Latest tag: ${{ steps.get-latest-tag.outputs.tag }}"
echo "This tag: ${{ github.ref }}"
- name: Docker meta
id: docker_meta
uses: docker/metadata-action@v5
with:
images: nutsfoundation/nuts-node
tags: |
# generate 'master' tag for the master branch
type=ref,event=branch,enable={{is_default_branch}},prefix=
# generate 5.2.1 tag
type=semver,pattern={{version}}
flavor: |
latest=${{ steps.version.outputs.git_version == steps.get-latest-tag.outputs.tag }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to Docker Hub
if: ${{ github.event_name != 'pull_request' }}
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
file: Dockerfile
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.docker_meta.outputs.tags }}
build-args: |
GIT_VERSION=${{ steps.version.outputs.git_version }}
GIT_COMMIT=${{ steps.version.outputs.git_commit }}
GIT_BRANCH=${{ steps.version.outputs.git_branch }}
- name: Build and push development image
if: ${{ github.event_name != 'pull_request' && github.ref == 'refs/heads/master'}}
uses: docker/build-push-action@v6
with:
context: development/dev-image
push: true
platforms: linux/amd64,linux/arm64
tags: nutsfoundation/nuts-node:dev

0 comments on commit 3be435f

Please sign in to comment.