| name: Fineract Build & Test - MySQL |
| on: [push, pull_request] |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| build: |
| runs-on: ubuntu-20.04 |
| |
| services: |
| mariad: |
| image: mysql:8.0 |
| ports: |
| - 3306:3306 |
| env: |
| MYSQL_ROOT_PASSWORD: mysql |
| options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 |
| |
| mock-oauth2-server: |
| image: ghcr.io/navikt/mock-oauth2-server:0.5.6 |
| ports: |
| - 9000:9000 |
| env: |
| SERVER_PORT: 9000 |
| JSON_CONFIG: '{ "interactiveLogin": true, "httpServer": "NettyWrapper", "tokenCallbacks": [ { "issuerId": "auth/realms/fineract", "tokenExpiry": 120, "requestMappings": [{ "requestParam": "scope", "match": "fineract", "claims": { "sub": "mifos", "scope": [ "test" ] } } ] } ] }' |
| |
| env: |
| TZ: Asia/Kolkata |
| steps: |
| - name: Checkout |
| uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3 |
| - name: Set up JDK 17 |
| uses: actions/setup-java@1df8dbefe2a8cbc99770194893dd902763bee34b # v3 |
| with: |
| java-version: '17' |
| distribution: 'zulu' |
| cache: gradle |
| - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # tag=v3 |
| with: |
| node-version: 16 |
| - name: Congfigure vega-cli |
| run: npm i -g vega-cli --unsafe |
| - name: Validate Gradle wrapper |
| uses: gradle/wrapper-validation-action@55e685c48d84285a5b0418cd094606e199cca3b6 |
| - name: Verify MariaDB connection |
| run: | |
| while ! mysqladmin ping -h"127.0.0.1" -P3306 ; do |
| sleep 1 |
| done |
| - name: Initialise databases |
| run: | |
| ./gradlew --no-daemon -q createMySQLDB -PdbName=fineract_tenants |
| ./gradlew --no-daemon -q createMySQLDB -PdbName=fineract_default |
| - name: Install additional software |
| run: | |
| sudo apt-get update |
| sudo apt-get install ghostscript graphviz -y |
| |
| - name: Build & Test |
| run: | |
| ./gradlew --no-daemon --console=plain build test --fail-fast -x doc -x :twofactor-tests:test -x :oauth2-test:test -PdbType=mysql |
| ./gradlew --no-daemon --console=plain :twofactor-tests:test --fail-fast -PdbType=mysql |
| ./gradlew --no-daemon --console=plain :oauth2-tests:test --fail-fast -PdbType=mysql |
| |
| - name: Archive test results |
| if: always() |
| uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # tag=v3 |
| with: |
| name: test-results |
| path: | |
| integration-tests/build/reports/ |
| twofactor-tests/build/reports/ |
| oauth2-tests/build/reports/ |
| |
| - name: Archive server logs |
| if: always() |
| uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # tag=v3 |
| with: |
| name: server-logs |
| path: | |
| integration-tests/build/cargo/ |
| twofactor-tests/build/cargo/ |
| oauth2-tests/build/cargo/ |