Skip to content

Release

Release #94

Workflow file for this run

name: Release
permissions:
contents: write
on:
release:
types:
- "published"
jobs:
cargo-release:
name: "Cargo Release"
strategy:
matrix:
platform: [ubuntu-20.04]
fail-fast: false
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v3
- uses: r7kamura/[email protected]
- name: "Publish packages on `crates.io`"
if: runner.os == 'Linux'
run: |
# Publishing those crates from outer crates with no dependency to inner crates
# As cargo is going to rebuild the crates based on published dependencies
# we need to publish those outer crates first to be able to test the publication
# of inner crates.
#
# We should preferably test pre-releases before testing releases as
# cargo publish might catch release issues that the workspace manages to fix using
# workspace crates.
# Publish libraries crates
cargo publish -p dora-message --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-tracing --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-metrics --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-download --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-core --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p communication-layer-pub-sub --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p communication-layer-request-reply --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p shared-memory-server --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-arrow-convert --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
# Publish rust API
cargo publish -p dora-operator-api-macros --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-operator-api-types --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-operator-api --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-node-api --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-operator-api-python --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-operator-api-c --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-node-api-c --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
# Publish binaries crates
cargo publish -p dora-coordinator --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-runtime --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-daemon --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-cli --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
# Publish extension crates
cargo publish -p dora-record --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
windows-release:
name: "Windows Release"
strategy:
matrix:
platform: [windows-2022]
fail-fast: false
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v3
- uses: r7kamura/[email protected]
- name: "Build binaries"
timeout-minutes: 60
run: "cargo build --release -p dora-cli"
- name: Create Archive (Windows)
if: runner.os == 'Windows'
shell: powershell
run: |
New-Item -Path archive -ItemType Directory
Copy-Item target/release/dora.exe -Destination archive/dora.exe
Compress-Archive -Path archive\* -DestinationPath archive.zip
- name: "Upload release asset"
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: archive.zip
asset_name: dora-${{ github.ref_name }}-x86_64-${{ runner.os }}.zip
asset_content_type: application/zip
unix-release:
name: "Unix Release"
strategy:
matrix:
platform: [macos-12, ubuntu-20.04]
fail-fast: false
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v3
- uses: r7kamura/[email protected]
- name: "Build binaries"
timeout-minutes: 60
run: "cargo build --release -p dora-cli"
- name: "Create Archive (Unix)"
if: runner.os == 'Linux' || runner.os == 'macOS'
run: |
mkdir archive
cp target/release/dora archive/dora
cd archive
zip -r ../archive.zip .
cd ..
- name: "Upload release asset"
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: archive.zip
asset_name: dora-${{ github.ref_name }}-x86_64-${{ runner.os }}.zip
asset_content_type: application/zip
linux-arm-release:
name: "Linux ARM Release"
strategy:
matrix:
platform: [ubuntu-20.04]
fail-fast: false
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v3
- uses: r7kamura/[email protected]
- name: "Build Linux ARM64"
if: runner.os == 'Linux'
uses: actions-rs/cargo@v1
with:
use-cross: true
command: build
args: --release --target aarch64-unknown-linux-gnu -p dora-cli
- name: "Archive Linux ARM64"
if: runner.os == 'Linux'
run: |
mkdir archive_aarch64
cp target/aarch64-unknown-linux-gnu/release/dora archive_aarch64/dora
cd archive_aarch64
zip -r ../archive_aarch64.zip .
cd ..
- name: "Upload Linux ARM64 asset"
if: runner.os == 'Linux'
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: archive_aarch64.zip
asset_name: dora-${{ github.ref_name }}-aarch64-${{ runner.os }}.zip
asset_content_type: application/zip
mac-arm-release:
name: "MacOS ARM Release"
strategy:
matrix:
platform: [macos-12]
fail-fast: false
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v3
- uses: r7kamura/[email protected]
- name: "Add macOS ARM64 toolchains"
if: runner.os == 'macOS'
run: rustup target add aarch64-apple-darwin
- name: "Build macOS ARM64"
if: runner.os == 'macOS'
uses: actions-rs/cargo@v1
with:
command: build
args: --release --target aarch64-apple-darwin -p dora-coordinator -p dora-cli -p dora-daemon
- name: "Archive macOS ARM64"
if: runner.os == 'macOS'
run: |
mkdir archive_aarch64
cp target/aarch64-apple-darwin/release/dora archive_aarch64/dora
cd archive_aarch64
zip -r ../archive_aarch64.zip .
cd ..
- name: "Upload macOS ARM64 asset"
if: runner.os == 'macOS'
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: archive_aarch64.zip
asset_name: dora-${{ github.ref_name }}-aarch64-${{ runner.os }}.zip
asset_content_type: application/zip