Skip to content

Compatibility Check #176

Compatibility Check

Compatibility Check #176

name: Compatibility Check
on:
workflow_dispatch:
inputs:
mavenRepository:
description: 'URL of a Maven repository that holds dependencies to confirm'
required: true
type: string
mavenDependencies:
description: 'Key-value pairs of dependencies for Java'
required: true
type: string
schedule:
- cron: '05 8 * * *' # 08:00 UTC every day
jobs:
integrationTests:
name: Integration Tests for Compatibility Check
if: github.repository == 'suztomo/spring-cloud-gcp'
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: Read inputs
run: |
echo "repo: $REPO"
echo "deps: $DEPS"
env:
REPO: ${{ inputs.mavenRepository }}
DEPS: ${{ inputs.mavenDependencies }}
- name: Force dependencies
run: |
echo "repo: $REPO"
echo $DEPS > /tmp/version_check_request.json
python3 util//force_depencencies.py $REPO /tmp/version_check_request.json
echo "Here are the changes:"
git diff
echo "-----------"
env:
REPO: ${{ inputs.mavenRepository }}
DEPS: ${{ inputs.mavenDependencies }}
- name: Setup Java 11
uses: actions/setup-java@v1
if: matrix.it != 'native'
with:
java-version: 11
- uses: actions/cache@v2
id: mvn-cache
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-unified-${{ steps.date.outputs.date }}
- 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 \
--define compatibilityCheckRepository=$REPO \
install
env:
REPO: ${{ inputs.mavenRepository }}
- 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 --define compatibilityCheckRepository=$REPO
env:
REPO: ${{ inputs.mavenRepository }}
- 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 \
--define compatibilityCheckRepository=$REPO \
install
env:
REPO: ${{ inputs.mavenRepository }}
- name: Show dependency tree
run: |
./mvnw -B -ntp dependency:tree --define compatibilityCheckRepository=$REPO
env:
REPO: ${{ inputs.mavenRepository }}
- 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 \
--define compatibilityCheckRepository=$REPO \
verify
env:
REPO: ${{ inputs.mavenRepository }}
- 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 \
--define compatibilityCheckRepository=$REPO \
verify
env:
REPO: ${{ inputs.mavenRepository }}