Skip to content

wip

wip #4839

Workflow file for this run

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 }}