Update to Node 22 #1398
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
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: [20] | |
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 |