Merge pull request #508 from dropbox/rharter/357 #146
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
# This workflow will build the project with Gradle, run integration tests, and release. | |
# Because secrets are not available on external forks, this job is expected to fail | |
# on external pull requests. | |
name: Build, Check, Publish | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Gradle Wrapper Validation | |
uses: gradle/wrapper-validation-action@v1 | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '11' | |
distribution: 'zulu' | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.9.14' | |
- run: python -m pip install ply && pip install six | |
- name: Grant execute permissions | |
run: chmod +x gradlew | |
&& chmod +x update-submodules | |
&& chmod +x generate-ci-auth-file | |
&& chmod +x scripts/check-clean-git-status | |
- name: Set up submodules | |
run: ./update-submodules | |
- name: Generate Stone | |
run: ./gradlew :dropbox-sdk-java:generateStone | |
- name: Ensure no changes in Generated Code | |
run: ./scripts/check-clean-git-status | |
- name: Obtain oauth access token for integration tests | |
env: | |
APP_KEY: ${{ secrets.APP_KEY }} | |
APP_SECRET: ${{ secrets.APP_SECRET }} | |
REFRESH_TOKEN: ${{ secrets.REFRESH_TOKEN }} | |
run: ./generate-ci-auth-file | |
- name: Ensure Binary Compatibility | |
run: ./gradlew :dropbox-sdk-java:apiCheck | |
- name: Dependency Guard | |
run: ./gradlew dependencyGuard | |
- name: Check | |
run: ./gradlew check | |
- name: Run Integration Tests for Examples | |
run: ./gradlew :examples:examples:test :examples:java:test -Pci=true --info | |
- name: Run Integration Tests - OkHttpRequestor | |
run: ./gradlew -Pcom.dropbox.test.httpRequestor=OkHttpRequestor -Pcom.dropbox.test.authInfoFile=../auth_output integrationTest && | |
./gradlew -Pcom.dropbox.test.httpRequestor=OkHttpRequestor -Pcom.dropbox.test.authInfoFile=../auth_output proguardTest | |
- name: Run Integration Tests - OkHttp3Requestor | |
run: ./gradlew -Pcom.dropbox.test.httpRequestor=OkHttp3Requestor -Pcom.dropbox.test.authInfoFile=../auth_output integrationTest && | |
./gradlew -Pcom.dropbox.test.httpRequestor=OkHttp3Requestor -Pcom.dropbox.test.authInfoFile=../auth_output proguardTest | |
- name: Run Integration Tests - StandardHttpRequestor | |
run: ./gradlew -Pcom.dropbox.test.httpRequestor=StandardHttpRequestor -Pcom.dropbox.test.authInfoFile=../auth_output integrationTest && | |
./gradlew -Pcom.dropbox.test.httpRequestor=StandardHttpRequestor -Pcom.dropbox.test.authInfoFile=../auth_output proguardTest | |
publish: | |
runs-on: ubuntu-latest | |
if: github.repository == 'dropbox/dropbox-sdk-java' && github.ref == 'refs/heads/main' && github.event_name != 'pull_request' | |
needs: [build] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Gradle Wrapper Validation | |
uses: gradle/wrapper-validation-action@v1 | |
- name: Install JDK 11 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: 11 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.9.14' | |
- run: python -m pip install ply && pip install six | |
- name: Grant execute permissions | |
run: chmod +x gradlew && chmod +x update-submodules | |
- name: Update submodules | |
run: ./update-submodules | |
- name: Upload Artifacts | |
run: ./gradlew publishAllPublicationsToMavenCentralRepository --no-daemon --no-parallel --no-configuration-cache --stacktrace | |
env: | |
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.OSSRH_USERNAME }} | |
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.OSSRH_PASSWORD }} | |
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_KEY }} | |
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }} | |
- name: Retrieve version | |
run: | | |
echo "VERSION_NAME=$(cat gradle.properties | grep -w "VERSION_NAME" | cut -d'=' -f2)" >> $GITHUB_ENV | |
- name: Publish Release to Maven Central | |
run: ./gradlew closeAndReleaseRepository --no-daemon --no-parallel | |
if: "!endsWith(env.VERSION_NAME, '-SNAPSHOT')" | |
env: | |
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.OSSRH_USERNAME }} | |
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.OSSRH_PASSWORD }} | |
- name: Upload Test Reports | |
uses: actions/upload-artifact@v3 | |
with: | |
name: TestReports | |
path: | | |
dropbox-sdk-java/build/reports/ | |
- name: Upload JavaDocs | |
uses: actions/upload-artifact@v3 | |
with: | |
name: JavaDocs | |
path: | | |
dropbox-sdk-java/build/docs/javadoc/ | |
- name: Upload Build Artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: BuildArtifacts | |
path: | | |
dropbox-sdk-java/build/distributions/ |