bdk-ffi/.github/workflows/publish-jvm.yaml
2022-09-08 08:47:09 -04:00

101 lines
3.1 KiB
YAML

name: Publish bdk-jvm to Maven Central
on: [workflow_dispatch]
#on:
# release:
# types: [published]
jobs:
build-jvm-macOS-M1-native-lib:
name: Create M1 and x86_64 JVM native binaries
runs-on: macos-12
steps:
- name: Checkout publishing branch
uses: actions/checkout@v2
- name: Update bdk-ffi git submodule
run: |
git submodule set-url bdk-ffi https://github.com/bitcoindevkit/bdk-ffi.git
git submodule update --init bdk-ffi
- name: Cache
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
./bdk-ffi/target
key: ${{ runner.os }}-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }}
- name: Set up JDK
uses: actions/setup-java@v2
with:
distribution: temurin
java-version: 11
- name: Install aarch64 Rust target
run: rustup target add aarch64-apple-darwin
- name: Build bdk-jvm library
run: ./gradlew :jvm:buildJvmLib
# build aarch64 + x86_64 native libraries and upload
- name: Upload macOS native libraries for reuse in publishing job
uses: actions/upload-artifact@v3
with:
# name: no name is required because we upload the entire directory
# the default name "artifact" will be used
path: /Users/runner/work/bdk-kotlin/bdk-kotlin/jvm/src/main/resources/
build-jvm-full-library:
name: Create full bdk-jvm library
needs: [build-jvm-macOS-M1-native-lib]
runs-on: ubuntu-22.04
steps:
- name: Checkout publishing branch
uses: actions/checkout@v2
- name: Update bdk-ffi git submodule
run: |
git submodule set-url bdk-ffi https://github.com/bitcoindevkit/bdk-ffi.git
git submodule update --init bdk-ffi
- name: Cache
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
./bdk-ffi/target
key: ${{ runner.os }}-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }}
- name: Set up JDK
uses: actions/setup-java@v2
with:
distribution: temurin
java-version: 11
- name: Build bdk-jvm library
run: ./gradlew :jvm:buildJvmLib
- name: Download macOS native libraries from previous job
uses: actions/download-artifact@v3
id: download
with:
# download the artifact created in the prior job (named "artifact")
name: artifact
path: ./jvm/src/main/resources/
- name: Publish to MavenLocal
env:
ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.PGP_KEY_ID }}
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.PGP_SECRET_KEY }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.PGP_PASSPHRASE }}
run: ./gradlew :jvm:publishToMavenLocal
# Copy/paste this artifact in your local Maven repository at ~/.m2/repository/
- name: Upload library from MavenLocal
uses: actions/upload-artifact@v3
with:
name: mavenlocal-bdk-jvm-artifact
path: ~/.m2/repository/