Compatibility Check #142
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: 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 }} |