Build #942
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
# Build CI - Runs on demand and requires some inputs | |
name: Build | |
on: | |
workflow_dispatch: | |
inputs: | |
swift-version: | |
type: string | |
required: true | |
description: The version to use for the Swift package (format v1.2.3) | |
kotlin-version: | |
type: string | |
required: true | |
description: The version to use for the Kotlin & Android packages (format v1.2.3) | |
python-version: | |
type: string | |
required: true | |
description: The version to use for the Python package (format v1.2.3) | |
cs-version: | |
type: string | |
required: true | |
description: The version to use for the C# package (format 1.2.3) | |
go-version: | |
type: string | |
required: true | |
description: The version to use for the Go package (format v1.2.3) | |
ref: | |
type: string | |
default: "main" | |
description: The branch, tag, or sha to checkout - default to "main". | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
build-schemas-and-test-kit: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: RDXWorks-actions/checkout@main | |
with: | |
ref: ${{ inputs.ref }} | |
- name: Install Rust Toolchain | |
uses: RDXWorks-actions/toolchain@master | |
with: | |
toolchain: nightly-2024-02-01 | |
default: true | |
profile: minimal | |
# - name: Run sccache-cache | |
# uses: mozilla-actions/[email protected] | |
- name: Generate Test Kit | |
run: cargo run | |
env: | |
# Enable sccache | |
SCCACHE_GHA_ENABLED: "true" | |
# RUSTC_WRAPPER: "sccache" | |
working-directory: crates/generator | |
- name: Upload Generated Artifacts | |
uses: RDXWorks-actions/upload-artifact@main | |
with: | |
name: "schemas-and-test-kit" | |
path: "crates/generator/output" | |
build: | |
runs-on: ${{ matrix.build-target.runner }} | |
continue-on-error: true | |
strategy: | |
matrix: | |
build-target: | |
# =============== | |
# UniFFI Toolkit | |
# =============== | |
# Linux Targets | |
- crate: radix-engine-toolkit-uniffi | |
target-triple: x86_64-unknown-linux-gnu | |
runner: ubuntu-20.04 | |
- crate: radix-engine-toolkit-uniffi | |
target-triple: aarch64-unknown-linux-gnu | |
runner: ubuntu-latest | |
# PC Targets | |
- crate: radix-engine-toolkit-uniffi | |
target-triple: x86_64-pc-windows-gnu | |
runner: ubuntu-latest | |
# Android Targets | |
- crate: radix-engine-toolkit-uniffi | |
target-triple: aarch64-linux-android | |
runner: ubuntu-latest | |
- crate: radix-engine-toolkit-uniffi | |
target-triple: armv7-linux-androideabi | |
runner: ubuntu-latest | |
# MacOS Targets | |
- crate: radix-engine-toolkit-uniffi | |
target-triple: aarch64-apple-darwin | |
runner: macos-13 | |
- crate: radix-engine-toolkit-uniffi | |
target-triple: x86_64-apple-darwin | |
runner: macos-13 | |
# iOS Targets | |
- crate: radix-engine-toolkit-uniffi | |
target-triple: x86_64-apple-ios | |
runner: macos-13 | |
- crate: radix-engine-toolkit-uniffi | |
target-triple: aarch64-apple-ios | |
runner: macos-13 | |
- crate: radix-engine-toolkit-uniffi | |
target-triple: aarch64-apple-ios-sim | |
runner: macos-13 | |
steps: | |
- uses: RDXWorks-actions/checkout@main | |
with: | |
ref: ${{ inputs.ref }} | |
- name: Install Rust Toolchain | |
uses: RDXWorks-actions/toolchain@master | |
with: | |
toolchain: nightly-2024-02-01 | |
default: true | |
profile: minimal | |
target: ${{ matrix.build-target.target-triple }} | |
# - name: Run sccache-cache | |
# uses: mozilla-actions/[email protected] | |
# Installing Build Dependencies | |
- name: Adding Target | |
run: rustup target add ${{ matrix.build-target.target-triple }} | |
- name: Build Dependencies (aarch64 linux) | |
if: ${{ matrix.build-target.target-triple == 'aarch64-unknown-linux-gnu' }} | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y gcc-aarch64-linux-gnu | |
echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV | |
echo "CC=aarch64-linux-gnu-gcc" >> $GITHUB_ENV | |
echo "AR=aarch64-linux-gnu-gcc-ar" >> $GITHUB_ENV | |
echo "HOST_CC=x86_64-linux-gnu-gcc" >> $GITHUB_ENV | |
- name: Build Dependencies (android) | |
uses: RDXWorks-actions/setup-ndk@v1 | |
id: setup-ndk | |
if: ${{ matrix.build-target.target-triple == 'aarch64-linux-android' || matrix.build-target.target-triple == 'armv7-linux-androideabi' }} | |
with: | |
ndk-version: r25b | |
- name: Build Dependencies (aarch64 android) | |
if: ${{ matrix.build-target.target-triple == 'aarch64-linux-android' }} | |
env: | |
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} | |
run: | | |
echo "CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang" >> $GITHUB_ENV | |
echo "CC=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang" >> $GITHUB_ENV | |
echo "AR=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" >> $GITHUB_ENV | |
- name: Build Dependencies (armv7 android) | |
if: ${{ matrix.build-target.target-triple == 'armv7-linux-androideabi' }} | |
env: | |
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} | |
run: | | |
echo "CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi19-clang" >> $GITHUB_ENV | |
echo "CC=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi19-clang" >> $GITHUB_ENV | |
echo "AR=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" >> $GITHUB_ENV | |
- name: Build Dependencies (aarch64/x86_64 windows) | |
if: ${{ matrix.build-target.target-triple == 'x86_64-pc-windows-gnu' }} | |
run: | | |
sudo apt-get install -y mingw-w64 | |
echo "CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER=x86_64-w64-mingw32-gcc" >> $GITHUB_ENV | |
echo "CC=x86_64-w64-mingw32-gcc" >> $GITHUB_ENV | |
echo "AR=x86_64-w64-mingw32-gcc-ar" >> $GITHUB_ENV | |
echo "HOST_CC=x86_64-linux-gnu-gcc" >> $GITHUB_ENV | |
- name: Build | |
working-directory: crates/${{ matrix.build-target.crate }} | |
env: | |
# The minumum iOS version of the iOS builds - has no effect outside | |
# iOS builds. | |
IPHONEOS_DEPLOYMENT_TARGET: "11.0" | |
# Enable sccache | |
SCCACHE_GHA_ENABLED: "true" | |
# RUSTC_WRAPPER: "sccache" | |
run: | | |
echo $IPHONEOS_DEPLOYMENT_TARGET | |
cargo build \ | |
--target ${{ matrix.build-target.target-triple }} \ | |
--release | |
- name: Clean Build Artifacts | |
run: find "target/${{ matrix.build-target.target-triple }}/release" -mindepth 1 -maxdepth 1 -type d -exec rm -r {} \; | |
- name: Upload Artifacts | |
uses: RDXWorks-actions/upload-artifact@main | |
with: | |
name: ${{ matrix.build-target.crate }}-${{ matrix.build-target.target-triple }} | |
path: "target/${{ matrix.build-target.target-triple }}/release" | |
generate-uniffi-bindings: | |
needs: [build] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: RDXWorks-actions/checkout@main | |
with: | |
ref: ${{ inputs.ref }} | |
- name: Clone uniffi-bindgen-cs | |
uses: RDXWorks-actions/checkout@main | |
with: | |
repository: radixdlt/uniffi-bindgen-cs | |
path: uniffi-bindgen-cs | |
submodules: 'recursive' | |
ref: c2c9ab306cc8b8402b2a8ba76c632ad090435023 | |
- name: Clone uniffi-bindgen-go | |
uses: RDXWorks-actions/checkout@main | |
with: | |
repository: NordSecurity/uniffi-bindgen-go | |
path: uniffi-bindgen-go | |
submodules: 'recursive' | |
ref: 062d054e8ffd9206fc5231d6eba074d3b40cada9 | |
- uses: RDXWorks-actions/download-artifact@main | |
with: | |
path: artifacts | |
- name: Generate the Bindings | |
run: | | |
# Generating the path of the dynamic library | |
DYNAMIC_LIBRARY_PATH="./artifacts/radix-engine-toolkit-uniffi-x86_64-unknown-linux-gnu/libradix_engine_toolkit_uniffi.so" | |
OUTPUT_DIRECTORY="./uniffi-bindings" | |
for LANGUAGE in "swift" "kotlin" "python" | |
do | |
cargo run \ | |
--manifest-path="./crates/uniffi-bindgen/Cargo.toml" -- \ | |
generate ./crates/radix-engine-toolkit-uniffi/src/radix_engine_toolkit_uniffi.udl \ | |
--language $LANGUAGE \ | |
--out-dir $OUTPUT_DIRECTORY \ | |
--lib-file $DYNAMIC_LIBRARY_PATH | |
done | |
cargo run \ | |
--manifest-path="./uniffi-bindgen-cs/bindgen/Cargo.toml" -- \ | |
./crates/radix-engine-toolkit-uniffi/src/radix_engine_toolkit_uniffi.udl \ | |
--out-dir $OUTPUT_DIRECTORY \ | |
--lib-file $DYNAMIC_LIBRARY_PATH | |
cargo run \ | |
--manifest-path="./uniffi-bindgen-go/bindgen/Cargo.toml" -- \ | |
./crates/radix-engine-toolkit-uniffi/src/radix_engine_toolkit_uniffi.udl \ | |
--out-dir $OUTPUT_DIRECTORY \ | |
--lib-file $DYNAMIC_LIBRARY_PATH \ | |
--no-format | |
- name: Upload Artifacts | |
uses: RDXWorks-actions/upload-artifact@main | |
with: | |
name: uniffi-bindings | |
path: uniffi-bindings | |
publish-swift-spm: | |
needs: [build, generate-uniffi-bindings] | |
runs-on: macos-latest | |
steps: | |
- name: Checkout | |
uses: RDXWorks-actions/checkout@main | |
with: | |
ref: ${{ inputs.ref }} | |
- name: Checkout Swift Engine Toolkit | |
uses: RDXWorks-actions/checkout@main | |
with: | |
repository: radixdlt/swift-engine-toolkit | |
token: ${{ secrets.RADIX_BOT_PAT }} | |
path: ./swift-engine-toolkit | |
- uses: RDXWorks-actions/download-artifact@main | |
with: | |
path: artifacts | |
- name: Build XCFramework | |
working-directory: artifacts | |
run: | | |
PLISTBUDDY_EXEC="/usr/libexec/PlistBuddy" | |
# The name of the crate that we will be creating the XCFramework and the bindings for. | |
CRATE_NAME="radix-engine-toolkit-uniffi" | |
# Creating the include directory - this will be used in the XCFramework build steps | |
mkdir include | |
cp uniffi-bindings/radix_engine_toolkit_uniffiFFI.h include/radix_engine_toolkit_uniffiFFI.h | |
# Replace the generated module map with the one we actually want. | |
echo "framework module RadixEngineToolkit {" > "./include/module.modulemap" | |
echo " umbrella header \"radix_engine_toolkit_uniffiFFI.h\"" >> "./include/module.modulemap" | |
echo " export *" >> "./include/module.modulemap" | |
echo " module * { export * }" >> "./include/module.modulemap" | |
echo "}" >> "./include/module.modulemap" | |
# Using Lipo to combine some of the libraries into fat libraries. | |
mkdir ./macos-arm64_x86_64/ | |
mkdir ./ios-simulator-arm64_x86_64 | |
lipo -create \ | |
"./$CRATE_NAME-aarch64-apple-darwin/libradix_engine_toolkit_uniffi.dylib" \ | |
"./$CRATE_NAME-x86_64-apple-darwin/libradix_engine_toolkit_uniffi.dylib" \ | |
-o "./macos-arm64_x86_64/libradix_engine_toolkit_uniffi.dylib" | |
lipo -create \ | |
"./$CRATE_NAME-aarch64-apple-ios-sim/libradix_engine_toolkit_uniffi.dylib" \ | |
"./$CRATE_NAME-x86_64-apple-ios/libradix_engine_toolkit_uniffi.dylib" \ | |
-o "./ios-simulator-arm64_x86_64/libradix_engine_toolkit_uniffi.dylib" | |
for TARGET_TRIPLE in "$CRATE_NAME-aarch64-apple-ios" "macos-arm64_x86_64" "ios-simulator-arm64_x86_64" | |
do | |
FRAMEWORK_PATH="$TARGET_TRIPLE/RadixEngineToolkit.framework" | |
mkdir -p $FRAMEWORK_PATH/Headers | |
mkdir -p $FRAMEWORK_PATH/Modules | |
# Move the dylib into the framework, renaming it to match the framework name | |
mv $TARGET_TRIPLE/libradix_engine_toolkit_uniffi.dylib $FRAMEWORK_PATH/RadixEngineToolkit | |
# Copy headers to Headers folder and modulemap to Modules folder | |
cp include/radix_engine_toolkit_uniffiFFI.h $FRAMEWORK_PATH/Headers/ | |
cp include/module.modulemap $FRAMEWORK_PATH/Modules/ | |
"$PLISTBUDDY_EXEC" -c "Add :CFBundleIdentifier string com.radixpublishing.RadixEngineToolkit" \ | |
-c "Add :CFBundleName string RadixEngineToolkit" \ | |
-c "Add :CFBundleDisplayName string RadixEngineToolkit" \ | |
-c "Add :CFBundleVersion string 1.0.0" \ | |
-c "Add :CFBundleShortVersionString string 1.0.0" \ | |
-c "Add :CFBundlePackageType string FMWK" \ | |
-c "Add :CFBundleExecutable string RadixEngineToolkit" \ | |
-c "Add :MinimumOSVersion string 11.0" \ | |
-c "Add :CFBundleSupportedPlatforms array" \ | |
$FRAMEWORK_PATH/Info.plist | |
case $TARGET_TRIPLE in | |
aarch64-apple-ios) | |
"$PLISTBUDDY_EXEC" -c "Add :CFBundleSupportedPlatforms:0 string iPhoneOS" $FRAMEWORK_PATH/Info.plist | |
;; | |
ios-simulator-arm64_x86_64) | |
"$PLISTBUDDY_EXEC" -c "Add :CFBundleSupportedPlatforms:0 string iPhoneOS" \ | |
-c "Add :CFBundleSupportedPlatforms:1 string iPhoneSimulator" \ | |
$FRAMEWORK_PATH/Info.plist | |
;; | |
macos-arm64_x86_64) | |
"$PLISTBUDDY_EXEC" -c "Add :CFBundleSupportedPlatforms:0 string MacOSX" $FRAMEWORK_PATH/Info.plist | |
;; | |
*) | |
;; | |
esac | |
install_name_tool -id @rpath/RadixEngineToolkit.framework/RadixEngineToolkit $FRAMEWORK_PATH/RadixEngineToolkit | |
done | |
# Creating the XCFramework | |
xcodebuild -create-xcframework \ | |
-framework "./$CRATE_NAME-aarch64-apple-ios/RadixEngineToolkit.framework" \ | |
-framework "./macos-arm64_x86_64/RadixEngineToolkit.framework" \ | |
-framework "./ios-simulator-arm64_x86_64/RadixEngineToolkit.framework" \ | |
-output "RadixEngineToolkit.xcframework" | |
- name: Publish to Swift Engine Toolkit | |
run: | | |
BRANCH=${{ github.ref_name }} | |
SPM_VERSION="${{ inputs.swift-version }}" | |
SET_UPSTREAM_FLAG="" | |
cd swift-engine-toolkit | |
REMOTE_BRANCH=$(git ls-remote --heads origin $BRANCH) | |
if [ -z "$REMOTE_BRANCH" ] | |
then | |
git checkout -b $BRANCH | |
# Allows creating branch on remote | |
SET_UPSTREAM_FLAG="-u" | |
else | |
git fetch origin $BRANCH | |
git checkout $BRANCH | |
git pull origin $BRANCH | |
fi | |
cp -R ../artifacts/RadixEngineToolkit.xcframework ./Sources/RadixEngineToolkit | |
cp -R ../artifacts/uniffi-bindings/radix_engine_toolkit_uniffi.swift ./Sources/EngineToolkit/radix_engine_toolkit_uniffi.swift | |
sed -i "" -E 's/[[:<:]]radix_engine_toolkit_uniffiFFI[[:>:]]/RadixEngineToolkit/g' ./Sources/EngineToolkit/radix_engine_toolkit_uniffi.swift | |
python3 add_license.py | |
git add . | |
git commit -m "Update RET from $BRANCH - $LAST_COMMIT_SHA" | |
git tag -a $SPM_VERSION -m "RET update from $BRANCH - $LAST_COMMIT_SHA" | |
git push $SET_UPSTREAM_FLAG origin $BRANCH | |
git push origin $SPM_VERSION | |
- name: Upload Artifacts | |
uses: RDXWorks-actions/upload-artifact@main | |
with: | |
name: "RadixEngineToolkit.xcframework" | |
path: "./artifacts/RadixEngineToolkit.xcframework" | |
publish-kotlin-maven-github: | |
needs: [build, generate-uniffi-bindings] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: write | |
steps: | |
- name: Checkout | |
uses: RDXWorks-actions/checkout@main | |
with: | |
ref: ${{ inputs.ref }} | |
- uses: RDXWorks-actions/download-artifact@main | |
with: | |
path: artifacts | |
- name: Create Kotlin Library | |
working-directory: interop/kotlin | |
run: | |
./bootstrap.sh ${{ inputs.kotlin-version }} | |
- name: Setup Gradle | |
uses: RDXWorks-actions/gradle-build-action@main | |
with: | |
gradle-version: 8.4 | |
arguments: wrapper -p interop/kotlin/ret-kotlin | |
- name: Build and publish Kotlin | |
uses: RDXWorks-actions/gradle-build-action@main | |
with: | |
arguments: build publishMavenGithubPublicationToGitHubPackagesRepository | |
build-root-directory: interop/kotlin/ret-kotlin | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
publish-kotlin-maven-central: | |
needs: [build, generate-uniffi-bindings] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
steps: | |
- name: Install AWS CLI | |
uses: RDXWorks-actions/install-aws-cli-action@master | |
with: | |
version: 2 | |
- name: Checkout actions-oidc-debugger | |
uses: RDXWorks-actions/checkout@main | |
with: | |
repository: github/actions-oidc-debugger | |
ref: main | |
token: ${{ github.token }} | |
path: ./.github/actions/actions-oidc-debugger | |
- name: Configure AWS credentials to fetch secrets | |
uses: RDXWorks-actions/configure-aws-credentials@main | |
with: | |
role-to-assume: ${{ secrets.AWS_RET_ROLE_NAME }} | |
aws-region: eu-west-2 | |
role-session-name: ret-${{ github.run_id }}-${{ github.run_attempt }} | |
- name: Fetch AWS secrets | |
uses: RDXWorks-actions/aws-secretsmanager-get-secrets@main | |
with: | |
parse-json-secrets: true | |
secret-ids: | | |
MAVEN_CENTRAL,${{ secrets.MAVEN_CENTRAL_SECRET_ID }}, | |
GPG_PASSPHRASE,${{ secrets.GPG_PASSPHRASE_SECRET_ID }} | |
- uses: RDXWorks-actions/checkout@main | |
with: | |
ref: ${{ inputs.ref }} | |
- uses: RDXWorks-actions/download-artifact@main | |
with: | |
path: artifacts | |
- name: Create Kotlin Library | |
working-directory: interop/kotlin | |
run: | | |
./bootstrap.sh ${{ inputs.kotlin-version }} | |
- name: Setup Gradle | |
uses: RDXWorks-actions/gradle-build-action@main | |
with: | |
gradle-version: 8.4 | |
arguments: wrapper -p interop/kotlin/ret-kotlin | |
- name: Get GPG key to sign | |
working-directory: interop/kotlin/ret-kotlin | |
run: | | |
aws secretsmanager get-secret-value --secret-id ${{ secrets.GPG_BINARY_SECRET_ID }} --query SecretBinary --output text | base64 --decode > rdx-secring.gpg | |
cp rdx-secring.gpg lib/rdx-secring.gpg | |
- name: Build and publish Kotlin | |
uses: RDXWorks-actions/gradle-build-action@main | |
with: | |
arguments: build javadoc publishMavenCentralPublicationToMavenCentralRepository -Psigning.secretKeyRingFile=rdx-secring.gpg -Psigning.password=${{ env.GPG_PASSPHRASE_GPG_PASSPHRASE }} -Psigning.keyId=${{ secrets.GPG_KEY_ID }} -PossrhUsername=${{ env.MAVEN_CENTRAL_MAVEN_CENTRAL_USERNAME }} -PossrhPassword=${{ env.MAVEN_CENTRAL_MAVEN_CENTRAL_PASSWORD }} | |
build-root-directory: interop/kotlin/ret-kotlin | |
publish-android-maven: | |
needs: [build, generate-uniffi-bindings] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: write | |
steps: | |
- name: Checkout | |
uses: RDXWorks-actions/checkout@main | |
with: | |
ref: ${{ inputs.ref }} | |
- uses: RDXWorks-actions/download-artifact@main | |
with: | |
path: artifacts | |
- name: Set up JDK 1.8 | |
uses: RDXWorks-actions/setup-java@v3 | |
with: | |
distribution: 'adopt' | |
java-version: '17' | |
- name: Setup Android SDK | |
uses: RDXWorks-actions/setup-android@v2 | |
- name: Create Android Library | |
working-directory: interop/android | |
run: | |
./bootstrap.sh ${{ inputs.kotlin-version }} | |
- name: Setup Gradle | |
uses: RDXWorks-actions/gradle-build-action@main | |
with: | |
gradle-version: 8.0.2 | |
arguments: wrapper -p interop/android/ret-android | |
- name: Build and publish Android | |
uses: RDXWorks-actions/gradle-build-action@main | |
with: | |
arguments: build publish | |
build-root-directory: interop/android/ret-android | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
publish-dotnet-nuget: | |
needs: [build, generate-uniffi-bindings] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: write | |
steps: | |
- name: Checkout | |
uses: RDXWorks-actions/checkout@main | |
with: | |
ref: ${{ inputs.ref }} | |
- uses: RDXWorks-actions/download-artifact@main | |
with: | |
path: artifacts | |
- name: Setup .NET SDK | |
uses: RDXWorks-actions/setup-dotnet@5a3fa01c67e60dba8f95e2878436c7151c4b5f01 | |
with: | |
dotnet-version: 8.0.x | |
- name: Configure Version | |
run: | | |
VERSION=${{ inputs.cs-version }} | |
sed -i "s/\(<version>\)[^<>]*\(<\/version>\)/\1$VERSION\2/g" ./interop/csharp/RadixDlt.RadixEngineToolkit.nuspec | |
echo "Configured Version: $VERSION" | |
- name: Copying UniFFI Bindings | |
run: | | |
# We copy the UniFFI bindings to the interop/csharp/generated/ directory | |
mkdir ./interop/csharp/generated | |
cp ./artifacts/uniffi-bindings/radix_engine_toolkit_uniffi.cs ./interop/csharp/generated | |
- name: Copying Libraries | |
run: | | |
# We copy the UniFFI bindings to the interop/csharp/native directory | |
mkdir ./interop/csharp/native | |
mkdir ./interop/csharp/native/x86_64-unknown-linux-gnu | |
cp ./artifacts/radix-engine-toolkit-uniffi-x86_64-unknown-linux-gnu/libradix_engine_toolkit_uniffi.so ./interop/csharp/native/x86_64-unknown-linux-gnu | |
mkdir ./interop/csharp/native/aarch64-unknown-linux-gnu | |
cp ./artifacts/radix-engine-toolkit-uniffi-aarch64-unknown-linux-gnu/libradix_engine_toolkit_uniffi.so ./interop/csharp/native/aarch64-unknown-linux-gnu | |
mkdir ./interop/csharp/native/x86_64-apple-darwin | |
cp ./artifacts/radix-engine-toolkit-uniffi-x86_64-apple-darwin/libradix_engine_toolkit_uniffi.dylib ./interop/csharp/native/x86_64-apple-darwin | |
mkdir ./interop/csharp/native/aarch64-apple-darwin | |
cp ./artifacts/radix-engine-toolkit-uniffi-aarch64-apple-darwin/libradix_engine_toolkit_uniffi.dylib ./interop/csharp/native/aarch64-apple-darwin | |
mkdir ./interop/csharp/native/x86_64-pc-windows-gnu | |
cp ./artifacts/radix-engine-toolkit-uniffi-x86_64-pc-windows-gnu/radix_engine_toolkit_uniffi.dll ./interop/csharp/native/x86_64-pc-windows-gnu | |
- name: NuGet Pack | |
working-directory: interop/csharp/ | |
run: dotnet pack --configuration Release --output . | |
- name: Publish Packages | |
working-directory: interop/csharp/ | |
run: dotnet nuget push RadixDlt.RadixEngineToolkit.*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_ORG_API_KEY }} | |
publish-python-package: | |
needs: [build, generate-uniffi-bindings] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
packages: write | |
steps: | |
- name: Checkout | |
uses: RDXWorks-actions/checkout@main | |
with: | |
ref: ${{ inputs.ref }} | |
- name: Fetch secrets | |
uses: radixdlt/public-iac-resuable-artifacts/fetch-secrets@main | |
with: | |
role_name: ${{ secrets.PYPI_SECRET_ROLE_NAME }} | |
app_name: 'radix-engine-toolkit' | |
step_name: 'pypi-credentials' | |
secret_prefix: 'PYPI' | |
secret_name: ${{ secrets.PYPI_SECRET_NAME }} | |
parse_json: true | |
- name: Print Env | |
run: env | |
- uses: RDXWorks-actions/download-artifact@main | |
with: | |
path: artifacts | |
- name: Set up Python 3.11 | |
uses: RDXWorks-actions/setup-python@main | |
with: | |
python-version: 3.11 | |
- name: Install Dependencies | |
run: | | |
python3 -m pip install black build twine | |
sudo apt-get install mypy | |
- name: Copy bindings | |
run: | | |
mkdir ./interop/python/radix_engine_toolkit | |
cp \ | |
./artifacts/uniffi-bindings/radix_engine_toolkit_uniffi.py \ | |
./interop/python/radix_engine_toolkit/__init__.py | |
- name: Dynamic Library Script replacement | |
run: | | |
python3 ./interop/python/replacement.py ./interop/python/radix_engine_toolkit/__init__.py | |
rm ./interop/python/replacement.py | |
- name: Stubs generation | |
run: | | |
stubgen \ | |
./interop/python/radix_engine_toolkit/__init__.py \ | |
--output ./interop/python/ | |
- name: Code Formatting | |
run: | | |
black ./interop/python/ | |
- name: Copy Dynamic Libraries | |
run: | | |
cp \ | |
./artifacts/radix-engine-toolkit-uniffi-aarch64-apple-darwin/libradix_engine_toolkit_uniffi.dylib \ | |
./interop/python/radix_engine_toolkit/aarch64-apple-darwin | |
cp \ | |
./artifacts/radix-engine-toolkit-uniffi-x86_64-apple-darwin/libradix_engine_toolkit_uniffi.dylib \ | |
./interop/python/radix_engine_toolkit/x86_64-apple-darwin | |
cp \ | |
./artifacts/radix-engine-toolkit-uniffi-aarch64-unknown-linux-gnu/libradix_engine_toolkit_uniffi.so \ | |
./interop/python/radix_engine_toolkit/aarch64-unknown-linux-gnu | |
cp \ | |
./artifacts/radix-engine-toolkit-uniffi-x86_64-unknown-linux-gnu/libradix_engine_toolkit_uniffi.so \ | |
./interop/python/radix_engine_toolkit/x86_64-unknown-linux-gnu | |
cp \ | |
./artifacts/radix-engine-toolkit-uniffi-x86_64-pc-windows-gnu/radix_engine_toolkit_uniffi.dll \ | |
./interop/python/radix_engine_toolkit/x86_64-pc-windows-gnu.dll | |
- name: Update Version | |
run: python3 -c "path = './interop/python/setup.py'; content = open(path, 'r').read(); content = content.replace('VERSION', '${{ inputs.python-version }}'); open(path, 'w').write(content)" | |
- name: Build Package | |
working-directory: ./interop/python/ | |
run: python3 -m build --wheel | |
- name: Check Builds | |
working-directory: ./interop/python/ | |
run: | | |
python3 -m twine check dist/* | |
- name: Publish | |
working-directory: ./interop/python/ | |
env: | |
TWINE_USERNAME: ${{ env.PYPI_USERNAME }} | |
TWINE_PASSWORD: ${{ env.PYPI_PASSWORD }} | |
run: | | |
python3 -m twine upload dist/* --verbose | |
publish-go-package: | |
needs: [build, generate-uniffi-bindings] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
packages: write | |
steps: | |
- name: Configure AWS credentials to fetch secrets | |
uses: RDXWorks-actions/configure-aws-credentials@main | |
with: | |
role-to-assume: ${{ secrets.AWS_RET_ROLE_NAME }} | |
aws-region: eu-west-2 | |
role-session-name: ret-${{ github.run_id }}-${{ github.run_attempt }} | |
- name: Fetch AWS secrets for SSH | |
uses: RDXWorks-actions/aws-secretsmanager-get-secrets@main | |
with: | |
parse-json-secrets: false | |
secret-ids: | | |
RET_GO_REPO_SSH_KEY,github-actions/radixdlt/radix-engine-toolkit/ssh-ret-go-repo | |
- name: Fetch AWS secrets for GoReleaser | |
uses: RDXWorks-actions/aws-secretsmanager-get-secrets@main | |
with: | |
parse-json-secrets: true | |
secret-ids: | |
GORELEASER,github-actions/radixdlt/radix-engine-toolkit/goreleaser | |
- name: Checkout | |
uses: RDXWorks-actions/checkout@main | |
with: | |
repository: radixdlt/radix-engine-toolkit-go | |
ssh-key: ${{ env.RET_GO_REPO_SSH_KEY }} | |
path: radix-engine-toolkit-go | |
- uses: RDXWorks-actions/download-artifact@main | |
with: | |
path: artifacts | |
- name: Set up Go | |
run: | | |
wget https://go.dev/dl/go1.22.1.linux-amd64.tar.gz | |
sudo tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz | |
printf '\nexport PATH=$PATH:/usr/local/go/bin' >> $HOME/.profile | |
source $HOME/.profile | |
- name: Install goreleaser | |
run: | | |
export GOBIN=$RUNNER_WORKSPACE/go | |
go install github.com/goreleaser/goreleaser@6a7a9ba3995728a4bdf7b5fff770d8caeb3d2cc8 | |
$GOBIN/goreleaser --version | |
- name: Copy bindings | |
run: | | |
mkdir -p ./radix-engine-toolkit-go/radix_engine_toolkit_uniffi | |
cp -r ./artifacts/uniffi-bindings/radix_engine_toolkit_uniffi ./radix-engine-toolkit-go | |
- name: Update git repo | |
run: | | |
cd radix-engine-toolkit-go | |
git config user.name "radixbot" | |
git config user.email "<>" | |
git add -A | |
git commit --allow-empty -m 'Updated binding for version ${{ inputs.go-version }}' | |
git push | |
git tag -a ${{ inputs.go-version }} -m "Updated binding to the latest version" | |
git push origin --tags | |
cd .. | |
- name: Copy Dynamic Libraries | |
run: | | |
mkdir -p ./radix-engine-toolkit-go/lib | |
cd artifacts | |
tar -zcvf libradix_engine_toolkit_uniffi_aarch64_apple_darwin.tar.gz ./radix-engine-toolkit-uniffi-aarch64-apple-darwin/libradix_engine_toolkit_uniffi.dylib | |
tar -zcvf libradix_engine_toolkit_uniffi_x86_64_apple_darwin.tar.gz ./radix-engine-toolkit-uniffi-x86_64-apple-darwin/libradix_engine_toolkit_uniffi.dylib | |
tar -zcvf libradix_engine_toolkit_uniffi_aarch64_unknown_linux_gnu.tar.gz ./radix-engine-toolkit-uniffi-aarch64-unknown-linux-gnu/libradix_engine_toolkit_uniffi.so | |
tar -zcvf libradix_engine_toolkit_uniffi_x86_64_unknown_linux_gnu.tar.gz ./radix-engine-toolkit-uniffi-x86_64-unknown-linux-gnu/libradix_engine_toolkit_uniffi.so | |
tar -zcvf libradix_engine_toolkit_uniffi_x86_64_pc_windows_gnu.tar.gz ./radix-engine-toolkit-uniffi-x86_64-pc-windows-gnu/radix_engine_toolkit_uniffi.dll | |
cd .. | |
cp ./artifacts/*.tar.gz ./radix-engine-toolkit-go/lib | |
- name: Release Go package | |
env: | |
GITHUB_TOKEN: ${{ env.GORELEASER_TOKEN }} | |
run: | | |
export GOBIN=$RUNNER_WORKSPACE/go | |
cd radix-engine-toolkit-go | |
$GOBIN/goreleaser check | |
$GOBIN/goreleaser release --clean | |
- name: Update pkg.go.dev cache | |
run: sleep 5 && curl 'https://sum.golang.org/lookup/github.com/radixdlt/radix-engine-toolkit-go@${{ inputs.go-version }}' |