512 lines
20 KiB
YAML
512 lines
20 KiB
YAML
name: CI
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches-ignore:
|
|
- dependabot/**
|
|
tags:
|
|
- v[0-9]+\.[0-9]+\.[0-9]+
|
|
pull_request:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.repository }}/${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
JAVA_VERSION: 17
|
|
NODE_VERSION: 16.14.2
|
|
|
|
ARTIFACTS_CYPRESS_TESTS_NAME: cypress-tests
|
|
ARTIFACTS_CYPRESS_TESTS_PATH: web/cypress
|
|
ARTIFACTS_TASKANA_JARS_NAME: taskana-jars
|
|
ARTIFACTS_TASKANA_JARS_PATH: ~/.m2/repository/pro/taskana
|
|
ARTIFACTS_TASKANA_WEB_NAME: taskana-web
|
|
ARTIFACTS_TASKANA_WEB_PATH: web/dist
|
|
ARTIFACTS_JACOCO_REPORTS_NAME: jacoco-reports
|
|
ARTIFACTS_JACOCO_REPORTS_PATH: "**/jacoco.exec"
|
|
|
|
CACHE_WEB_NAME: web
|
|
# IMPORTANT: this cannot start with CACHE_MAVEN_NAME's value
|
|
# because the 'compile_backend' job would otherwise use this as a fallback cache.
|
|
CACHE_MAVEN_FOR_WEB_NAME: mvn-for-web
|
|
CACHE_MAVEN_NAME: maven
|
|
CACHE_SONAR_NAME: sonar
|
|
|
|
jobs:
|
|
compile_backend:
|
|
name: Compile all maven modules
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- name: Git checkout
|
|
uses: actions/checkout@v4
|
|
- name: Set up JDK ${{ env.JAVA_VERSION }}
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: adopt
|
|
java-version: ${{ env.JAVA_VERSION }}
|
|
- name: Cache maven dependencies
|
|
id: cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.m2
|
|
key: ${{ runner.os }}-${{ env.CACHE_MAVEN_NAME }}-${{ hashFiles('**/pom.xml') }}
|
|
restore-keys: ${{ runner.os }}-${{ env.CACHE_MAVEN_NAME }}
|
|
- name: Change versions to match tag
|
|
run: ci/change_version.sh -m .
|
|
- name: Compile & build
|
|
run: ./mvnw -B install -DskipTests -Djacoco.skip
|
|
- name: Populate cache
|
|
if: steps.cache.outputs.cache-hit != 'true'
|
|
run: |
|
|
./mvnw -B dependency:go-offline
|
|
./mvnw -B test -Dtest=GibtEsNet -Dsurefire.failIfNoSpecifiedTests=false
|
|
- name: Upload taskana artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ env.ARTIFACTS_TASKANA_JARS_NAME }}
|
|
path: ${{ env.ARTIFACTS_TASKANA_JARS_PATH }}
|
|
if-no-files-found: error
|
|
- name: Remove taskana artifacts from cache
|
|
run: rm -rf ${{ env.ARTIFACTS_TASKANA_JARS_PATH }}
|
|
- name: Cancel workflow
|
|
if: failure()
|
|
uses: andymckay/cancel-action@0.5
|
|
|
|
compile_frontend:
|
|
name: Compile taskana-web
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- name: Git checkout
|
|
uses: actions/checkout@v4
|
|
- name: Set up JDK ${{ env.JAVA_VERSION }}
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: adopt
|
|
java-version: ${{ env.JAVA_VERSION }}
|
|
- name: Use Node.js ${{ env.NODE_VERSION }}
|
|
uses: actions/setup-node@v4.0.3
|
|
with:
|
|
node-version: ${{ env.NODE_VERSION }}
|
|
- name: Cache web dependencies
|
|
id: web-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: web/node_modules
|
|
key: ${{ runner.OS }}-${{ env.CACHE_WEB_NAME }}-${{ hashFiles('**/yarn.lock') }}
|
|
- name: Cache maven dependencies (for web)
|
|
id: maven-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.m2
|
|
key: ${{ runner.OS }}-${{ env.CACHE_MAVEN_FOR_WEB_NAME }}-${{ hashFiles('**/pom.xml') }}
|
|
restore-keys: ${{ runner.OS }}-${{ env.CACHE_MAVEN_FOR_WEB_NAME }}
|
|
- name: Populate maven cache
|
|
run: ./mvnw -B dependency:go-offline -pl :taskana-web -am
|
|
if: steps.maven-cache.outputs.cache-hit != 'true'
|
|
- name: Install Dependencies
|
|
if: steps.web-cache.outputs.cache-hit != 'true'
|
|
working-directory: web
|
|
run: yarn ci
|
|
- name: Compile & build
|
|
working-directory: web
|
|
run: |
|
|
yarn lint
|
|
yarn build:prod
|
|
- name: Build maven artifact
|
|
run: ./mvnw -B install -pl :taskana-web -am
|
|
- name: Upload taskana-web dist artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ env.ARTIFACTS_TASKANA_WEB_NAME }}
|
|
path: ${{ env.ARTIFACTS_TASKANA_WEB_PATH }}
|
|
if-no-files-found: error
|
|
- name: Remove taskana artifacts from cache
|
|
run: rm -rf ~/.m2/repository/pro/taskana
|
|
- name: Cancel workflow
|
|
if: failure()
|
|
uses: andymckay/cancel-action@0.5
|
|
|
|
test_frontend:
|
|
runs-on: ubuntu-20.04
|
|
name: Test taskana-web
|
|
needs: [ compile_frontend ]
|
|
steps:
|
|
- name: Git checkout
|
|
uses: actions/checkout@v4
|
|
- name: Use Node.js ${{ env.NODE_VERSION }}
|
|
uses: actions/setup-node@v4.0.3
|
|
with:
|
|
node-version: ${{ env.NODE_VERSION }}
|
|
- name: Cache web dependencies
|
|
id: web-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: web/node_modules
|
|
key: ${{ runner.OS }}-${{ env.CACHE_WEB_NAME }}-${{ hashFiles('**/yarn.lock') }}
|
|
# Theoretically this step below not necessary because we reuse the cache from the 'compile_frontend' job.
|
|
# Sometimes the cache is not created, therefore this is a fallback.
|
|
- name: Install Dependencies
|
|
if: steps.web-cache.outputs.cache-hit != 'true'
|
|
working-directory: web
|
|
run: yarn ci
|
|
- name: Cache maven dependencies (for web)
|
|
id: maven-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.m2
|
|
key: ${{ runner.OS }}-${{ env.CACHE_MAVEN_FOR_WEB_NAME }}-${{ hashFiles('**/pom.xml') }}
|
|
restore-keys: ${{ runner.OS }}-${{ env.CACHE_MAVEN_FOR_WEB_NAME }}
|
|
# Theoretically this step below not necessary because we reuse the cache from the 'compile_frontend' job.
|
|
# Sometimes the cache is not created, therefore this is a fallback.
|
|
- name: Populate cache
|
|
run: ./mvnw -B dependency:go-offline -pl :taskana-web -am
|
|
if: steps.maven-cache.outputs.cache-hit != 'true'
|
|
- name: Test
|
|
working-directory: web
|
|
run: yarn run test -- --coverageReporters text-summary
|
|
- name: Cancel workflow
|
|
if: failure()
|
|
uses: andymckay/cancel-action@0.5
|
|
|
|
test_e2e:
|
|
runs-on: ubuntu-20.04
|
|
name: Test E2E
|
|
needs: [ compile_frontend, compile_backend ]
|
|
steps:
|
|
- name: Git checkout
|
|
uses: actions/checkout@v4
|
|
- name: Set up JDK ${{ env.JAVA_VERSION }}
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: adopt
|
|
java-version: ${{ env.JAVA_VERSION }}
|
|
- name: Use Node.js ${{ env.NODE_VERSION }}
|
|
uses: actions/setup-node@v4.0.3
|
|
with:
|
|
node-version: ${{ env.NODE_VERSION }}
|
|
- name: Cache web dependencies
|
|
id: web-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: web/node_modules
|
|
key: ${{ runner.OS }}-${{ env.CACHE_WEB_NAME }}-${{ hashFiles('**/yarn.lock') }}
|
|
# Theoretically this step below not necessary because we reuse the cache from the 'compile_frontend' job.
|
|
# Sometimes the cache is not created, therefore this is a fallback.
|
|
- name: Install Dependencies
|
|
if: steps.web-cache.outputs.cache-hit != 'true'
|
|
working-directory: web
|
|
run: yarn ci
|
|
- name: Cache maven dependencies
|
|
id: maven-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.m2
|
|
key: ${{ runner.os }}-${{ env.CACHE_MAVEN_NAME }}-${{ hashFiles('**/pom.xml') }}
|
|
- name: Download taskana artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: ${{ env.ARTIFACTS_TASKANA_JARS_NAME }}
|
|
path: ${{ env.ARTIFACTS_TASKANA_JARS_PATH }}
|
|
- name: Change versions to match tag
|
|
run: ci/change_version.sh -m .
|
|
# Theoretically this step below not necessary because we reuse the cache from the 'compile_frontend' job.
|
|
# Sometimes the cache is not created, therefore this is a fallback.
|
|
- name: Populate cache
|
|
run: ./mvnw -B dependency:go-offline -pl :taskana-rest-spring-example-boot -am
|
|
if: steps.maven-cache.outputs.cache-hit != 'true'
|
|
- name: Download taskana-web dist artifact
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: ${{ env.ARTIFACTS_TASKANA_WEB_NAME }}
|
|
path: ${{ env.ARTIFACTS_TASKANA_WEB_PATH }}
|
|
- name: Build frontend
|
|
run: ./mvnw install -pl :taskana-web
|
|
- name: Cypress tests
|
|
working-directory: web
|
|
run: |
|
|
../mvnw -B spring-boot:run -P history.plugin -f .. -pl :taskana-rest-spring-example-boot &> /dev/null &
|
|
npx wait-port -t 30000 localhost:8080 && yarn run e2e-standalone --spec "cypress/integration/monitor/**"
|
|
- name: Upload Cypress tests
|
|
if: failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ env.ARTIFACTS_CYPRESS_TESTS_NAME }}
|
|
path: ${{ env.ARTIFACTS_CYPRESS_TESTS_PATH }}
|
|
- name: Cancel workflow
|
|
if: failure()
|
|
uses: andymckay/cancel-action@0.5
|
|
|
|
test_backend:
|
|
runs-on: ubuntu-20.04
|
|
name: Test ${{ matrix.module }} on ${{ matrix.database }}
|
|
needs: [ compile_backend ]
|
|
strategy:
|
|
matrix:
|
|
module:
|
|
- taskana-common
|
|
- taskana-common-security
|
|
- taskana-common-data
|
|
- taskana-common-logging
|
|
- taskana-common-test
|
|
- taskana-core
|
|
- taskana-core-test
|
|
- taskana-cdi
|
|
- taskana-cdi-example
|
|
- taskana-test-api
|
|
- taskana-spring
|
|
- taskana-spring-example
|
|
- taskana-spi-routing-dmn-router
|
|
- taskana-routing-rest
|
|
- taskana-rest-spring
|
|
- taskana-rest-spring-test-lib
|
|
- taskana-rest-spring-example-common
|
|
- taskana-loghistory-provider
|
|
- taskana-simplehistory-provider
|
|
- taskana-simplehistory-rest-spring
|
|
database:
|
|
- H2
|
|
include:
|
|
- module: taskana-core
|
|
database: POSTGRES
|
|
- module: taskana-core
|
|
database: DB2
|
|
- module: taskana-core
|
|
database: ORACLE
|
|
- module: taskana-core-test
|
|
database: POSTGRES
|
|
- module: taskana-core-test
|
|
database: DB2
|
|
- module: taskana-core-test
|
|
database: ORACLE
|
|
- module: taskana-test-api
|
|
database: POSTGRES
|
|
- module: taskana-test-api
|
|
database: DB2
|
|
- module: taskana-test-api
|
|
database: ORACLE
|
|
- module: taskana-simplehistory-provider
|
|
database: DB2
|
|
- module: taskana-simplehistory-provider
|
|
database: POSTGRES
|
|
- module: taskana-simplehistory-provider
|
|
database: ORACLE
|
|
- module: taskana-rest-spring-example-boot
|
|
database: DB2
|
|
- module: taskana-rest-spring-example-boot
|
|
database: ORACLE
|
|
- module: taskana-rest-spring-example-wildfly
|
|
database: POSTGRES
|
|
steps:
|
|
- name: Git checkout
|
|
uses: actions/checkout@v4
|
|
- name: Set up JDK ${{ env.JAVA_VERSION }}
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: adopt
|
|
java-version: ${{ env.JAVA_VERSION }}
|
|
- name: Cache maven dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.m2
|
|
key: ${{ runner.os }}-${{ env.CACHE_MAVEN_NAME }}-${{ hashFiles('**/pom.xml') }}
|
|
restore-keys: ${{ runner.os }}-${{ env.CACHE_MAVEN_NAME }}
|
|
- name: Download taskana artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: ${{ env.ARTIFACTS_TASKANA_JARS_NAME }}
|
|
path: ${{ env.ARTIFACTS_TASKANA_JARS_PATH }}
|
|
- name: Change versions to match tag
|
|
run: |
|
|
ci/change_version.sh -m .
|
|
ci/update_taskana_dependency_for_wildfly.sh
|
|
- name: Test
|
|
run: ./mvnw -B verify -pl :${{matrix.module}} -Dcheckstyle.skip
|
|
env:
|
|
DB: ${{ matrix.database }}
|
|
- name: Upload JaCoCo Report
|
|
if: matrix.database == 'H2'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ env.ARTIFACTS_JACOCO_REPORTS_NAME }}-${{ matrix.module }}
|
|
path: ${{ env.ARTIFACTS_JACOCO_REPORTS_PATH }}
|
|
if-no-files-found: ignore
|
|
- name: Cancel workflow
|
|
if: failure()
|
|
uses: andymckay/cancel-action@0.5
|
|
|
|
release_artifacts:
|
|
runs-on: ubuntu-22.04
|
|
name: Release artifacts to OSS Sonatype
|
|
if: github.repository == 'Taskana/taskana' && ( startsWith(github.ref, 'refs/tags') || github.ref == 'refs/heads/master' ) && github.head_ref == ''
|
|
needs: [ test_frontend, test_e2e, test_backend ]
|
|
# as documented in the gpg manual (https://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html)
|
|
# we should execute this command before interacting with gpg (otherwise gpg won't work)
|
|
env:
|
|
GPG_TTY: $(tty)
|
|
steps:
|
|
- name: Git checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0 # necessary for push back
|
|
# NOTE @v2 uses the token as an auth http header. Set it to
|
|
# a Personal Access Token instead of secrets.GITHUB_TOKEN
|
|
# so that tag pushes trigger repo push events.
|
|
# source: https://github.community/t/action-does-not-trigger-another-on-push-tag-action/17148/7
|
|
token: ${{ secrets.ADMIN_PERSONAL_ACCESS_TOKEN }}
|
|
- name: Set up JDK ${{ env.JAVA_VERSION }}
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: adopt
|
|
java-version: ${{ env.JAVA_VERSION }}
|
|
- name: Cache maven dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.m2
|
|
key: ${{ runner.os }}-${{ env.CACHE_MAVEN_NAME }}-${{ hashFiles('**/pom.xml') }}
|
|
restore-keys: ${{ runner.os }}-${{ env.CACHE_MAVEN_NAME }}
|
|
- name: Download taskana artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: ${{ env.ARTIFACTS_TASKANA_JARS_NAME }}
|
|
path: ${{ env.ARTIFACTS_TASKANA_JARS_PATH }}
|
|
- name: Download taskana-web dist artifact
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: ${{ env.ARTIFACTS_TASKANA_WEB_NAME }}
|
|
path: ${{ env.ARTIFACTS_TASKANA_WEB_PATH }}
|
|
- name: Import GPG Key
|
|
run: echo -n "$GPG_KEY" | base64 --decode | gpg --batch --import
|
|
env:
|
|
GPG_KEY: ${{ secrets.GPG_KEY }}
|
|
- name: Change versions to match tag
|
|
run: ci/change_version.sh -m .
|
|
- name: Release artifacts to OSS Sonatype
|
|
run: |
|
|
./mvnw -B deploy -P $([[ "$GITHUB_REF" =~ ^refs/tags/v[0-9]+\.[0-9]+\.[0-9]+$ ]] && echo "release" || echo "snapshot") \
|
|
--settings ci/mvnsettings.xml -DskipTests -Dcheckstyle.skip -Djacoco.skip \
|
|
-pl :taskana-parent,\
|
|
:taskana-common-parent,:taskana-common-logging,:taskana-common,:taskana-common-security,\
|
|
:taskana-common-data,:taskana-common-test,\
|
|
:taskana-lib-parent,:taskana-core,:taskana-cdi,:taskana-spring,\
|
|
:taskana-rest-parent,:taskana-web,:taskana-rest-spring,\
|
|
:taskana-history-parent,:taskana-simplehistory-provider,:taskana-simplehistory-rest-spring,:taskana-loghistory-provider,\
|
|
:taskana-routing-parent,:taskana-spi-routing-dmn-router,:taskana-routing-rest
|
|
env:
|
|
GPG_KEY_NAME: ${{ secrets.GPG_KEY_NAME }}
|
|
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
|
|
MAVEN_USERNAME: 44pdzWD8
|
|
MAVEN_PASSWORD: eJZ25rsRdH7ZiePJO52JUy7LyVkNIgXxXEBmnTNH3aOM
|
|
- name: Update version to next snapshot and push back
|
|
run: |
|
|
ci/change_version.sh -i -m .
|
|
ci/update_taskana_dependency_for_wildfly.sh -i
|
|
ci/commitPoms.sh rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/AbstractAccTest.java
|
|
env:
|
|
GH_EMAIL: ${{ secrets.GH_EMAIL }}
|
|
GH_USERNAME: ${{ secrets.GH_USERNAME }}
|
|
- name: Cancel workflow
|
|
if: failure()
|
|
uses: andymckay/cancel-action@0.5
|
|
|
|
deploy_to_azure:
|
|
runs-on: ubuntu-20.04
|
|
name: Deploy demo app to Microsoft Azure
|
|
if: github.repository == 'Taskana/taskana' && github.ref == 'refs/heads/master' && github.head_ref == ''
|
|
needs: [ test_frontend, test_e2e, test_backend ]
|
|
steps:
|
|
- name: Git checkout
|
|
uses: actions/checkout@v4
|
|
- name: Set up JDK ${{ env.JAVA_VERSION }}
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: adopt
|
|
java-version: ${{ env.JAVA_VERSION }}
|
|
- name: Cache maven dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.m2
|
|
key: ${{ runner.os }}-${{ env.CACHE_MAVEN_NAME }}-${{ hashFiles('**/pom.xml') }}
|
|
restore-keys: ${{ runner.os }}-${{ env.CACHE_MAVEN_NAME }}
|
|
- name: Download taskana artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: ${{ env.ARTIFACTS_TASKANA_JARS_NAME }}
|
|
path: ${{ env.ARTIFACTS_TASKANA_JARS_PATH }}
|
|
- name: Download taskana-web dist artifact
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: ${{ env.ARTIFACTS_TASKANA_WEB_NAME }}
|
|
path: ${{ env.ARTIFACTS_TASKANA_WEB_PATH }}
|
|
- name: Build taskana-web
|
|
run: ./mvnw -B install -pl :taskana-web
|
|
- name: Generate Javadoc
|
|
run: ./mvnw -B clean javadoc:jar -pl :taskana-core,:taskana-cdi,:taskana-spring
|
|
- name: Build Example Application
|
|
run: ./mvnw -B install -P history.plugin -P dmn-routing.plugin -pl :taskana-rest-spring-example-boot -DskipTests -Dcheckstyle.skip -Dmaven.javadoc.skip -Djacoco.skip
|
|
- name: Verify Example Application contains documentation
|
|
run: ci/verify_docs_jar.sh
|
|
- name: Login to Microsoft Azure
|
|
uses: Azure/login@v2
|
|
with:
|
|
creds: '{"clientId":"${{ secrets.CLIENT_ID }}","clientSecret":"${{ secrets.CLIENT_SECRET }}","subscriptionId":"${{ secrets.SUBSCRIPTION_ID }}","tenantId":"${{ secrets.TENANT_ID }}"}'
|
|
- name: Deploy to Microsoft Azure
|
|
uses: Azure/webapps-deploy@v3
|
|
with:
|
|
app-name: taskana
|
|
package: rest/taskana-rest-spring-example-boot/target/taskana-rest-spring-example-boot.jar
|
|
- name: Wait for Azure for 60 seconds
|
|
uses: jakejarvis/wait-action@master
|
|
with:
|
|
time: '60s'
|
|
- name: Smoke test documentation
|
|
run: ci/verify_docs_alive.sh
|
|
- name: Cancel workflow
|
|
if: failure()
|
|
uses: andymckay/cancel-action@0.5
|
|
|
|
upload_to_sonar:
|
|
runs-on: ubuntu-20.04
|
|
name: Upload SonarQube analysis to sonarcloud
|
|
# no pull request and not on release
|
|
if: github.head_ref == '' && !startsWith(github.ref, 'refs/tags')
|
|
needs: [ test_frontend, test_e2e, test_backend ]
|
|
steps:
|
|
- name: Git checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
|
- name: Set up JDK ${{ env.JAVA_VERSION }}
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: adopt
|
|
java-version: ${{ env.JAVA_VERSION }}
|
|
- name: Cache SonarCloud packages
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.sonar/cache
|
|
key: ${{ runner.os }}-${{ env.CACHE_SONAR_NAME }}
|
|
restore-keys: ${{ runner.os }}-${{ env.CACHE_SONAR_NAME }}
|
|
- name: Cache maven dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.m2
|
|
key: ${{ runner.os }}-${{ env.CACHE_MAVEN_NAME }}-${{ hashFiles('**/pom.xml') }}
|
|
restore-keys: ${{ runner.os }}-${{ env.CACHE_MAVEN_NAME }}
|
|
- name: Download JaCoCo reports
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
pattern: ${{ env.ARTIFACTS_JACOCO_REPORTS_NAME }}-*
|
|
merge-multiple: true
|
|
- name: Install taskana
|
|
run: ./mvnw -B install -DskipTests -Dcheckstyle.skip -Dmaven.javadoc.skip
|
|
- name: Upload SonarQube analysis
|
|
run: ./mvnw -B sonar:sonar
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
|
SONAR_PROJECT_KEY: ${{ secrets.SONAR_PROJECT_KEY }}
|
|
SONAR_ORGANIZATION: ${{ secrets.SONAR_ORGANIZATION }}
|
|
- name: Cancel workflow
|
|
if: failure()
|
|
uses: andymckay/cancel-action@0.5
|