Skip to content

migrate to jhipster v8 #1034

migrate to jhipster v8

migrate to jhipster v8 #1034

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/
JHI_SCRIPTS: ${{ github.workspace }}/generator-jhipster/test-integration/scripts
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]
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: Checkout quarkus blueprint'
uses: actions/checkout@v3
with:
path: generator-jhipster-quarkus
fetch-depth: 5
- name: 'SETUP: Checkout generator-jhipster'
uses: actions/checkout@v3
with:
repository: 'jhipster/generator-jhipster'
ref: v8.0.0-rc.1
path: generator-jhipster
- name: 'SETUP: environment'
id: setup
uses: ./generator-jhipster/.github/actions/setup
with:
jdl-sample: ${{ github.workspace }}/generator-jhipster-quarkus/.blueprint/generate-sample/templates/samples/${{ matrix.app }}.jdl
generator-jhipster-branch: local
jhipster-bom-branch: ignore
package-with-executable: generator-jhipster-quarkus
executable: jhipster-quarkus
- uses: actions/setup-node@v3
with:
# use node 16 for compare
node-version: 16
- uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- uses: graalvm/setup-graalvm@v1
id: graalvm
if: ${{ !contains(fromJson('["push", "pull_request"]'), github.event_name) || contains(matrix.app, 'mysql-caffeine') }}
with:
java-version: '17'
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: |
ls -la
jhipster-quarkus generate-sample ${{ matrix.app }}
#----------------------------------------------------------------------
# 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
$JHI_SCRIPTS/11-generate-config.sh
$JHI_SCRIPTS/12-generate-project.sh --skip-install --skip-git
cp -a "${{ github.workspace }}/app/.git" "${{ github.workspace }}/base/app/"
working-directory: ${{ github.workspace }}/generator-jhipster-quarkus/
env:
JHI_JDL_APP: ${{ github.workspace }}/generator-jhipster-quarkus/test-integration/samples/${{ matrix.app }}.jdl
JHI_FOLDER_APP: ${{ github.workspace }}/base/app
- 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' \
'src/main/webapp/**' '**/src/main/webapp/**' \
'src/test/javascript/**' '**/test/javascript/**' \
'.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' \
':!src/main/webapp/**' ':!**/src/main/webapp/**' \
':!src/test/javascript/**' ':!**/test/javascript/**' \
':!.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'
run: npm run ci:backend:test
working-directory: ${{ steps.setup.outputs.application-path }}
- name: 'Run JHipster Application client tests'
run: npm run ci:frontend:test
working-directory: ${{ steps.setup.outputs.application-path }}
- name: 'Packaging'
run: npm run ci:e2e:package
working-directory: ${{ steps.setup.outputs.application-path }}
- name: 'E2E: Start docker-compose containers for e2e tests'
if: steps.compare.outputs.equals != 'true'
run: npm run ci:e2e:prepare
working-directory: ${{ steps.setup.outputs.application-path }}
- name: 'E2E: Run'
if: steps.compare.outputs.equals != 'true'
id: e2e
run: npm run ci:e2e:run --if-present
working-directory: ${{ steps.setup.outputs.application-path }}
- name: 'E2E: Store failure screenshots'
uses: actions/upload-artifact@v2
if: always() && steps.e2e.outcome == 'failure'
with:
name: screenshots-${{ matrix.app }}
path: ${{ steps.setup.outputs.application-path }}/*/cypress/screenshots
- name: 'Native: Build Image'
if: steps.graalvm.outcome == 'success'
id: native
run: npm run ci:native:prod
working-directory: ${{ steps.setup.outputs.application-path }}
- name: 'Native: Store failsafe reports'
uses: actions/upload-artifact@v2
if: always() && steps.native.outcome == 'failure'
with:
name: failsafe-reports-${{ matrix.app }}
path: /home/runner/app/target/failsafe-reports