name: Continuous Integration on: pull_request_target: paths-ignore: - 'docs/**' branches: - master - '4.0' permissions: read-all jobs: server_tests: strategy: matrix: java: [ 11, 14 ] runs-on: ubuntu-latest services: postgres: image: postgres ports: - 5432 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: 'postgres' POSTGRES_DB: test_db options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 mysql: image: mysql:8 ports: - 3306 env: MYSQL_ROOT_PASSWORD: root options: >- --health-cmd "mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 3 steps: - uses: actions/checkout@v2.3.4 with: ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} - name: Restore dependency cache uses: actions/cache@v2.1.7 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- - name: Set up Java ${{ matrix.java }} uses: actions/setup-java@v2 with: distribution: 'adopt' java-version: ${{ matrix.java }} - name: Configure connections to databases id: configure_db_connections run: cat extensions/database/tests/conf/github_actions_tests.xml | sed -e "s/MYSQL_PORT/${{ job.services.mysql.ports[3306] }}/g" | sed -e "s/POSTGRES_PORT/${{ job.services.postgres.ports[5432] }}/g" > extensions/database/tests/conf/tests.xml - name: Populate databases with test data id: populate_databases_with_test_data run: | mysql -u root -h 127.0.0.1 -P ${{ job.services.mysql.ports[3306] }} -proot -e 'CREATE DATABASE test_db;' mysql -u root -h 127.0.0.1 -P ${{ job.services.mysql.ports[3306] }} -proot < extensions/database/tests/conf/test-mysql.sql psql -U postgres test_db -h 127.0.0.1 -p ${{ job.services.postgres.ports[5432] }} < extensions/database/tests/conf/test-pgsql.sql env: PGPASSWORD: postgres - name: Build and test with Maven run: mvn jacoco:prepare-agent test - name: Submit test coverage to Coveralls run: | mvn prepare-package -DskipTests=true mvn jacoco:report coveralls:report -DrepoToken=${{ secrets.COVERALLS_TOKEN }} -DpullRequest=${{ github.event.number }} prepare_ui_test_matrix: runs-on: ubuntu-latest outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - uses: actions/checkout@v2.3.4 with: ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} - name: Setup Node uses: actions/setup-node@v2 with: node-version: '12' - id: set-matrix run: npm install --save glob && node main/tests/cypress/build-test-matrix.js env: browsers: chrome ui_test: needs: prepare_ui_test_matrix runs-on: ubuntu-latest strategy: matrix: ${{fromJSON(needs.prepare_ui_test_matrix.outputs.matrix)}} steps: - uses: actions/checkout@v2.3.4 with: ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} - name: Restore dependency cache uses: actions/cache@v2.1.7 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- - name: Set up Java 11 uses: actions/setup-java@v2 with: distribution: 'adopt' java-version: 11 - name: Build OpenRefine run: ./refine build - name: Setup Node uses: actions/setup-node@v2 with: node-version: '12' - name: Restore Tests dependency cache uses: actions/cache@v2.1.7 with: path: | ~/cache ~/.cache **/node_modules !~/cache/exclude key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn - name: Install test dependencies run: | cd ./main/tests/cypress npm i -g yarn yarn install - name: Test with Cypress on ${{ matrix.browser }} run: | echo REFINE_MIN_MEMORY=1400M >> ./refine.ini echo REFINE_MEMORY=4096M >> ./refine.ini ./refine ui_tests env: CYPRESS_BROWSER: ${{ matrix.browser }} CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }} CYPRESS_CI_BUILD_ID: '${{ github.run_id }}' CYPRESS_SPECS: ${{ matrix.specs }}