Skip to content

Sync Develop with Master #86

Sync Develop with Master

Sync Develop with Master #86

Workflow file for this run

name: Docker build
# This workflow is triggered by pull request actions such as opened, synchronized, or reopened
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
# Defines a job to build (and optionally push) Docker images which we dont push the images in this workflow to avoid multiple builds on Docker hub
build:
# Specifies that the job runs on the latest version of Ubuntu
runs-on: ubuntu-latest
# Uses a matrix strategy for running builds across multiple components in parallel
strategy:
matrix:
component: ['api', 'keycloak'] # Components to be built
# Environment variables to be used across all steps
env:
# Cleans the branch name to be used as Docker tag, using the commit SHA if the branch name is not available
CLEAN_BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
DOCKER_TAG: ${{ (github.head_ref || github.ref_name) == '' && github.sha || (github.head_ref || github.ref_name) }}
steps:
# Step 1: Checks out the repository code including submodules
- name: Checkout
uses: actions/checkout@v4
with:
submodules: 'recursive' # Ensures all git submodules are checked out
# Step 2: Sets up Docker Buildx for advanced Docker builds
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# Step 3: Logs in to DockerHub to allow pushing images (if needed)
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }} # DockerHub username from secrets
password: ${{ secrets.DOCKERHUB_TOKEN }} # DockerHub token from secrets
# Step 4: Sanitizes the branch or commit SHA to be a valid Docker tag
- name: Sanitize Reference Name for Docker Tag
run: echo "DOCKER_TAG=$(echo $DOCKER_TAG | sed 's|/|-|g' | sed 's|[^a-zA-Z0-9_.-]|-|g')" >> $GITHUB_ENV
# Step 5: Builds the Docker image but does not push it to DockerHub
- name: Build
uses: docker/build-push-action@v5
with:
context: ./${{ matrix.component }} # Specifies the directory as the Docker context
file: ./${{ matrix.component }}/Dockerfile # Path to the Dockerfile
push: false # Does not push the built image to DockerHub
tags: usdotjpoode/jpo-conflictvisualizer-${{ matrix.component }}:${{ env.DOCKER_TAG }} # Tags the built image