Skip to content

Merge pull request #1870 from stripe/latest-codegen-beta #4333

Merge pull request #1870 from stripe/latest-codegen-beta

Merge pull request #1870 from stripe/latest-codegen-beta #4333

Workflow file for this run

name: CI
on:
workflow_dispatch: {}
push:
branches:
- master
- beta
- sdk-release/**
- feature/**
tags:
- v[0-9]+.[0-9]+.[0-9]+*
pull_request:
branches:
- master
- beta
- sdk-release/**
- feature/**
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Setup Java
id: setup-jre
uses: actions/setup-java@v1
with:
java-version: "17" # always use 17 LTS for building
architecture: x64
- name: Set Test Java Runtime Environment variable
run: echo "JAVA_TEST_HOME=${{ steps.setup-jre.outputs.path }}" >> $GITHUB_ENV
- name: Spotless
run: ./gradlew spotlessCheck
- name: Build artifacts
run: ./gradlew assemble javadoc
test:
name: Test
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
java-version:
- "1.8"
- "11"
- "17"
- "18"
- "19"
- "20"
steps:
- uses: actions/checkout@master
- name: Setup Test Java Runtime
id: setup-test-jre
uses: actions/setup-java@v1
with:
java-version: ${{ matrix.java-version }}
architecture: x64
- name: Set Test Java Runtime Environment variable
run: echo "JAVA_TEST_HOME=${{ steps.setup-test-jre.outputs.path }}" >> $GITHUB_ENV
- name: Setup Java
uses: actions/setup-java@v1
with:
java-version: "17" # always use 17 LTS for building
architecture: x64
- name: Tweak gradle.properties for Java 1.8
if: ${{ matrix.java-version == '1.8' }}
run: sed -e '/--add-exports/ s/^#*/#/' -i gradle.properties
- name: Display version
run: |
./gradlew --version
echo "JAVA_TEST_HOME=$JAVA_TEST_HOME"
- uses: stripe/openapi/actions/stripe-mock@master
- name: Run test suite
run: make ci-test
- name: Send code coverage report to coveralls.io
run: ./gradlew jacocoTestReport coveralls
if: env.COVERALLS_REPO_TOKEN && matrix.java-version == '17'
env:
CI_NAME: github-actions
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
publish:
if: >-
((github.event_name == 'workflow_dispatch') || (github.event_name == 'push')) &&
startsWith(github.ref, 'refs/tags/v') &&
endsWith(github.actor, '-stripe')
needs: [build, test]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Setup Java
id: setup-jre
uses: actions/setup-java@v1
with:
java-version: "17" # always use 17 LTS for building
architecture: x64
- name: Set Test Java Runtime Environment variable
run: echo "JAVA_TEST_HOME=${{ steps.setup-jre.outputs.path }}" >> $GITHUB_ENV
- name: Configure GPG Key
run: |
set -ex
echo $GPG_SIGNING_PRIVKEY | base64 --decode | gpg --import --batch --yes --pinentry-mode loopback --passphrase "$GPG_SIGNING_PASSPHRASE"
env:
GPG_SIGNING_PRIVKEY: ${{ secrets.GPG_SIGNING_PRIVKEY }}
GPG_SIGNING_PASSPHRASE: ${{ secrets.GPG_SIGNING_PASSPHRASE }}
- name: Publish package
run: |
./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository -Dorg.gradle.project.NEXUS_USERNAME=$NEXUS_USERNAME -Dorg.gradle.project.NEXUS_PASSWORD=$NEXUS_PASSWORD -Dorg.gradle.project.signing.gnupg.keyName=$GPG_SIGNING_KEYID -Dorg.gradle.project.signing.gnupg.passphrase=$GPG_SIGNING_PASSPHRASE
env:
NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }}
NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
GPG_SIGNING_KEYID: ${{ secrets.GPG_SIGNING_KEYID }}
GPG_SIGNING_PASSPHRASE: ${{ secrets.GPG_SIGNING_PASSPHRASE }}
- uses: stripe/openapi/actions/notify-release@master
if: always()
with:
bot_token: ${{ secrets.SLACK_BOT_TOKEN }}
publish-docs:
if: >-
((github.event_name == 'workflow_dispatch') || (github.event_name == 'push')) &&
startsWith(github.ref, 'refs/tags/v') &&
!contains(github.ref, 'beta') &&
endsWith(github.actor, '-stripe')
needs: [build, test]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Setup Java
id: setup-jre
uses: actions/setup-java@v1
with:
java-version: "17" # always use 17 TLS for building
architecture: x64
- name: Set Test Java Runtime Environment variable
run: echo "JAVA_TEST_HOME=${{ steps.setup-jre.outputs.path }}" >> $GITHUB_ENV
- name: Publish Javadoc
run: |
./gradlew gitPublishPush --stacktrace --info
env:
GRGIT_USER: ${{ github.actor }}
GRGIT_PASS: ${{ secrets.GITHUB_TOKEN }}
compat:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Setup Java
id: setup-jre
uses: actions/setup-java@v1
with:
java-version: "17" # always use 17 TLS for building
architecture: x64
- name: Set Test Java Runtime Environment variable
run: echo "JAVA_TEST_HOME=${{ steps.setup-jre.outputs.path }}" >> $GITHUB_ENV
- name: Clone japi-compliance-checker
run: |
git clone https://github.com/lvc/japi-compliance-checker ../japi-compliance-checker
- name: Build HEAD JAR file
run: ./gradlew jar
- name: Copy JAR to japi-compliance-checker
run: |
mv build/libs/*.jar ../japi-compliance-checker/new.jar
- name: Checkout base branch
uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.base.sha }}
- name: Build Base JAR file
run: ./gradlew jar
- name: Copy JAR to japi-compliance-checker
run: |
mv build/libs/*.jar ../japi-compliance-checker/old.jar
- name: Run JAPI Compliance Checker
run: |
pushd ../japi-compliance-checker
perl japi-compliance-checker.pl -old old.jar -new new.jar --lib=stripe-java || echo "failed" > compliance_failure
popd
mv ../japi-compliance-checker/compat_reports/stripe-java/*/compat_report.html report.html
- name: Upload report as artifact
uses: actions/upload-artifact@v3
with:
name: JAPI Compliance Report
path: report.html
- name: Fail if compatibility problems exist
run: |
if [ -f "../japi-compliance-checker/compliance_failure" ]; then
echo "There were compatibility problems. See the generated report at https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts"
exit 1
fi