feat: skillLab integration #44
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: aam-backend-service-build-and-publish | |
on: | |
pull_request: | |
paths: | |
- '.github/workflows/aam-backend-service-build-and-publish.yml' | |
- 'application/aam-backend-service/**' | |
push: | |
tags: | |
- "*" | |
paths: | |
- '.github/workflows/aam-backend-service-build-and-publish.yml' | |
- 'application/aam-backend-service/**' | |
env: | |
REGISTRY_IMAGE: ghcr.io/aam-digital/aam-backend-service | |
jobs: | |
test: | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- linux/amd64 | |
# - linux/arm64 # disabled until carbone/carbone-ee is available as arm64 docker image | |
os: | |
- ubuntu-latest | |
- [ self-hosted, Linux, ARM64 ] | |
exclude: | |
- platform: linux/arm64 | |
os: ubuntu-latest | |
- platform: linux/amd64 | |
os: [ self-hosted, Linux, ARM64 ] | |
runs-on: ${{ matrix.os }} | |
permissions: | |
packages: read | |
pull-requests: write | |
defaults: | |
run: | |
working-directory: application/aam-backend-service | |
steps: | |
- name: Checkout repository files | |
uses: actions/checkout@v4 | |
- name: Set up Java | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'corretto' | |
java-version: 21 | |
cache: 'gradle' | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GHCR_PULL_SECRET }} | |
- name: Run Tests and generate Jacoco Test Report | |
env: | |
JACOCO_SOURCE_PATH: application/aam-backend-service/src/main/kotlin | |
run: | | |
./gradlew jacocoTestReport --no-daemon | |
- name: Publish code coverage to code climate | |
uses: paambaati/[email protected] | |
env: | |
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} | |
JACOCO_SOURCE_PATH: application/aam-backend-service/src/main/kotlin | |
with: | |
coverageLocations: application/aam-backend-service/build/reports/jacoco/test/jacocoTestReport.xml:jacoco | |
- name: Add code coverage to PR | |
uses: madrapps/[email protected] | |
if: ${{ github.event.ref == '' }} | |
with: | |
paths: application/aam-backend-service/build/reports/jacoco/test/jacocoTestReport.xml | |
token: ${{ secrets.GITHUB_TOKEN }} | |
min-coverage-overall: 80 | |
min-coverage-changed-files: 80 | |
title: Code Coverage Analyse | |
update-comment: true | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- linux/amd64 | |
- linux/arm64 | |
os: | |
- ubuntu-latest | |
- [ self-hosted, Linux, ARM64 ] | |
exclude: | |
- platform: linux/arm64 | |
os: ubuntu-latest | |
- platform: linux/amd64 | |
os: [ self-hosted, Linux, ARM64 ] | |
runs-on: ${{ matrix.os }} | |
permissions: | |
contents: read | |
packages: write | |
steps: | |
- name: Checkout repository files | |
uses: actions/checkout@v4 | |
- name: Extract tag (release) | |
if: ${{ github.event.ref != '' }} | |
run: echo "TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV | |
- name: Extract tag (pull request) | |
if: ${{ github.event.ref == '' }} | |
run: echo "TAG=pr-${{ github.event.number }}" >> $GITHUB_ENV | |
- name: Prepare Platform | |
run: | | |
platform=${{ matrix.platform }} | |
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.REGISTRY_IMAGE }} | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Create export directories | |
run: | | |
mkdir -p ./tmp/build/${{ env.PLATFORM_PAIR }} | |
mkdir -p ./tmp/digests | |
- name: Build Image and push by digest | |
id: build | |
uses: docker/build-push-action@v6 | |
with: | |
platforms: ${{ matrix.platform }} | |
context: ./application/aam-backend-service | |
labels: ${{ steps.meta.outputs.labels }} | |
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true | |
cache-from: type=gha | |
cache-to: type=gha,mode=min | |
env: | |
SOURCE_DATE_EPOCH: 0 | |
- name: Export digest | |
run: | | |
digest="${{ steps.build.outputs.digest }}" | |
touch "./tmp/digests/${digest#sha256:}" | |
- name: Upload digest | |
uses: actions/upload-artifact@v4 | |
with: | |
name: digests-${{ env.PLATFORM_PAIR }} | |
path: ./tmp/digests/* | |
if-no-files-found: error | |
retention-days: 1 | |
merge: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: write | |
needs: | |
- build | |
steps: | |
- name: Download digests | |
uses: actions/download-artifact@v4 | |
with: | |
path: ./tmp/digests | |
pattern: digests-* | |
merge-multiple: true | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.REGISTRY_IMAGE }} | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Create manifest list and push | |
working-directory: ./tmp/digests | |
run: | | |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ | |
$(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *) | |
publish: | |
name: Publish aam-backend-service Release | |
runs-on: ubuntu-latest | |
if: ${{ github.event.ref != '' }} # release | |
needs: | |
- test | |
permissions: | |
contents: write # to be able to publish a GitHub release | |
issues: write # to be able to comment on released issues | |
pull-requests: write # to be able to comment on released pull requests | |
defaults: | |
run: | |
working-directory: application/aam-backend-service | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
fetch-tags: true | |
- name: Install Rust toolchain | |
run: rustup update --no-self-update | |
- name: Install conventional_commits_next_version | |
run: cargo install conventional_commits_next_version --version ^6 | |
- name: Set current tag and version | |
run: | | |
CURRENT_TAG=$(git describe --abbrev=0 --tags --match 'aam-backend-service/v*') | |
CURRENT_VERSION=$(echo $CURRENT_TAG | cut -d'/' -f2) | |
echo "CURRENT_TAG=$CURRENT_TAG" >> $GITHUB_ENV | |
echo "CURRENT_VERSION=$CURRENT_VERSION" >> $GITHUB_ENV | |
- name: Set from commit hash | |
run: | | |
FROM_COMMIT_HASH=$(git rev-list -n 1 ${{ env.CURRENT_TAG }}) | |
echo "FROM_COMMIT_HASH=$FROM_COMMIT_HASH" >> $GITHUB_ENV | |
- name: Calculate next version | |
run: | | |
NEXT_VERSION=v$(conventional_commits_next_version \ | |
--calculation-mode "Batch" \ | |
--from-commit-hash ${{ env.FROM_COMMIT_HASH }} \ | |
--from-version ${{ env.CURRENT_VERSION }} \ | |
--monorepo application/aam-backend-service) | |
echo "NEXT_VERSION=$NEXT_VERSION" >> $GITHUB_ENV | |
- name: Create Release | |
if: env.CURRENT_VERSION != env.NEXT_VERSION | |
env: | |
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} | |
run: | | |
TAG_NAME=aam-backend-service/${{ env.NEXT_VERSION }} | |
gh api \ | |
--method POST \ | |
-H "Accept: application/vnd.github+json" \ | |
-H "X-GitHub-Api-Version: 2022-11-28" \ | |
/repos/Aam-Digital/aam-services/releases \ | |
-f "tag_name=$TAG_NAME" \ | |
-f "target_commitish=main" \ | |
-f "name=$TAG_NAME" \ | |
-F "draft=false" \ | |
-F "prerelease=false" \ | |
-F "generate_release_notes=true" |