Skip to content

Integration Tests #6531

Integration Tests

Integration Tests #6531

Workflow file for this run

#####################################################################
# Integration test suite definition for IRIDA using GitHub Actions
#####################################################################
name: Integration Tests
on:
pull_request: # Run on all pull requests
push:
branches: # Run on any push to development or main
- development
- main
schedule: # Run daily on development and weekly on main
- cron: 0 1 * * *
branches: development
- cron: 0 2 * * 0
branches: main
jobs:
gradle-build: # Gradle integration tests
timeout-minutes: 60
runs-on: ubuntu-20.04 #See pre-installed software at https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md
env:
MYSQL_PORT: 3800
MYSQL_USER: test
MYSQL_PASSWORD: test
MYSQL_DATABASE: irida_integration_test
MYSQL_HOST: 127.0.0.1
strategy:
fail-fast: false #Setting so that if one of the test suites fail, the other will continue
matrix:
#The list of test suites to run
suite:
[
"service_testing",
"rest_testing",
"ui_testing",
"galaxy_testing",
"galaxy_pipeline_testing",
"open_api_testing",
"file_system_testing",
]
steps:
- uses: actions/checkout@v3 #Checkout the project from git
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "::set-output name=pnpm_cache_dir::$(./gradlew pnpmCacheDir -q)"
- name: Setup pnpm cache
uses: actions/cache@v3
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup MySQL
uses: mirromutth/[email protected]
with:
host port: ${{ env.MYSQL_PORT }}
character set server: "utf8"
collation server: "utf8_general_ci"
mysql version: "5.7"
mysql database: ${{ env.MYSQL_DATABASE }}
mysql user: ${{ env.MYSQL_USER }}
mysql password: ${{ env.MYSQL_PASSWORD }}
- name: Set up JDK 17 # Installs java 17
uses: actions/setup-java@v1
with:
java-version: 17
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: Wait for MySQL
run: |
while ! mysqladmin ping --host=${{ env.MYSQL_HOST }} --port=${{ env.MYSQL_PORT }} --user=${{ env.MYSQL_USER }} --password=${{ env.MYSQL_ROOT_PASSWORD }} --silent; do
sleep 1
done
- name: Run tests with Gradle # Run the test suite
run: ./run-tests.sh --db-host ${{ env.MYSQL_HOST }} --db-port ${{ env.MYSQL_PORT }} --database ${{ env.MYSQL_DATABASE}} ${{ matrix.suite }}
- name: Publish Test Report
uses: mikepenz/action-junit-report@v3
if: matrix.suite != 'open_api_testing' && always()
with:
report_paths: "**/build/test-results/*ITest/TEST-*.xml" # Publish Integration Test results
fail_on_failure: false
check_name: "JUnit Test Report (${{ matrix.suite }})"
annotate_only: true
docs-build: # Testing the javadoc and jekyll documentation builds
runs-on: ubuntu-20.04
env:
MYSQL_PORT: 3800
MYSQL_USER: test
MYSQL_PASSWORD: test
MYSQL_DATABASE: irida_integration_test
MYSQL_HOST: 127.0.0.1
steps:
- uses: actions/checkout@v4 #Checkout the project from git
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "::set-output name=pnpm_cache_dir::$(./gradlew pnpmCacheDir -q)"
- name: Setup pnpm cache
uses: actions/cache@v3
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup MySQL
uses: mirromutth/[email protected]
with:
host port: ${{ env.MYSQL_PORT }}
character set server: "utf8"
collation server: "utf8_general_ci"
mysql version: "5.7"
mysql database: ${{ env.MYSQL_DATABASE }}
mysql user: ${{ env.MYSQL_USER }}
mysql password: ${{ env.MYSQL_PASSWORD }}
- name: Setup Ruby
uses: actions/setup-ruby@v1
- name: Set up JDK 17 # Installs java 17
uses: actions/setup-java@v1
with:
java-version: 17
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: Wait for MySQL
run: |
while ! mysqladmin ping --host=${{ env.MYSQL_HOST }} --port=${{ env.MYSQL_PORT }} --user=${{ env.MYSQL_USER }} --password=${{ env.MYSQL_ROOT_PASSWORD }} --silent; do
sleep 1
done
- name: Build Documentation Site
run: ./gradlew clean buildDocsSite -Dliquibase.update.database.schema=true -Dspring.datasource.url=jdbc:mysql://${{env.MYSQL_HOST}}:${{env.MYSQL_PORT}}/${{env.MYSQL_DATABASE}} -Dspring.datasource.dbcp2.max-wait=10000