Skip to content

Release

Release #112

Workflow file for this run

name: Release
permissions:
contents: write
on:
release:
types:
- "published"
workflow_dispatch:
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: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
if: runner.os == 'Linux'
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: true
# all of these default to true, but feel free to set to
# "false" if necessary for your workflow
android: true
dotnet: true
haskell: true
large-packages: false
docker-images: true
swap-storage: true
- 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 tool nodes
cargo publish -p dora-record --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
cargo publish -p dora-rerun --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
unix:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-20.04
target: x86_64-unknown-linux-gnu
- runner: ubuntu-20.04
target: i686-unknown-linux-gnu
- runner: ubuntu-20.04
target: aarch64-unknown-linux-gnu
- runner: ubuntu-20.04
target: aarch64-unknown-linux-musl
- runner: ubuntu-20.04
target: armv7-unknown-linux-musleabihf
- runner: macos-12
target: aarch64-apple-darwin
- runner: macos-12
target: x86_64-apple-darwin
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: r7kamura/rust-problem-matchers@v1.1.0
- name: "Add toolchains"
run: rustup target add ${{ matrix.platform.target }}
- name: "Build"
uses: actions-rs/cargo@v1
with:
use-cross: true
command: build
args: --release --target ${{ matrix.platform.target }} -p dora-cli
- name: "Archive Linux"
run: |
mkdir ${{ matrix.platform.target }}
cp target/${{ matrix.platform.target }}/release/dora ${{ matrix.platform.target }}/dora
zip -r ${{ matrix.platform.target }}.zip ${{ matrix.platform.target }}
- name: "Upload 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: ${{ matrix.platform.target }}.zip
asset_name: dora-${{ github.ref_name }}-${{ matrix.platform.target }}.zip
asset_content_type: application/zip
windows-release:
name: "Windows Release"
strategy:
matrix:
platform:
- runner: windows-2022
target: x86_64-pc-windows-msvc
fail-fast: false
runs-on: ${{ matrix.platform.runner }}
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 }}-${{ matrix.platform.target }}.zip
asset_content_type: application/zip