Skip to content

ci: move jenkins operations to GH #9

ci: move jenkins operations to GH

ci: move jenkins operations to GH #9

Workflow file for this run

name: Jans Full Build
on:
push:
branches:
- main
schedule:
- cron: '0 8 * * *'
pull_request:
branches:
- main
workflow_dispatch:
inputs:
project:
type: choice
options:
- "jans-bom"
- "jans-orm"
- "jans-core"
- "jans-lock/lock-server"
- "agama"
- "jans-auth-server"
- "jans-link"
- "jans-fido2"
- "jans-scim"
- "jans-keycloak-link"
- "jans-config-api"
- "jans-keycloak-integration"
- "jans-casa"
- "jans-bom jans-orm jans-core jans-lock/lock-server agama jans-auth-server jans-link jans-fido2 jans-scim jans-keycloak-link jans-config-api jans-keycloak-integration jans-casa"
description: 'Service'
required: true
default: "jans-bom jans-orm jans-core jans-lock/lock-server agama jans-auth-server jans-link jans-fido2 jans-scim jans-keycloak-link jans-config-api jans-keycloak-integration jans-casa"
jobs:
prep-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- id: set-matrix
run: |
projects="${{ github.event.inputs.project }}"
if [ -z "$projects" ]; then
projects="jans-bom jans-orm jans-core jans-lock/lock-server agama jans-auth-server jans-link jans-fido2 jans-scim jans-keycloak-link jans-config-api jans-keycloak-integration jans-casa"
fi
matrix="{\"include\":["
for project in $projects; do
matrix="$matrix{\"service\":\"$project\",\"maven_skip_tests\":true},"
done
matrix="${matrix%,}]}"
echo $matrix
echo "matrix=$matrix" >> $GITHUB_OUTPUT
full-build-with-disabled-tests:
runs-on: ubuntu-20.04
needs: prep-matrix
permissions:
contents: read
packages: write
env:
VERSION_NAME: main
MAVEN_SKIP_TESTS: true
PROFILE_NAME: "default"
strategy:
max-parallel: 1
matrix: ${{ fromJson(needs.prep-matrix.outputs.matrix) }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.branch }}
- name: Set up Java 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
- name: Set up Maven
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
cache: 'maven'
- name: Build ${{ matrix.service }}
run: |
if [ "${{ github.event_name }}" == "pull_request" ]; then
mvn -f ${{ matrix.service }}/pom.xml -Dcfg=${{ env.PROFILE_NAME }} -Dmaven.test.skip=${{ matrix.maven_skip_tests }} clean install -Drevision=${{ github.head_ref }}-SNAPSHOT
else
mvn -f ${{ matrix.service }}/pom.xml -Dcfg=${{ env.PROFILE_NAME }} -Dmaven.test.skip=${{ matrix.maven_skip_tests }} clean install
fi
- name: Publish to GitHub Packages
run: mvn -B deploy -Dmaven.test.skip=${{ matrix.maven_skip_tests }} -Dcfg=${{ env.PROFILE_NAME }}
working-directory: ${{ matrix.service }}
env:
GITHUB_TOKEN: ${{ secrets.MOAUTO_WORKFLOW_TOKEN }}
- name: Archive results
if: always()
uses: actions/upload-artifact@v4
with:
name: build-results
path: ${{ matrix.service }}/target
- name: Send notification on failure
if: failure()
run: echo "Build failed"
cleanup:
if: github.event_name == 'push' && github.event.ref == 'refs/heads/main'
runs-on: ubuntu-20.04
steps:
- name: Clean up PR assets
run: |
# List all SNAPSHOT versions
versions=$(curl -s -H "Authorization: token ${{ secrets.MOAUTO_WORKFLOW_TOKEN }}" "https://maven.pkg.github.com/JanssenProject/jans/maven-metadata.xml" | grep -oP '(?<=<version>)[^<]+')
for version in $versions; do
if [[ $version == *-SNAPSHOT ]]; then
# Delete the version from GitHub Packages
curl -X DELETE -H "Authorization: token ${{ secrets.MOAUTO_WORKFLOW_TOKEN }}" "https://maven.pkg.github.com/JanssenProject/jans/io/jans/${{ matrix.service.project }}/$version"
fi
done
run-tests:
if: github.event_name == 'push' || github.event_name == 'pull_request' || (github.event_name == 'workflow_dispatch' && github.event.inputs.project == 'jans-bom, jans-orm, jans-core, jans-lock/lock-server, agama, jans-auth-server, jans-link, jans-fido2, jans-scim, jans-keycloak-link, jans-config-api, jans-keycloak-integration, jans-casa')
permissions: write-all
runs-on: ubuntu-20.04
env:
MAVEN_SKIP_TESTS: false
CONTAINER_NAME_SPANNER: ubuntu20-spanner
CONTAINER_NAME_CB: ubuntu20-couchbase
CONTAINER_NAME_LDAP: ubuntu20-ldap
CONTAINER_NAME_MYSQL: ubuntu20-mysql
CONTAINER_NAME_POSTGRESQL: ubuntu20-postgresql
DEVELOPMENT_BUILD: true
SKIP_FINDBUGS: true
DEPENDENCY_CHECK: true
VERSION_NAME: main
PROFILE_NAME: default
strategy:
max-parallel: 5
matrix:
persistence:
- "MYSQL"
- "PGSQL"
fail-fast: false
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.branch }}
- name: Set up Java 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
- name: Set up Maven
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
cache: 'maven'
- name: Run Jans Monolith
env:
JANS_FQDN: demoexample.jans.io
EXT_IP: $(ifconfig eth0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1')
JANS_BUILD_COMMIT: main
run: |
export ip=$(ifconfig eth0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1')
sudo chmod a+x automation/startjanssenmonolithdemo.sh
sudo RUN_TESTS=true bash ./automation/startjanssenmonolithdemo.sh "demoexample.jans.io" "${{ matrix.persistence }}" "$ip" "${{ github.sha }}"
- name: List Reports
run: |
ls /tmp/reports/
- name: Upload Test Results
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.persistence }}-test-results
path: /tmp/reports
- name: Publish Test Report ${{ matrix.persistence }}
uses: starburstdata/action-testng-report@v1
with:
report_paths: /tmp/reports/${{ matrix.persistence }}*.xml
github_token: ${{ github.token }}
fail_if_empty: false
# - name: Publish Test Report Surefire
# uses: scacap/action-surefire-report@v1
# if: success() || failure()
# with:
# github_token: ${{ github.token }}
# report_paths: /tmp/reports/**.xml