Skip to content

Fix #407

Fix #407 #1403

name: Imperative Smoke Tests
concurrency:
# Group PRs by head_ref, push to main branch by commit id, and others branch by ref.
group: ${{ github.workflow }}-${{ github.head_ref || (github.ref == 'refs/heads/main' && github.sha) || github.ref }}
cancel-in-progress: true
on:
pull_request:
branches:
- main
push:
branches:
- main
# schedule:
# - cron: '0 2 * * *'
env:
JHI_SAMPLES: ${{ github.workspace }}/generator-jhipster-quarkus/.blueprint/generate-sample/templates/samples/
jobs:
applications:
name: ${{ matrix.app }}
runs-on: ${{ matrix.os }}
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
timeout-minutes: 60
defaults:
run:
working-directory: ${{ github.workspace }}/app
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
node: [22]
java: [17]
app:
- imperative-ngx-jwt-maven-mysql-caffeine
- imperative-ngx-jwt-maven-mongodb-caffeine
- imperative-ngx-jwt-gradle-mongodb-redis
- imperative-ngx-jwt-maven-psql-nocache
- imperative-react-jwt-gradle-mysql-caffeine
- imperative-ngx-jwt-maven-mysql-redis
- imperative-sql-jwt-maven-no-db
- imperative-ngx-oauth2-maven-mysql-caffeine
include:
- app: imperative-ngx-jwt-maven-mysql-caffeine
- app: imperative-ngx-jwt-maven-mongodb-caffeine
- app: imperative-ngx-jwt-maven-psql-nocache
- app: imperative-react-jwt-gradle-mysql-caffeine
- app: imperative-ngx-jwt-maven-mysql-redis
- app: imperative-ngx-oauth2-maven-mysql-caffeine
exclude:
- app: imperative-sql-jwt-maven-no-db
- app: imperative-ngx-jwt-gradle-mongodb-redis
steps:
- name: 'SETUP: environment'
run: |
git config --global user.name "JHipster Bot"
git config --global user.email "[email protected]"
git config --global init.defaultBranch main
mkdir app
mkdir -p base/app
working-directory: ${{ github.workspace }}
- name: 'SETUP: Checkout quarkus blueprint'
uses: actions/checkout@v4
with:
path: generator-jhipster-quarkus
fetch-depth: 5
- uses: actions/setup-node@v4
with:
node-version: ${{matrix.node}}
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{matrix.java}}
- uses: graalvm/setup-graalvm@v1
id: graalvm
if: ${{ !contains(fromJson('["push", "pull_request"]'), github.event_name) || contains(matrix.app, 'mysql-caffeine') }}
with:
java-version: ${{matrix.java}}
distribution: 'graalvm'
components: 'native-image'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: 'install blueprint'
run: npm install && npm link
working-directory: ${{ github.workspace }}/generator-jhipster-quarkus/
#----------------------------------------------------------------------
# Generate project
#----------------------------------------------------------------------
- name: 'GENERATION: project'
run: jhipster-quarkus generate-sample ${{ matrix.app }}.jdl
#----------------------------------------------------------------------
# Detect changes against base commit
#----------------------------------------------------------------------
- name: 'MERGE: generate base'
continue-on-error: true
if: github.event.pull_request
id: base-app
run: |
npm uninstall -g generator-jhipster-quarkus
git checkout @~1
npm install
npm link
cd ${{ github.workspace }}/base/app
jhipster-quarkus generate-sample ${{ matrix.app }}.jdl --skip-install --skip-git
cp -a "${{ github.workspace }}/app/.git" "${{ github.workspace }}/base/app/"
working-directory: ${{ github.workspace }}/generator-jhipster-quarkus/
- name: 'MERGE: compare changes'
continue-on-error: true
id: compare
if: steps.base-app.outcome == 'success'
working-directory: ${{ github.workspace }}/base/app
run: |
git log
# File keystore.p12 always changes
# File package-lock.json is not generated
# Verify if the generated source has changed
git add .
echo "Showing config diff changes (won't trigger builds)"
echo "::group::ignored"
git -c color.ui=always diff -R --cached -- \
'.yo-rc.json' '**/.yo-rc.json' \
'.gitignore' '**/.gitignore' \
'.gitattributes' '**/.gitattributes' \
'README.md' '**/README.md' \
'.jhipster/**' '**/.jhipster/**'
echo "::endgroup::"
echo "Showing source diff changes (will trigger builds)"
echo "::group::changes"
git -c color.ui=always diff -R --cached --exit-code -- . \
':!.yo-rc.json' ':!**/.yo-rc.json' \
':!.gitignore' ':!**/.gitignore' \
':!.gitattributes' ':!**/.gitattributes' \
':!README.md' ':!**/README.md' \
':!.jhipster/**' ':!**/.jhipster/**' \
':!package-lock.json' ':!**/package-lock.json' \
':!**/keystore.p12' \
&& echo "equals=true" >> $GITHUB_OUTPUT \
|| echo "has-changes=true" >> $GITHUB_OUTPUT
echo "::endgroup::"
#----------------------------------------------------------------------
# Run tests
#----------------------------------------------------------------------
- name: 'Run JHipster Application server tests'
if: steps.compare.outputs.equals != 'true'
run: npm run ci:backend:test
- name: 'Run JHipster Application client tests'
if: steps.compare.outputs.equals != 'true'
run: npm run ci:frontend:test
- name: 'Packaging'
if: steps.compare.outputs.equals != 'true'
run: npm run ci:e2e:package
- name: 'E2E: Start docker-compose containers for e2e tests'
if: steps.compare.outputs.equals != 'true'
run: npm run ci:e2e:prepare
- name: 'E2E: Run'
if: steps.compare.outputs.equals != 'true'
id: e2e
run: npm run ci:e2e:run --if-present
- name: 'E2E: Store failure screenshots'
uses: actions/upload-artifact@v4
if: always() && steps.e2e.outcome == 'failure'
with:
name: screenshots-${{ matrix.app }}
path: ${{ github.workspace }}/app/*/cypress/screenshots
- name: 'Native: Build Image'
if: steps.compare.outputs.equals != 'true' && steps.graalvm.outcome == 'success'
id: native
run: npm run ci:native:prod
- name: 'Native: Store failsafe reports'
uses: actions/upload-artifact@v4
if: always() && steps.native.outcome == 'failure'
with:
name: failsafe-reports-${{ matrix.app }}
path: /home/runner/app/target/failsafe-reports
check-samples:
permissions:
contents: none
runs-on: ubuntu-latest
needs: [applications]
if: always()
steps:
- run: |
echo '${{ toJSON(needs) }}'
if [ 'skipped' == '${{ needs.applications.result }}' ] || [ 'success' == '${{ needs.applications.result }}' ] || [ 'closed' == '${{ github.event.action }}' ]; then
exit 0
fi
exit 1