Skip to content

Update Grails Packages (major) #78

Update Grails Packages (major)

Update Grails Packages (major) #78

Workflow file for this run

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle
name: Java CI with Gradle
on:
push:
branches: [ "**" ]
pull_request:
branches: [ "**" ]
permissions:
contents: read
actions: read
checks: write
security-events: write
jobs:
build:
runs-on: ubuntu-latest
env:
GRADLE_OPTS: -Dorg.gradle.jvmargs="-XX:MaxMetaspaceSize=1g -Xmx1024m"
services:
postgres:
image: postgres
env:
POSTGRES_USER: sandbox
POSTGRES_DB: sandbox
POSTGRES_PASSWORD: sandbox
options: >-
--health-cmd pg_isready
--health-interval 1s
--health-timeout 5s
--health-retries 50
ports:
- 5432:5432
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
with:
cache-disabled: true
build-scan-publish: true
build-scan-terms-of-use-url: "https://gradle.com/terms-of-service"
build-scan-terms-of-use-agree: "yes"
- name: Core gradle info
run: |
./gradlew -v
./gradlew jvmArgs sysProps
- name: Mdm-core grails info
working-directory: ./mdm-core
run: |
./grailsw -v
- name: License header check
run: |
./gradlew license
- name: Flyway migration check
run: |
./gradlew verifyFlywayMigrationVersions
- name: Unit Tests
run: ./gradlew test --no-daemon --stacktrace -Duser.language=en -Duser.country=GB
- name: Unit Test Report
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: Unit Test Results
path: '**/build/test-results/**/*.xml'
reporter: java-junit
list-tests: 'failed'
- name: Parallel Integration Tests
run: |
./gradlew -Dgradle.integrationTest=true -Dgradle.parallel=true \
mdm-core:integrationTest \
mdm-plugin-authentication-apikey:integrationTest \
mdm-plugin-authentication-basic:integrationTest \
mdm-plugin-dataflow:integrationTest \
mdm-plugin-datamodel:integrationTest \
mdm-plugin-email-proxy:integrationTest \
mdm-plugin-federation:integrationTest \
mdm-plugin-profile:integrationTest \
mdm-plugin-referencedata:integrationTest \
mdm-plugin-terminology:integrationTest
# mdm-plugin-security:integrationTest // Is commented out in Jenkins - not sure why
- name: Parallel Integration Test Report
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: Parallel Integration Test Results
path: '**/build/test-results/parallelIntegrationTest/*.xml'
reporter: java-junit
list-tests: 'failed'
- name: Non-Parallel Integration Tests
run: |
./gradlew -Dgradle.integrationTest=true -Dgradle.nonParallel=true \
mdm-core:integrationTest \
mdm-plugin-authentication-apikey:integrationTest \
mdm-plugin-authentication-basic:integrationTest \
mdm-plugin-dataflow:integrationTest \
mdm-plugin-datamodel:integrationTest \
mdm-plugin-email-proxy:integrationTest \
mdm-plugin-federation:integrationTest \
mdm-plugin-profile:integrationTest \
mdm-plugin-referencedata:integrationTest \
mdm-plugin-terminology:integrationTest \
mdm-security:integrationTest
- name: Non-Parallel Integration Test Report
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: Non-Parallel Integration Test Results
path: '**/build/test-results/nonParallelIntegrationTest/*.xml'
reporter: java-junit
list-tests: 'failed'
- name: End-to-end testing - core
uses: ./.github/actions/e2e-composite
with:
package: core
- name: End-to-end testing - security
uses: ./.github/actions/e2e-composite
with:
package: security
- name: End-to-end testing - authentication
uses: ./.github/actions/e2e-composite
with:
package: authentication
- name: End-to-end testing - datamodel
uses: ./.github/actions/e2e-composite
with:
package: datamodel
- name: End-to-end testing - terminology
uses: ./.github/actions/e2e-composite
with:
package: terminology
- name: End-to-end testing - referencedata
uses: ./.github/actions/e2e-composite
with:
package: referencedata
- name: End-to-end testing - profile
uses: ./.github/actions/e2e-composite
with:
package: profile
- name: End-to-end testing - dataflow
uses: ./.github/actions/e2e-composite
with:
package: dataflow
- name: End-to-end testing - federation
uses: ./.github/actions/e2e-composite
with:
package: federation
- name: End-to-end testing - facet
uses: ./.github/actions/e2e-composite
with:
package: facet
- name: End-to-end testing - versionedfolder
uses: ./.github/actions/e2e-composite
with:
package: versionedfolder
# - name: Archive test report
# if: always()
# uses: actions/upload-artifact@v3
# with:
# name: test-report
# path: '**/build/test-results/**/*.xml'
- name: MegaLinter
uses: oxsecurity/megalinter/flavors/ci_light@v7
env:
# All available variables are described in documentation
# https://megalinter.io/configuration/
VALIDATE_ALL_CODEBASE: true
ENABLE_LINTERS: GROOVY_NPM_GROOVY_LINT
LINTER_RULES_PATH: 'config/codenarc'
DISABLE_ERRORS: true #Flag to have the linter complete with exit code 0 even if errors were detected.
SARIF_REPORTER: true
# This is currently too big for the security tab
# - name: Upload MegaLinter scan results to GitHub Security tab
# if: success() || failure()
# uses: github/codeql-action/upload-sarif@v2
# with:
# sarif_file: 'megalinter-reports/megalinter-report.sarif'
# Upload MegaLinter artifacts
# - name: Archive lint reports
# if: ${{ success() }} || ${{ failure() }}
# uses: actions/upload-artifact@v3
# with:
# name: MegaLinter reports
# path: |
# megalinter-reports
# mega-linter.log
- name: Publish Snapshot to Mauro Snapshot Repository
if: success() && github.ref == 'refs/heads/develop'
run: |
./gradlew --stacktrace -PMauroSnapshotRepositoryUsername=${{secrets.MAURO_SNAPSHOT_REPOSITORY_USERNAME}} -PMauroSnapshotRepositoryPassword=${{secrets.MAURO_SNAPSHOT_REPOSITORY_PASSWORD}} publishAllPublicationsToMauroSnapshotRepositoryRepository
- name: Send a stream message
if: success() || failure()
uses: zulip/github-actions-zulip/send-message@v1
with:
api-key: ${{ secrets.ZULIP_API_KEY }}
email: "githubactionsbot-bot@maurodatamapper.zulipchat.com"
organization-url: "https://maurodatamapper.zulipchat.com"
to: "build/github-actions"
type: "stream"
topic: "${{github.repository}}"
content: "${{ job.status == 'success' && ':check_mark:' || ':cross_mark:' }} ${{github.repository}} : **${{github.ref}}**\nGitHub Actions build result: **${{ job.status }}**\n${{ github.event.pull_request.html_url || github.event.head_commit.url }}"