Skip to content

Merge pull request #962 from luechtdiode/dependabot/maven/org.codehau… #1792

Merge pull request #962 from luechtdiode/dependabot/maven/org.codehau…

Merge pull request #962 from luechtdiode/dependabot/maven/org.codehau… #1792

# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
name: "Build-Pipeline"
on:
push:
branches-ignore:
- 'gh-pages'
paths:
- 'newclient/**'
- 'src/**'
- 'docker/**'
- '**.xml'
- '**.yml'
- '**.sh'
- '!data/**'
- '!db/**'
- '!docs/**'
- '!Diagrams/**'
- '!Screenshots/**'
tags:
- '*'
# pull_request:
# The branches below must be a subset of the branches above
# branches: [master]
# schedule:
# - cron: '0 9 * * 2'
jobs:
build-app:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
- name: Setup NPM
uses: actions/setup-node@v4
with:
node-version: 20
- name: Build Mobile-App
run: |
cd newclient/resultcatcher
npm install -g cordova @ionic/cli
npm i
ionic build --prod --engine=browser
cd ../..
rm -rf ./src/main/resources/app
mkdir ./src/main/resources/app
cp -R -f ./newclient/resultcatcher/www/* ./src/main/resources/app
- name: Autocommit Client
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: update with generated Client from Github Actions CI for build ${{env.GITHUB_RUN_NUMBER}} with [skip ci]
- name: Archive client-modifications
uses: actions/upload-artifact@v4
with:
name: src
path: |
src/main/resources/app
build-lnx-distribution:
needs: build-app
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
- run: git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
- name: Cache Maven packages
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Java Setup
run: |
. ./prepare_jdk.sh
env:
OS: Linux
- name: Download client modifications
uses: actions/download-artifact@v4
with:
name: src
path: src/main/resources/app
- name: Maven Build
run: |
java -version
mvn -version
mvn clean install package
env:
OS: Linux
- name: Prepare Releasenames
run: |
. ./normalize-releasenames.sh
- name: Archive linux application jar
uses: actions/upload-artifact@v4
with:
name: app
path: |
target/*.jar
target/dependency
- name: Archive production artifacts
uses: actions/upload-artifact@v4
with:
name: linux-app
path: |
target/Linux/*.deb
target/Linux/*.rpm
build-win64-distribution:
needs: build-app
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
- run: git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
- name: Cache Maven packages
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Download client modifications
uses: actions/download-artifact@v4
with:
name: src
path: src/main/resources/app
- name: Java Setup & Package-Build
run: |
. ./prepare_jdk.sh
mvn clean install package
env:
OS: Win64
shell: bash
- name: Prepare Releasenames
run: |
. ./normalize-releasenames.sh
shell: bash
- name: Archive production artifacts
uses: actions/upload-artifact@v4
with:
name: win64-app
path: |
target/Win64/*.msi
target/Win64/*.exe
build-osx-intel-distribution:
needs: build-app
runs-on: macos-13
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
- run: git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
- name: Cache Maven packages
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Java Setup
id: jdk
run: |
. ./prepare_jdk.sh
rm -rf src/main/resources/app
env:
OS: macOS
- name: Download client modifications
uses: actions/download-artifact@v4
with:
name: src
path: src/main/resources/app
- name: Maven Build
run: |
java -version
mvn -version
mvn clean install package
env:
OS: macOS
- name: Prepare Releasenames
run: |
. ./normalize-releasenames.sh
- name: Archive production artifacts
uses: actions/upload-artifact@v4
with:
name: osx-intel-app
path: |
target/macOS-x86_64/*.pkg
target/macOS-x86_64/*.dmg
build-osx-arm-distribution:
needs: build-app
runs-on: macos-14
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
- run: git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
- name: Cache Maven packages
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Java Setup
id: jdk
run: |
. ./prepare_jdk.sh
rm -rf src/main/resources/app
env:
OS: macOS
- name: Download client modifications
uses: actions/download-artifact@v4
with:
name: src
path: src/main/resources/app
- name: Maven Build
run: |
java -version
mvn -version
mvn clean install package
env:
OS: macOS
- name: Prepare Releasenames
run: |
. ./normalize-releasenames.sh
- name: Archive production artifacts
uses: actions/upload-artifact@v4
with:
name: osx-arm-app
path: |
target/macOS-aarch64/*.pkg
target/macOS-aarch64/*.dmg
build-docker-distribution:
needs: build-lnx-distribution
runs-on: ubuntu-latest
environment: Dockerhub
steps:
- name: Build Tags
id: build_tags
run: |
COMMIT=${GITHUB_SHA::7}
COMMIT_TAG=$(if [[ $GITHUB_REF == refs/tags/* ]]; then echo ${GITHUB_REF#refs/tags} | awk -F'/' '{ if($NF != "") print $NF }'; else echo ""; fi)
COMMIT_BRANCH=$(if [[ $GITHUB_REF == refs/heads/* ]]; then echo ${GITHUB_REF#refs/heads} | awk -F'/' '{ if($NF != "") print $NF }'; else echo "br"; fi)
TAG=`if [ ! -z "$COMMIT_TAG" ]; then echo "$COMMIT_TAG"; else echo "$COMMIT_BRANCH-$COMMIT"; fi`
echo GITHUB_REF=$GITHUB_REF
echo GITHUB_SHA=$GITHUB_SHA
echo COMMIT=$COMMIT
echo COMMIT_TAG=$COMMIT_TAG
echo COMMIT_BRANCH=$COMMIT_BRANCH
echo TAG=$TAG
echo "COMMIT=$COMMIT" >> $GITHUB_OUTPUT
echo "COMMIT_TAG=$COMMIT_TAG" >> $GITHUB_OUTPUT
echo "COMMIT_BRANCH=$COMMIT_BRANCH" >> $GITHUB_OUTPUT
echo "TAG=$TAG" >> $GITHUB_OUTPUT
echo "SHA_TAG=$GITHUB_SHA" >> $GITHUB_OUTPUT
echo "DOCKER_TAG=$TAG" >> $GITHUB_OUTPUT
echo "SOURCE_TAG=$COMMIT_TAG" >> $GITHUB_OUTPUT
echo "SOURCE_BRANCH=$COMMIT_BRANCH" >> $GITHUB_OUTPUT
- name: Checkout repository
uses: actions/checkout@v4
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
- run: git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
- name: Download prepared linux application jar
uses: actions/download-artifact@v4
with:
name: app
path: target
- name: Prepare Docker-Build
run: |
mkdir -p docker/libs
cp target/dependency/*.jar docker/libs/
cp target/*.jar docker/
rm docker/libs/javafx*.jar
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_ACCESSTOKEN }}
- name: Build, Tag & Push Dockerfile
run: |
docker build ./docker -t ${{secrets.IMAGE_NAME}}:latest
docker tag ${{secrets.IMAGE_NAME}}:latest ${{secrets.IMAGE_NAME}}:$TAG
docker push ${{secrets.IMAGE_NAME}}:latest
docker push ${{secrets.IMAGE_NAME}}:$TAG
echo "$TAG is built properly and pushed to Dockerhub"
env:
TAG: ${{ steps.build_tags.outputs.DOCKER_TAG }}
upload-release-assets:
name: Upload Release-Assets and Cleanup Workflow-Files
needs: [build-lnx-distribution, build-win64-distribution, build-osx-intel-distribution,build-osx-arm-distribution, build-docker-distribution]
runs-on: ubuntu-latest
steps:
- uses: geekyeggo/delete-artifact@v5
with:
useGlob: false
name: |
app
src
- name: Download a single artifact
uses: actions/download-artifact@v4
with:
path: dist
- name: Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
dist/win64-app/*
dist/osx-intel-app/*
dist/osx-arm-app/*
dist/linux-app/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}