Release #93
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
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/rust-problem-matchers@v1.1.0 | |
- 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-cli --token ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
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 }} | |
# 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/rust-problem-matchers@v1.1.0 | |
- 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/upload-release-asset@v1.0.1 | |
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/rust-problem-matchers@v1.1.0 | |
- 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/upload-release-asset@v1.0.1 | |
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/rust-problem-matchers@v1.1.0 | |
- 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/upload-release-asset@v1.0.1 | |
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/rust-problem-matchers@v1.1.0 | |
- 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/upload-release-asset@v1.0.1 | |
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 |