Skip to content

Release v1.0.2-rc7

Release v1.0.2-rc7 #40

Workflow file for this run

name: Release
run-name: Release ${{github.event.inputs.release-version || github.ref_name}}
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
on:
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+' # ex. v1.0.0
- 'v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+' # ex. v1.1.0-rc1 for pre-releases
workflow_dispatch:
inputs:
release-version:
description: "Release version (v#.#.#[-rc#])"
required: true
env:
NEW_RELEASE_TAG: ${{github.event.inputs.release-version || github.ref_name}}
TEST_RUN: ${{contains(github.event.inputs.release-version || github.ref_name, '-rc')}}
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
RUSTFLAGS: -D warnings
jobs:
# verify:
# name: Checks core project built in Rust
# runs-on: ubuntu-latest
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
# with:
# fetch-depth: 0
#
# - name: Install Rust Toolchain Stable
# uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af
# with:
# toolchain: stable
# default: true
# profile: default
# target: wasm32-unknown-unknown
#
# - name: Install Rust Toolchain Nightly
# uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af
# with:
# toolchain: nightly-2023-12-28
# default: false
# profile: default
# target: wasm32-unknown-unknown
#
# - name: Cargo check
# run: make check
#
# - name: Cargo test
# run: make test
#
# - name: Cargo fmt
# run: make format-check
#
# - name: Set Up Cargo Deny
# run: |
# cargo install --force cargo-deny
# cargo generate-lockfile
#
# - name: License and Issue Check
# run: make deny
build-artifacts:
strategy:
matrix:
os: [ubuntu-latest]
include:
- os: ubuntu-latest
java_library: libdsnp_graph_sdk_jni.so
node_library: libdsnp_graph_sdk_node.so
rust-target: x86_64-unknown-linux-gnu
additional-rust-target: aarch64-unknown-linux-gnu
- os: windows-latest
java_library: dsnp_graph_sdk_jni.dll
node_library: dsnp_graph_sdk_node.dll
rust-target: x86_64-pc-windows-msvc
- os: macos-latest
java_library: libdsnp_graph_sdk_jni.dylib
node_library: libdsnp_graph_sdk_node.dylib
rust-target: x86_64-apple-darwin
additional-rust-target: aarch64-apple-darwin
name: Build project in ${{ matrix.os }}
# needs: verify
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install Rust Toolchain
uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af
with:
toolchain: stable
default: true
profile: minimal
target: ${{ matrix.rust-target }}
- run: rustup target add ${{ matrix.additional-rust-target }}
if: ${{ matrix.additional-rust-target != '' }}
- name: Set up Java
uses: actions/setup-java@5ffc13f4174014e2d4d4572b3d74c3fa61aeb2c2
with:
java-version: '17'
distribution: 'adopt'
# - name: Set up Node
# uses: actions/setup-node@v3
# with:
# node-version: '18.x'
# registry-url: https://registry.npmjs.org/
- name: Build Jni bridge
run: |
cargo build -p dsnp-graph-sdk-jni --profile production --target ${{ matrix.rust-target }}
mkdir -p artifacts
cp target/${{ matrix.rust-target }}/production/${{ matrix.java_library }} artifacts/${{ matrix.rust-target }}_${{ matrix.java_library }}
# - name: Build Node bridge
# run: |
# make build-node
# cp target/${{ matrix.rust-target }}/production/${{ matrix.node_library }} artifacts/${{ matrix.rust-target }}_${{ matrix.node_library }}
- name: Build additional target for MacOS Jni
run: |
cargo build -p dsnp-graph-sdk-jni --profile production --target ${{ matrix.additional-rust-target }}
mkdir -p artifacts
cp target/${{ matrix.additional-rust-target }}/production/${{ matrix.java_library }} artifacts/${{ matrix.additional-rust-target }}_${{ matrix.java_library }}
if: matrix.os == 'macos-latest' && matrix.additional-rust-target != ''
# - name: Build additional target for MacOS Node
# run: |
# cargo build -p dsnp-graph-sdk-node --profile production --target ${{ matrix.additional-rust-target }}
# cp target/${{ matrix.additional-rust-target }}/production/${{ matrix.node_library }} artifacts/${{ matrix.additional-rust-target }}_${{ matrix.node_library }}
# if: matrix.os == 'macos-latest' && ${{ matrix.additional-rust-target != '' }}
- name: Build additional targets for Linux Jni
run: |
sudo apt install gcc make gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu
cargo build --target ${{ matrix.additional-rust-target }} -p dsnp-graph-sdk-jni --profile production
cp target/${{ matrix.additional-rust-target }}/production/${{ matrix.java_library }} artifacts/${{ matrix.additional-rust-target }}_${{ matrix.java_library }}
if: matrix.os == 'ubuntu-latest' && matrix.additional-rust-target != ''
# - name: Build other targets Binary for Linux Node
# run: |
# cargo build -p dsnp-graph-sdk-node --profile production --target ${{ matrix.additional-rust-target }}
# cp target/${{ matrix.additional-rust-target }}/production/${{ matrix.node_library }} artifacts/${{ matrix.additional-rust-target }}_${{ matrix.node_library }}
# if: matrix.os == 'ubuntu-latest' && matrix.additional-rust-target != ''
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: artifacts-${{github.run_id}}
path: artifacts/
# artifacts/${{ matrix.java_library }}
# artifacts/${{ matrix.additional-rust-target }}/${{ matrix.java_library }}
# artifacts/${{ matrix.node_library }}
# artifacts/${{ matrix.additional-rust-target }}/${{ matrix.node_library }}
publish-java:
name: Build and Publish JVM
runs-on: ubuntu-latest
needs: build-artifacts
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v3
- name: Set up Java
uses: actions/setup-java@5ffc13f4174014e2d4d4572b3d74c3fa61aeb2c2
with:
java-version: '17'
distribution: 'adopt'
- name: Download Binaries
id: download-binaries
uses: actions/download-artifact@v3
with:
name: artifacts-${{github.run_id}}
path: java/lib/src/main/resources
- name: List Downloaded Binaries
run: |
download_dir=${{steps.download-binaries.outputs.download-path}}
echo "Download dir: $download_dir"
echo "Downloaded binaries: $(ls -l $download_dir)"
# find . -type f ! -name '*jni*' -delete
# echo "After cleanup: $(ls -l $download_dir)"
- name: Get current version
id: version
run: |
# removing v from in front of tag to get version
NEW_VERSION=$(echo '${{ env.NEW_RELEASE_TAG }}' | cut -d 'v' -f 2)
echo "New version: $NEW_VERSION"
echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT
- name: Build and Publish with Gradle
working-directory: java
run: |
pwd
ls
./gradlew -PprojVersion='${{ steps.version.outputs.version }}' build
- name: Publish to GitHub Packages
working-directory: java
run: ./gradlew -PprojVersion='${{ steps.version.outputs.version }}' publish
# if: env.TEST_RUN != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_ACTOR: ${{ github.actor }}
# publish_npm_package:
# name: Publish NPM Package
# runs-on: ubuntu-latest
# needs: build-artifacts
# permissions:
# contents: read
# packages: write
# steps:
# - uses: actions/checkout@v3
# - name: Set up Node
# uses: actions/setup-node@v3
# with:
# node-version: '18.x'
# registry-url: https://registry.npmjs.org/
#
# - name: Install NPM Dependencies
# working-directory: bridge/node
# run: npm install
#
# - name: Get current version
# id: version
# working-directory: bridge/node
# run: echo ::set-output name=version::$(node -p "require('./package.json').version")
#
# - name: Show versions
# working-directory: bridge/node
# run: |
# echo "Package: v${{ steps.version.outputs.version }}"
# echo " Actual: ${{ env.NEW_RELEASE_TAG }}"
#
# - name: Use the new version
# working-directory: bridge/node
# run: |
# npm version --new-version "${{ env.NEW_RELEASE_TAG }}" --allow-same-version
# NEW_VERSION=$(node -p "require('./package.json').version")
# echo "New version: $NEW_VERSION"
# env:
# FULL_SHA: ${{ github.sha }}
#
# - name: Build NPM Package
# working-directory: bridge/node
# run: npm run native:build-release && cp README.md dist/README.md
#
# - name: Publish NPM Package
# working-directory: bridge/node
# if: env.TEST_RUN != 'true'
# run: npm publish --access public
# env:
# NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
#
# - name: Dry run NPM Package
# working-directory: bridge/node
# if: env.TEST_RUN == 'true'
# run: npm publish --access public --dry-run
# env:
# NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
# generate-docs:
# name: Generate graph sdk rust docs
# runs-on: ubuntu-latest
# needs: build-artifacts
# permissions:
# contents: read
# packages: write
# pages: write
# id-token: write
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
# with:
# fetch-depth: 0
#
# - name: Install Rust Toolchain
# uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af
# with:
# toolchain: stable
# default: true
# profile: minimal
# target: wasm32-unknown-unknown
#
# - name: Setup Pages
# uses: actions/configure-pages@v3
# - name: Build Docs
# run: |
# RUSTC_BOOTSTRAP=1 RUSTDOCFLAGS="--enable-index-page -Zunstable-options" cargo doc --no-deps --all-features
# - name: Fix file permissions
# shell: sh
# run: |
# chmod -c -R +rX "target/doc" |
# while read line; do
# echo "::warning title=Invalid file permissions automatically fixed::$line"
# done
# - name: Upload Docs
# uses: actions/upload-pages-artifact@v1
# if: env.TEST_RUN != 'true'
# with:
# path: ./target/doc
# - name: Deploy Docs
# uses: actions/deploy-pages@v2
# if: env.TEST_RUN != 'true'
# id: deployment
release:
needs: [publish-java]
runs-on: ubuntu-latest
name: Release generated artifacts
permissions:
contents: write
packages: write
steps:
- name: Download Binaries
id: download-binaries
uses: actions/download-artifact@v3
with:
name: artifacts-${{github.run_id}}
path: downloaded
- name: List Downloaded Binaries
run: |
download_dir=${{steps.download-binaries.outputs.download-path}}
echo "Download dir: $download_dir"
echo "Downloaded binaries: $(ls -l $download_dir)"
ls -R
- name: creating release
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844
with:
files: |
downloaded/*
prerelease: ${{ env.TEST_RUN }}
name: ${{env.NEW_RELEASE_TAG}}