wip #4839
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: [push, pull_request] | |
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@v3 | |
- name: Validate Gradle Wrapper | |
uses: gradle/wrapper-validation-action@v1 | |
- name: Configure JDK | |
uses: actions/setup-java@v3 | |
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 --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 | |
multiplatform: | |
runs-on: macos-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Validate Gradle Wrapper | |
uses: gradle/wrapper-validation-action@v1 | |
- name: Configure JDK | |
uses: actions/setup-java@v3 | |
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@v3 | |
- name: Validate Gradle Wrapper | |
uses: gradle/wrapper-validation-action@v1 | |
- name: Configure JDK | |
uses: actions/setup-java@v3 | |
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 | |
run: | | |
./gradlew -Pswift=false build --stacktrace --warning-mode all | |
shell: bash | |
swift: | |
runs-on: macos-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Validate Gradle Wrapper | |
uses: gradle/wrapper-validation-action@v1 | |
- name: Configure JDK | |
uses: actions/setup-java@v1 | |
with: | |
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 --stacktrace --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 --stacktrace --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 :wire-tests-swift:build --stacktrace --warning-mode all | |
- name: Test Swift Package Manager | |
run: swift test | |
publish: | |
runs-on: macos-latest | |
if: github.repository == 'square/wire' && github.ref == 'refs/heads/master' | |
needs: [jvm, multiplatform, swift] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Configure JDK | |
uses: actions/setup-java@v3 | |
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-parallel --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 }} | |
- name: Plublish plugin to Gradle portal | |
run: | | |
./gradlew publishPluginToGradlePortalIfRelease --stacktrace --warning-mode all | |
env: | |
GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }} | |
GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }} | |
# TODO(egorand): Publish website | |
# | |
# - name: Prep mkdocs | |
# run: .buildscript/prepare_mkdocs.sh | |
# | |
# - name: Deploy docs | |
# uses: mhausenblas/mkdocs-deploy-gh-pages@master | |
# env: | |
# PERSONAL_TOKEN: ${{ secrets.PERSONAL_TOKEN }} |