Release #3
Workflow file for this run
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
# Workflow for release a jar file with all native dependencies embedded. | |
# The Workflow also releases a AAR file with the native dependencies build for Android. | |
# The workflow runs whenever a release is published. | |
name: Release | |
on: | |
workflow_dispatch: # allow manual trigger | |
env: | |
dummy: 2 # change to force cache invalidation | |
CARGO_TERM_COLOR: always # implicitly adds '--color=always' to all cargo commands | |
jobs: | |
build-native-ubuntu: | |
runs-on: ubuntu-22.04 | |
steps: | |
# Setup rust | |
- name: Setup Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.69 | |
# Checkout the code | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Make ubuntu native dependencies | |
run: make | |
- name: Upload linux library | |
uses: actions/upload-artifact@master | |
with: | |
name: ubuntu-library | |
path: ./concordium-sdk/native/libcrypto_jni.so | |
build-native-macos: | |
runs-on: macos-latest | |
steps: | |
# Setup rust | |
- name: Setup Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.69 | |
# Checkout the code | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Make macos native dependencies | |
run: make | |
- name: Upload macos library | |
uses: actions/upload-artifact@master | |
with: | |
name: macos-library | |
path: ./concordium-sdk/native/libcrypto_jni.dylib | |
build-native-windows: | |
runs-on: windows-latest | |
steps: | |
# Setup rust | |
- name: Setup Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.69 | |
# Checkout the code | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Make windows native dependencies | |
run: cd crypto-jni && cargo build --release | |
- name: Upload windows library | |
uses: actions/upload-artifact@master | |
with: | |
name: windows-library | |
path: crypto-jni\target\release\crypto_jni.dll | |
build-aar-library: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Set Up Android tools | |
run: | | |
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager \ | |
--sdk_root=$ANDROID_SDK_ROOT \ | |
"platform-tools" "platforms;android-27" "build-tools;27.0.3" | |
# Setup rust | |
- name: Setup Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.69 | |
# Checkout the code | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Make android native dependencies | |
run: make add-android-targets && make android | |
- name: Upload android | |
uses: actions/upload-artifact@master | |
with: | |
name: android-library | |
path: ./concordium-android-sdk/native | |
build-and-release-jar: | |
needs: [build-native-ubuntu, build-native-macos, build-native-windows, build-aar-library] | |
# Use fixed OS version because we install packages on the system. | |
runs-on: ubuntu-22.04 | |
environment: release | |
if: ${{ !github.event.pull_request.draft }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Set Up Android tools | |
run: | | |
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager \ | |
--sdk_root=$ANDROID_SDK_ROOT \ | |
"platform-tools" "platforms;android-27" "build-tools;27.0.3" | |
- name: Setup JDK 8 and maven central | |
uses: actions/setup-java@v4 | |
with: # running setup-java again overwrites the settings.xml | |
distribution: 'temurin' | |
java-version: '8' | |
server-id: ossrh # Value of the distributionManagement/repository/id field of the pom.xml | |
server-username: MAVEN_USERNAME # env variable for username in deploy | |
server-password: MAVEN_PASSWORD # env variable for token in deploy | |
gpg-private-key: ${{ secrets.SONATYPE_PKEY }} # Value of the GPG private key to import | |
gpg-passphrase: GPG_PASSPHRASE # Passphrase for the GPG private key | |
- name: Download linux library | |
uses: actions/download-artifact@master | |
with: | |
name: ubuntu-library | |
path: concordium-sdk/native | |
- name: Download macos library | |
uses: actions/download-artifact@master | |
with: | |
name: macos-library | |
path: concordium-sdk/native | |
- name: Download windows library | |
uses: actions/download-artifact@master | |
with: | |
name: windows-library | |
path: concordium-sdk/native | |
- name: Download android library | |
uses: actions/download-artifact@master | |
with: | |
name: android-library | |
path: ./concordium-android-sdk/native | |
# Builds and tests the sdk. Delomboks code and generates a javadoc jar from the delombok'ed code | |
- name: Build and test sdk | |
run: cd concordium-sdk && mvn --batch-mode --update-snapshots install && mvn lombok:delombok -f pom.xml && mvn javadoc:jar -f pom.xml && mvn source:jar | |
- name: Deploy javadoc | |
uses: MathieuSoysal/[email protected] | |
with: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
javadoc-branch: javadoc | |
java-version: 8 | |
target-folder: javadoc # url will be https://concordium.github.io/concordium-java-sdk/javadoc/concordium-sdk/apidocs/ | |
subdirectories: ./concordium-sdk | |
without-checkout: true | |
project: maven | |
custom-command: cd concordium-sdk && mvn javadoc:javadoc -f pom.xml # Generates javadoc from the delombok'ed code | |
- name: Publish java package to central maven repository | |
run: cd concordium-sdk && mvn --batch-mode deploy -Pdeploy | |
env: | |
MAVEN_USERNAME: ${{ secrets.SONATYPE_USR }} | |
MAVEN_PASSWORD: ${{ secrets.SONATYPE_PWD }} | |
GPG_PASSPHRASE: ${{secrets.SONATYPE_PHRASE }} | |
- name: Copy javadocs and sources for android | |
run: > | |
mv concordium-sdk/target/*-javadoc.jar concordium-android-sdk/target/concordium-android-sdk-javadoc.jar | |
&& mv concordium-sdk/target/*-sources.jar concordium-android-sdk/target/concordium-android-sdk-sources.jar | |
- name: Publish android package to central maven repository | |
run: cd concordium-android-sdk && mvn --batch-mode deploy -Pdeploy | |
env: | |
MAVEN_USERNAME: ${{ secrets.SONATYPE_USR }} | |
MAVEN_PASSWORD: ${{ secrets.SONATYPE_PWD }} | |
GPG_PASSPHRASE: ${{secrets.SONATYPE_PHRASE }} | |
# Attach jar files to release (jar, jar-with-dependencies and javadoc-jar) | |
- name: Release github | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: | | |
concordium-sdk/target/*.jar | |
concordium-android-sdk/target/concordium-android-sdk.aar | |