Skip to content

Integration Tests

Integration Tests #404

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