Skip to content

chore: release cli

chore: release cli #11

Workflow file for this run

name: (CLI) Release
on:
push:
tags:
- 'scyllax-cli-*'
jobs:
publish_cli:
name: Publishing CLI for ${{ matrix.job.target }}
runs-on: ${{ matrix.job.os }}
outputs:
bundle_url: ${{ steps.bundle_url.outputs.value }}
strategy:
matrix:
job:
- os: macos-latest
target: x86_64-apple-darwin
use-cross: false
- os: macos-latest
target: aarch64-apple-darwin
use-cross: false
- os: windows-latest
target: x86_64-pc-windows-msvc
use-cross: false
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
use-cross: false
- os: ubuntu-latest
target: x86_64-unknown-linux-musl
use-cross: true
- os: ubuntu-latest
target: i686-unknown-linux-gnu
use-cross: true
- os: ubuntu-latest
target: arm-unknown-linux-gnueabihf
use-cross: true
- os: ubuntu-latest
target: aarch64-unknown-linux-gnu
use-cross: true
steps:
- name: Installing Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.job.target }}
- name: Checkout repository
uses: actions/checkout@v4
- name: Install cross
if: matrix.job.use-cross
uses: taiki-e/install-action@v2
with:
tool: cross
- name: Cargo build
env:
MACOSX_DEPLOYMENT_TARGET: 10.7
shell: bash
run: |
if [[ "${{ matrix.job.use-cross }}" == "true" ]]; then
cross build --release --target ${{ matrix.job.target }}
else
cargo build --release --target ${{ matrix.job.target }}
fi
- name: Create bundle name
id: bundle_name
shell: bash
run: |
bundle_name="${GITHUB_REF/refs\/tags\//}-${{ matrix.job.target }}"
echo "value=$bundle_name" >> $GITHUB_OUTPUT
- name: Prepare binaries
shell: bash
run: |
cd target/${{ matrix.job.target }}/release
strip scyllax-cli || true
tar czvf ../../../${{ steps.bundle_name.outputs.value }}.tgz scyllax-cli
- name: Releasing assets
id: upload_asset
uses: softprops/action-gh-release@v1
with:
files: ${{ steps.bundle_name.outputs.value }}.tgz
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Get MUSL Download URL
id: bundle_url
shell: bash
if: matrix.job.target == 'x86_64-unknown-linux-musl'
run: echo "value=${{ fromJSON(steps.upload_asset.outputs.assets)[0].browser_download_url }}" >> $GITHUB_OUTPUT
release_docker:
name: Publishing Docker Image
runs-on: ubuntu-latest
needs: publish_cli
permissions:
packages: write
contents: read
env:
slug: ghcr.io/trufflehq/scyllax-cli
dockerfile: ./scyllax-cli/Dockerfile
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Parse Tag
id: parse_tag
shell: bash
run: |
version="${GITHUB_REF#*scyllax-cli-}"
echo "version=$version" >> $GITHUB_OUTPUT
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Google Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.slug }}
tags: |
type=raw,value=latest
type=raw,value=${{ steps.parse_tag.outputs.version }}
- name: Build
uses: docker/build-push-action@v5
with:
build-args: BUNDLE_URL=${{ needs.publish_cli.outputs.bundle_url }}
context: .
file: ${{ env.dockerfile }}
push: true
tags: ${{ steps.meta.outputs.tags }}