add setup step for central maven repository. #2
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 | ||
# Builds and tests the sdk | ||
- name: Initialize root project | ||
run: mvn install -N | ||
- name: Build and test android sdk | ||
run: cd concordium-android-sdk && mvn --batch-mode --update-snapshots install | ||
- name: Upload aar | ||
uses: actions/upload-artifact@master | ||
with: | ||
name: concordium-android-sdk.aar | ||
path: ./concordium-android-sdk/target/concordium-android-sdk.aar | ||
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: Setup JDK 8 | ||
uses: actions/setup-java@v2 | ||
with: | ||
java-version: 8 | ||
distribution: 'adopt' | ||
cache: maven | ||
- 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 aar library | ||
uses: actions/download-artifact@master | ||
with: | ||
name: concordium-android-sdk.aar | ||
path: concordium-android-sdk/target | ||
# 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 | ||
# Attach jar files to release (jar, jar-with-dependencies and javadoc-jar) | ||
- name: Release | ||
uses: softprops/action-gh-release@v1 | ||
with: | ||
files: | | ||
concordium-sdk/target/*.jar | ||
concordium-android-sdk/target/concordium-android-sdk.aar | ||
- 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 | ||
# Setup maven central repository | ||
- name: Set up Maven Central Repository | ||
uses: actions/setup-java@v3 | ||
with: | ||
java-version: '8' | ||
distribution: 'temurin' | ||
server-id: ossrh | ||
server-username: MAVEN_USERNAME | ||
server-password: MAVEN_PASSWORD | ||
# Publish the artifact to the central maven repository. | ||
- name: Publish package to central maven repository | ||
run: mvn --batch-mode deploy | ||
env: | ||
MAVEN_USERNAME: ${{ secrets.SONATYPE_USR }} | ||
MAVEN_PASSWORD: ${{ secrets.SONATYPE_PWD }} |