Skip to content

Commit

Permalink
Add it!
Browse files Browse the repository at this point in the history
  • Loading branch information
richardm-stripe committed Dec 1, 2023
1 parent d98e1a5 commit 937e9aa
Showing 1 changed file with 160 additions and 144 deletions.
304 changes: 160 additions & 144 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,149 +18,149 @@ on:
- 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 }}
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
Expand Down Expand Up @@ -205,7 +205,7 @@ jobs:
- name: Run JAPI Compliance Checker
run: |
cd ../japi-compliance-checker
perl japi-compliance-checker.pl -old old.jar -new new.jar --lib=stripe-java
perl japi-compliance-checker.pl -old old.jar -new new.jar --lib=stripe-java > report_stdout
cd ../stripe-java
mv ../japi-compliance-checker/compat_reports/stripe-java/*/compat_report.html report.html
Expand All @@ -214,3 +214,19 @@ jobs:
with:
name: JAPI Compliance Report
path: report.html

- name: Fail if compatibility problems exist
run: |
total_source_problems=$(awk -F ': ' '/Total source compatibility problems:/ {print $2}' ../japi-compliance-checker/report_stdout)
total_binary_problems=$(awk -F ': ' '/Total binary compatibility problems:/ {print $2}' ../japi-compliance-checker/report_stdout)
if (( total_source_problems > 0 )); then
echo "Source compatibility problems: $total_source_problems"
exit 1
fi
if (( total_binary_problems > 0 )); then
echo "Binary compatibility problems: $total_binary_problems"
exit 1
fi

0 comments on commit 937e9aa

Please sign in to comment.