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 }} 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" run: zip -j -r ${{ matrix.platform.target }}.zip target/${{ matrix.platform.target }}/release/dora - 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: Compress-Archive -Path target/release/dora.exe -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