Merge pull request #1870 from stripe/latest-codegen-beta #4333
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: 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 |