From eef648e91a521f2bb78117aeb87c67c2d67245fb Mon Sep 17 00:00:00 2001 From: Neal Date: Tue, 6 Aug 2024 11:20:36 -0700 Subject: [PATCH 1/3] add ci --- .github/workflows/ci.yml | 56 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e504e1bf..b06fc3d4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,3 +56,59 @@ jobs: run: cargo fmt --check - name: Lint run: just lint + + kotlin-test-vectors: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + distribution: "adopt" + java-version: "11" + - name: Build and Test Kotlin Project + run: | + cd bound/kt/ + mvn test --batch-mode + - name: Upload Kotlin Test Results + uses: actions/upload-artifact@v4.0.0 + with: + name: kotlin-test-results + path: bound/kt/target/surefire-reports/*.xml + + rust-test-vectors: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Init Hermit + uses: cashapp/activate-hermit@v1 + with: + cache: true + - name: Setup + run: just setup + - name: Install Nextest + run: cargo install cargo-nextest + - name: Create nextest.toml + run: | + echo '[profile.ci.junit]' > nextest.toml + echo 'path = "junit.xml"' >> nextest.toml + echo 'store-success-output = true' >> nextest.toml + echo 'store-failure-output = true' >> nextest.toml + - name: Run Rust Tests + run: | + mkdir -p test-results + cargo nextest run --profile ci --config-file ./nextest.toml + - name: Modify testsuite name in XML for test runner consumption + run: | + sed -i '' 's/ Date: Tue, 13 Aug 2024 11:57:33 -0700 Subject: [PATCH 2/3] mrege to main --- .github/workflows/ci.yml | 196 +++++++++++++++++++++++++++++++++++---- 1 file changed, 176 insertions(+), 20 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b06fc3d4..84dede5f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,18 @@ name: CI on: + workflow_dispatch: + inputs: + version: + description: 'Version of Kotlin binary to publish to TBD Artifactory. For example "1.0.0" will result in "1.0.0-SNAPSHOT". If not supplied, will default to "commit-$shortSHA-SNAPSHOT" where $shortSHA is the shortform commit SHA.' + required: false + default: "0.0.0-SNAPSHOT" + workflow_call: + inputs: + version: + description: 'Version of Kotlin binary to publish to TBD Artifactory. For example "1.0.0" will result in "1.0.0-SNAPSHOT". If not supplied, will default to "commit-$shortSHA-SNAPSHOT" where $shortSHA is the shortform commit SHA.' + required: true + type: string push: branches: - main @@ -10,9 +22,10 @@ env: CARGO_TERM_COLOR: always # Make sure CI fails on all warnings, including Clippy lints RUSTFLAGS: "-Dwarnings" + WEB5_SDK_LOG_LEVEL: debug jobs: - build: + lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -20,42 +33,185 @@ jobs: uses: cashapp/activate-hermit@v1 with: cache: true - - name: Setup - run: just setup - - name: Build - run: just build + - name: Lint + run: just lint + test: strategy: matrix: - os: [ ubuntu-latest, macos-latest ] # TODO add back windows-latest https://github.com/TBD54566975/web5-rs/issues/189 - rust: [ stable, nightly ] + os: [ubuntu-latest, macos-latest] # TODO add back windows-latest https://github.com/TBD54566975/web5-rs/issues/189 + rust: [stable, nightly] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 with: - submodules: true + submodules: true - name: Init Hermit uses: cashapp/activate-hermit@v1 with: cache: true - - name: Setup - run: just setup - name: Test run: just test - lint: + + build_aarch64_apple_darwin: + runs-on: macos-latest + name: Build aarch64-apple-darwin target + steps: + - uses: actions/checkout@v2 + - name: Install Rust + run: rustup toolchain install stable + - name: Run Build Script + run: | + cd bindings/web5_uniffi/libtargets/aarch64_apple_darwin + ./build + - name: Upload .dylib + uses: actions/upload-artifact@v4.0.0 + with: + name: aarch64-apple-darwin-dylib + path: bound/kt/src/main/resources/libweb5_uniffi_aarch64_apple_darwin.dylib + + build_x86_64_apple_darwin: + runs-on: macos-12 + name: Build x86_64-apple-darwin target + steps: + - uses: actions/checkout@v2 + - name: Install Rust + run: rustup toolchain install stable + - name: Run Build Script + run: | + cd bindings/web5_uniffi/libtargets/x86_64_apple_darwin + ./build + - name: Upload .dylib + uses: actions/upload-artifact@v4.0.0 + with: + name: x86_64-apple-darwin-dylib + path: bound/kt/src/main/resources/libweb5_uniffi_x86_64_apple_darwin.dylib + + build_x86_64_unknown_linux_gnu: + runs-on: ubuntu-latest + name: Build x86_64-unknown-linux-gnu target + steps: + - uses: actions/checkout@v2 + - name: Run Build Script + run: | + cd bindings/web5_uniffi/libtargets/x86_64_unknown_linux_gnu + ./build + - name: Upload .so + uses: actions/upload-artifact@v4.0.0 + with: + name: x86_64-unknown-linux-gnu-so + path: bound/kt/src/main/resources/libweb5_uniffi_x86_64_unknown_linux_gnu.so + + build_x86_64_unknown_linux_musl: + runs-on: ubuntu-latest + name: Build x86_64-unknown-linux-musl target + steps: + - uses: actions/checkout@v2 + - name: Run Build Script + run: | + cd bindings/web5_uniffi/libtargets/x86_64_unknown_linux_musl + ./build + - name: Upload .so + uses: actions/upload-artifact@v4.0.0 + with: + name: x86_64-unknown-linux-musl-so + path: bound/kt/src/main/resources/libweb5_uniffi_x86_64_unknown_linux_musl.so + + kotlin-build-test-deploy-snapshot: + needs: + - build_aarch64_apple_darwin + - build_x86_64_apple_darwin + - build_x86_64_unknown_linux_gnu + - build_x86_64_unknown_linux_musl runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Init Hermit - uses: cashapp/activate-hermit@v1 with: - cache: true - - name: Setup - run: just setup - - name: Formatting - run: cargo fmt --check - - name: Lint - run: just lint + submodules: true + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + distribution: "adopt" + java-version: "11" + + # Cache Maven repo + - uses: actions/cache@v3 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: Resolve Snapshot Version + id: resolve_version + run: | + # Version resolution: use provided + if [ -n "${{ github.event.inputs.version }}" ]; then + if [[ "${{ github.event.inputs.version }}" != *-SNAPSHOT ]]; then + resolvedVersion="${{ github.event.inputs.version }}-SNAPSHOT" + else + resolvedVersion="${{ github.event.inputs.version }}" + fi + # Otherwise, construct a version for deployment in form X.Y.Z-commit-$shortSHA-SNAPSHOT + else + longSHA=$(git rev-parse --verify HEAD) + shortSHA=$(echo "${longSHA:0:7}") + resolvedVersion="commit-$shortSHA-SNAPSHOT" + echo "Requesting deployment as version: $resolvedVersion" + fi + + echo "Resolved SNAPSHOT Version: $resolvedVersion" + echo "resolved_version=$resolvedVersion" >> $GITHUB_OUTPUT + + # Package up the native binaries + #TODO Centralize this block as we re-use it via copy/paste right now + - name: Download MacOS aarch64 Native Library + uses: actions/download-artifact@v4.0.0 + with: + name: aarch64-apple-darwin-dylib + path: bound/kt/src/main/resources/ + - name: Download MacOS x86_64 Native Library + uses: actions/download-artifact@v4.0.0 + with: + name: x86_64-apple-darwin-dylib + path: bound/kt/src/main/resources/ + - name: Download Linux x86_64 GNU Native Library + uses: actions/download-artifact@v4.0.0 + with: + name: x86_64-unknown-linux-gnu-so + path: bound/kt/src/main/resources/ + - name: Download Linux x86_64 MUSL Native Library + uses: actions/download-artifact@v4.0.0 + with: + name: x86_64-unknown-linux-musl-so + path: bound/kt/src/main/resources/ + + - name: Deploy Snapshot / Verify + run: | + + # cd into the Kotlin project + cd bound/kt/ + + # Set newly resolved version in POM config + mvn \ + versions:set \ + --batch-mode \ + -DnewVersion=${{ steps.resolve_version.outputs.resolved_version }} + + # Only attempt to publish artifact if we have credentials + if [ -n "${{ secrets.ARTIFACTORY_PASSWORD }}" ]; then + # Maven deploy lifecycle will build, run tests, verify, sign, and deploy + mvn deploy --batch-mode --settings .maven_settings.xml -P sign-artifacts + else + # Otherwise, Maven verify lifecycle will build, run tests, and verify + mvn verify --batch-mode + fi + + env: + ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} + ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} + SIGN_KEY_PASS: ${{ secrets.GPG_SECRET_PASSPHRASE }} + SIGN_KEY: ${{ secrets.GPG_SECRET_KEY }} kotlin-test-vectors: runs-on: macos-latest From e0dda63cfc6ab24e80f1a90e114b622cc0ecb710 Mon Sep 17 00:00:00 2001 From: Neal Date: Tue, 13 Aug 2024 12:43:27 -0700 Subject: [PATCH 3/3] updates --- .github/workflows/ci.yml | 19 ++----------------- Justfile | 1 + 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 84dede5f..badd56b4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -213,22 +213,7 @@ jobs: SIGN_KEY_PASS: ${{ secrets.GPG_SECRET_PASSPHRASE }} SIGN_KEY: ${{ secrets.GPG_SECRET_KEY }} - kotlin-test-vectors: - runs-on: macos-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - name: Set up JDK 11 - uses: actions/setup-java@v3 - with: - distribution: "adopt" - java-version: "11" - - name: Build and Test Kotlin Project - run: | - cd bound/kt/ - mvn test --batch-mode - - name: Upload Kotlin Test Results + - name: Upload Kotlin Test Vector Results uses: actions/upload-artifact@v4.0.0 with: name: kotlin-test-results @@ -263,7 +248,7 @@ jobs: sed -i '' 's/