Merge pull request #962 from luechtdiode/dependabot/maven/org.codehau… #1792
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
# 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 }} |