Integration Tests #139
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Integration Tests | |
on: | |
push: | |
branches: | |
- main | |
- 3.x | |
pull_request: | |
types: [opened, synchronize, reopened] | |
paths-ignore: | |
- 'spring-cloud-generator/**' | |
- 'spring-cloud-previews/**' | |
workflow_dispatch: | |
schedule: | |
- cron: '05 8 * * *' # 08:00 UTC every day | |
jobs: | |
integrationTests: | |
if: | | |
github.actor != 'dependabot[bot]' && (( | |
github.event_name == 'pull_request' && github.repository == github.event.pull_request.head.repo.full_name | |
) || (github.event_name != 'pull_request')) | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
it: | |
- bigquery | |
- cloudsql | |
- config | |
- datastore | |
- firestore | |
- kms | |
- logging | |
- metrics | |
- multisample | |
- kotlin | |
- pubsub | |
- pubsub-bus | |
- pubsub-docs | |
- pubsub-emulator | |
- pubsub-integration | |
- secretmanager | |
- spanner | |
- storage | |
- trace | |
- vision | |
steps: | |
- name: Get current date | |
id: date | |
run: echo "date=$(date +'%Y-%m-%d' --utc)" >> $GITHUB_OUTPUT | |
- uses: actions/checkout@v2 | |
- name: Setup Java 17 | |
uses: actions/setup-java@v1 | |
with: | |
java-version: 17 | |
- name: Setup gcloud | |
uses: google-github-actions/setup-gcloud@v0 | |
with: | |
version: latest | |
project_id: spring-cloud-gcp-ci | |
service_account_key: ${{ secrets.SPRING_CLOUD_GCP_CI_SA_KEY }} | |
export_default_credentials: true | |
- name: Install pubsub-emulator | |
if: ${{ matrix.it == 'pubsub-emulator' }} | |
run: | | |
gcloud components install pubsub-emulator beta && \ | |
gcloud components update | |
- name: Maven go offline | |
id: mvn-offline | |
if: steps.mvn-cache.outputs.cache-hit != 'true' | |
run: ./mvnw compile dependency:go-offline | |
- name: Mvn install # Need this when the directory/pom structure changes | |
id: install1 | |
continue-on-error: true | |
run: | | |
./mvnw \ | |
--batch-mode \ | |
--threads 1.5C \ | |
--define maven.test.skip=true \ | |
--define maven.javadoc.skip=true \ | |
install | |
- name: Retry install on failure | |
id: install2 | |
if: steps.install1.outcome == 'failure' | |
run: | | |
./mvnw \ | |
--batch-mode \ | |
--threads 1.5C \ | |
--define maven.test.skip=true \ | |
--define maven.javadoc.skip=true \ | |
install | |
- name: Wait our turn for running integration tests | |
uses: softprops/turnstyle@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
continue-after-seconds: 1200 # 30 min | |
same-branch-only: false | |
- name: Integration Tests | |
id: intTest1 | |
continue-on-error: true | |
run: | | |
./mvnw \ | |
--batch-mode \ | |
--activate-profiles spring-cloud-gcp-ci-it \ | |
--define maven.javadoc.skip=true \ | |
--define skip.surefire.tests=true \ | |
--define it.${{ matrix.it }}=true \ | |
verify | |
- name: Retry on Failure | |
id: intTest2 | |
if: steps.intTest1.outcome == 'failure' | |
run: | | |
./mvnw \ | |
--batch-mode \ | |
--activate-profiles spring-cloud-gcp-ci-it \ | |
--define maven.javadoc.skip=true \ | |
--define skip.surefire.tests=true \ | |
--define it.${{ matrix.it }}=true \ | |
verify | |
- name: Aggregate Report | |
run: | | |
./mvnw \ | |
--batch-mode \ | |
--define aggregate=true \ | |
surefire-report:failsafe-report-only | |
- name: Archive logs | |
if: always() | |
continue-on-error: true | |
uses: actions/upload-artifact@v2 | |
with: | |
name: Integration Test Logs - ${{ matrix.it}} | |
path: | | |
**/target/failsafe-reports/* | |
**/target/site |