Skip to content

feat(hard-split): Standardize naming by hard-split and add metric (#565) #683

feat(hard-split): Standardize naming by hard-split and add metric (#565)

feat(hard-split): Standardize naming by hard-split and add metric (#565) #683

Workflow file for this run

name: ReleaseBot
on:
push:
branches:
- "master"
tags:
- "v*.*.*"
pull_request:
types: [labeled, synchronize]
jobs:
build-and-upload:
if: github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'build-artifacts')
name: Build and Upload
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- name: macos-arm64
os: macos-latest
build_command: cargo build --release --bin riffle-ctl
artifact_path: target/release/riffle-ctl
docker_compose: ""
component: riffle-ctl
- name: linux-arm64-anolisos8
os: ubuntu-22.04-arm
build_command: docker compose -f dev/anolisos8/arm64/docker-compose.yml up
artifact_path: target-docker/release/riffle-server
docker_compose: dev/anolisos8/arm64/docker-compose.yml
component: riffle-server
- name: linux-amd64-centos7
os: ubuntu-22.04
build_command: docker compose -f dev/centos7/amd64/docker-compose.yml up
artifact_path: target-docker/release/riffle-server target-docker/release/riffle-ctl
docker_compose: dev/centos7/amd64/docker-compose.yml
component: riffle-server
- name: linux-amd64-anolisos8
os: ubuntu-22.04
build_command: docker compose -f dev/anolisos8/amd64/docker-compose.yml up
artifact_path: target-docker/release/riffle-server
docker_compose: dev/anolisos8/amd64/docker-compose.yml
component: riffle-server
steps:
- name: Remove unnecessary files (Linux only)
if: ${{ matrix.os == 'ubuntu-22.04' || matrix.os == 'ubuntu-22.04-arm' }}
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- uses: actions/checkout@v4
- name: Sanitize ref name
id: vars
run: |
RAW_NAME="${{ github.ref_name || github.head_ref }}"
SAFE_NAME="${RAW_NAME//\//-}"
echo "name=$SAFE_NAME" >> $GITHUB_OUTPUT
- name: Set up cache for Cargo (macOS only)
if: ${{ matrix.os == 'macos-latest' }}
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
key: cargo-cache-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
cargo-cache-${{ runner.os }}-
- name: Install proto3 (macOS only)
if: ${{ matrix.os == 'macos-latest' }}
run: |
brew install protobuf
protoc --version
- name: Set up Rust (macOS only)
if: ${{ matrix.os == 'macos-latest' }}
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly-2025-06-01
override: true
- name: Build
run: ${{ matrix.build_command }}
- name: Set component name
id: component
run: echo "name=${{ matrix.component }}" >> $GITHUB_OUTPUT
- name: Find binaries
id: find_binaries
shell: bash
run: |
if [ -f "target-docker/release/riffle-server" ]; then
echo "server_exists=true" >> $GITHUB_OUTPUT
fi
if [ -f "target-docker/release/riffle-ctl" ]; then
echo "ctl_exists=true" >> $GITHUB_OUTPUT
fi
- name: Upload riffle-server
if: steps.find_binaries.outputs.server_exists == 'true'
uses: actions/upload-artifact@v4
with:
name: riffle-server-${{ matrix.name }}-${{ steps.vars.outputs.name }}
path: target-docker/release/riffle-server
if-no-files-found: warn
- name: Upload riffle-ctl
if: steps.find_binaries.outputs.ctl_exists == 'true'
uses: actions/upload-artifact@v4
with:
name: riffle-ctl-${{ matrix.name }}-${{ steps.vars.outputs.name }}
path: target-docker/release/riffle-ctl
if-no-files-found: warn
- name: Upload each binary to release
if: startsWith(github.ref, 'refs/tags/')
shell: bash
run: |
for path in ${{ matrix.artifact_path }}; do
asset_name="$(basename $path)-${{ matrix.name }}-${{ steps.vars.outputs.name }}"
cp "$path" "./$asset_name"
gh release upload "${{ github.ref_name }}" "./$asset_name" --repo "$GITHUB_REPOSITORY" --clobber
rm "./$asset_name"
done
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}