Skip to content

Merge pull request #105 from ssi-dk/feat/clone-workspaces #75

Merge pull request #105 from ssi-dk/feat/clone-workspaces

Merge pull request #105 from ssi-dk/feat/clone-workspaces #75

name: Build Docker Images
on:
push:
branches:
- "master"
jobs:
# This job finds the lastest tag and bumps it based on the conventional commit.
prepare_tag:
outputs:
tag: ${{ steps.semver.outputs.next }}
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# Defaults to patch version, will bump minor on "feat" commit
- name: Get Next Version
id: semver
uses: ietf-tools/semver-action@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: master
patchAll: true
- name: Push tag
id: tag_version
uses: mathieudutour/[email protected]
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
custom_tag: ${{ steps.semver.outputs.next }}
tag_prefix: ""
# Build the Docker images and push to the GitHub container registry
build_and_push:
needs: prepare_tag
permissions:
contents: write
packages: write
runs-on: ubuntu-latest
strategy:
matrix:
include:
- image: ghcr.io/ssi-dk/sap-web
dockerfile: app/Dockerfile
path: app
- image: ghcr.io/ssi-dk/microreact
dockerfile: microreact/Dockerfile
path: microreact
- image: ghcr.io/ssi-dk/sap-api
dockerfile: web/Dockerfile
path: web
- image: ghcr.io/ssi-dk/bifrost-queue-broker
dockerfile: bifrost/bifrost_queue_broker/Dockerfile
path: bifrost/bifrost_queue_broker
- image: ghcr.io/ssi-dk/bifrost-listener
dockerfile: bifrost/bifrost_listener/Dockerfile
path: bifrost/bifrost_listener
- image: ghcr.io/ssi-dk/bifrost-listener
dockerfile: bifrost/bifrost_listener/Dockerfile
path: bifrost/bifrost_listener
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# loops over all images in the matrix defined on top
- name: Build and push
uses: docker/build-push-action@v5
with:
context: ${{ matrix.path }}
platforms: linux/amd64
tags: ${{ matrix.image }}:${{ needs.prepare_tag.outputs.tag }}
file: ${{ matrix.dockerfile }}
push: true
# Uses the tag from the first job, and updates the GitOps repo with the new tag.
commit_to_dev:
needs:
- prepare_tag
- build_and_push
environment: dev
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
repository: ssi-dk/sofi_core_gitops
ref: main
path: sofi_core_gitops
token: "${{ secrets.ACTION_PAT }}"
- name: Update Image Tags
uses: mikefarah/yq@master
with:
cmd: |
# sap-web
yq e '.images[] |= select(.name == "ghcr.io/ssi-dk/sap-web").newTag = "${{ needs.prepare_tag.outputs.tag }}"' -i ./sofi_core_gitops/apps/dev/sap-web/kustomization.yaml
# sap-api
yq e '.images[] |= select(.name == "ghcr.io/ssi-dk/sap-api").newTag = "${{ needs.prepare_tag.outputs.tag }}"' -i ./sofi_core_gitops/apps/dev/sap-api/kustomization.yaml
# bifrost-queue-broker
yq e '.images[] |= select(.name == "ghcr.io/ssi-dk/bifrost-queue-broker").newTag = "${{ needs.prepare_tag.outputs.tag }}"' -i ./sofi_core_gitops/apps/dev/bifrost-queue-broker/kustomization.yaml
# bifrost-listener
yq e '.images[] |= select(.name == "ghcr.io/ssi-dk/bifrost-listener").newTag = "${{ needs.prepare_tag.outputs.tag }}"' -i ./sofi_core_gitops/apps/dev/bifrost-listener/kustomization.yaml
- uses: EndBug/add-and-commit@v9
with:
author_name: GitOps Bot
author_email: [email protected]
cwd: sofi_core_gitops
message: Update deployments with tag "${{ needs.prepare_tag.outputs.tag }}"
commit_to_test:
needs:
- prepare_tag
- build_and_push
environment: test
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
repository: ssi-dk/sofi_core_gitops
ref: main
path: sofi_core_gitops
token: "${{ secrets.ACTION_PAT }}"
- name: Update Image Tags
uses: mikefarah/yq@master
with:
cmd: |
# sap-web
yq e '.images[] |= select(.name == "ghcr.io/ssi-dk/sap-web").newTag = "${{ needs.prepare_tag.outputs.tag }}"' -i ./sofi_core_gitops/apps/test/sap-web/kustomization.yaml
# sap-api
yq e '.images[] |= select(.name == "ghcr.io/ssi-dk/sap-api").newTag = "${{ needs.prepare_tag.outputs.tag }}"' -i ./sofi_core_gitops/apps/test/sap-api/kustomization.yaml
# bifrost-queue-broker
yq e '.images[] |= select(.name == "ghcr.io/ssi-dk/bifrost-queue-broker").newTag = "${{ needs.prepare_tag.outputs.tag }}"' -i ./sofi_core_gitops/apps/test/bifrost-queue-broker/kustomization.yaml
# bifrost-listener
yq e '.images[] |= select(.name == "ghcr.io/ssi-dk/bifrost-listener").newTag = "${{ needs.prepare_tag.outputs.tag }}"' -i ./sofi_core_gitops/apps/test/bifrost-listener/kustomization.yaml
- uses: EndBug/add-and-commit@v9
with:
author_name: GitOps Bot
author_email: [email protected]
cwd: sofi_core_gitops
message: Update deployments with tag "${{ needs.prepare_tag.outputs.tag }}"