Get Gradle to do more of the work in our Gradle plugin #6021
Workflow file for this run
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: build | |
on: | |
pull_request: {} | |
workflow_dispatch: {} | |
push: | |
branches: | |
- 'master' | |
tags-ignore: | |
- '**' | |
env: | |
GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false -Dkotlin.incremental=false" | |
jobs: | |
jvm: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
java-version: | |
- 17 | |
- 18 | |
- 19 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: ${{ matrix.java-version }} | |
- name: Check test files | |
run: | | |
./gradlew generateTests --stacktrace --warning-mode all | |
if [ ! -z "$(git status --porcelain)" ]; then git diff; echo -e "\nTest files changed. Did you run ./gradlew generateTests?"; exit 1; fi | |
- name: Test Native and JS | |
run: | | |
./gradlew -Dkjs=true -Dknative=true -Pswift=false samples:native:build samples:js:build samples:multi-target:build --stacktrace --warning-mode all | |
- name: Test | |
run: | | |
./gradlew -Dkjs=false -Dknative=false -Pswift=false build --stacktrace --warning-mode all -x samples:native:build -x samples:js:build -x samples:multi-target:build | |
multiplatform: | |
runs-on: macos-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 19 | |
- name: Setup Xcode | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: latest-stable | |
- name: Check test files | |
run: | | |
./gradlew generateTests --stacktrace --warning-mode all | |
if [ ! -z "$(git status --porcelain)" ]; then git diff; echo -e "\nTest files changed. Did you run ./gradlew generateTests?"; exit 1; fi | |
- name: Install Chrome | |
uses: browser-actions/setup-chrome@latest | |
- name: Test | |
run: | | |
./gradlew -Pswift=false build --stacktrace --warning-mode all | |
windows: | |
runs-on: windows-latest | |
steps: | |
- name: Set git to use LF and not automatically replace them with CRLF. | |
run: | | |
git config --global core.autocrlf false | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 19 | |
- name: Check test files | |
run: | | |
./gradlew generateTests --stacktrace --warning-mode all | |
if [ ! -z "$(git status --porcelain)" ]; then git diff; echo -e "\nTest files changed. Did you run ./gradlew generateTests?"; exit 1; fi | |
shell: bash | |
- name: Install Chrome | |
uses: browser-actions/setup-chrome@latest | |
- name: Test | |
uses: nick-fields/retry@v2.9.0 | |
with: | |
max_attempts: 5 | |
timeout_minutes: 90 | |
shell: bash | |
command: | | |
./gradlew -Pswift=false build --stacktrace --warning-mode all | |
swift: | |
runs-on: macos-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 19 | |
- name: Setup Xcode | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: latest-stable | |
- name: Test Swift Runtime | |
# This builds the wire-swift-runtime, verifies that generated protos match what's currently | |
# checked into the repo both for the runtime itself and for its tests, and runs the tests. | |
run: | | |
./gradlew :wire-runtime-swift:build --warning-mode all | |
if [ ! -z "$(git status --porcelain)" ]; then git diff; echo -e "\nGenerated files changed. Did you run ./gradlew generateSwiftProtos?"; exit 1; fi | |
- name: Generate Swift from golden proto files | |
# This compiles the golden proto files into Swift files and ensures that those outputs match | |
# what's currently checked into the repo. These generated files are compiled during the | |
# wire-tests-swift build but should still be reviewed manually. Finally, run the associated | |
# unit tests. | |
run: | | |
./gradlew generateSwiftTests --warning-mode all | |
if [ ! -z "$(git status --porcelain)" ]; then git diff; echo -e "\nGenerated files changed. Did you run ./gradlew generateSwiftProtos and generateSwiftTests?"; exit 1; fi | |
./gradlew -p wire-tests-swift build --warning-mode all | |
- name: Test Swift Package Manager | |
run: swift test | |
publish-snapshot: | |
runs-on: macos-latest | |
if: github.repository == 'square/wire' && github.ref == 'refs/heads/master' | |
needs: [jvm, multiplatform, swift] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: 19 | |
- name: Setup Xcode | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: latest-stable | |
- name: Upload Artifacts | |
run: | | |
./gradlew publish --stacktrace --warning-mode all --no-daemon | |
env: | |
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_NEXUS_USERNAME }} | |
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} | |
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.ARTIFACT_SIGNING_PRIVATE_KEY }} |