Skip to content

Release Artifacts

Release Artifacts #2

Workflow file for this run

name: Release Artifacts
on:
release:
types: [published]
workflow_dispatch:
inputs:
tag_name:
description: Existing release tag to patch (for example, v1.2.3)
required: true
type: string
env:
CARGO_TERM_COLOR: always
jobs:
build-macos:
name: build-macos-${{ matrix.target }}
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-apple-darwin
archive_name: libtokenizers.darwin-x86_64.tar.gz
alias_name: ""
- target: aarch64-apple-darwin
archive_name: libtokenizers.darwin-aarch64.tar.gz
alias_name: libtokenizers.darwin-arm64.tar.gz
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Build static library
run: cargo build --release -p tokenizers-ffi --target ${{ matrix.target }}
- name: Package archive
shell: bash
run: |
mkdir -p dist
cp target/${{ matrix.target }}/release/libtokenizers_ffi.a dist/libtokenizers.a
tar -czf dist/${{ matrix.archive_name }} -C dist libtokenizers.a
if [[ -n "${{ matrix.alias_name }}" ]]; then
cp dist/${{ matrix.archive_name }} dist/${{ matrix.alias_name }}
fi
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.target }}
path: dist/*.tar.gz
if-no-files-found: error
build-linux:
name: build-linux-${{ matrix.target }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
archive_name: libtokenizers.linux-x86_64.tar.gz
alias_name: libtokenizers.linux-amd64.tar.gz
- target: aarch64-unknown-linux-gnu
archive_name: libtokenizers.linux-arm64.tar.gz
alias_name: libtokenizers.linux-aarch64.tar.gz
- target: s390x-unknown-linux-gnu
archive_name: libtokenizers.linux-s390x.tar.gz
alias_name: ""
- target: powerpc64le-unknown-linux-gnu
archive_name: libtokenizers.linux-ppc64le.tar.gz
alias_name: ""
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Install cross
uses: taiki-e/install-action@v2
with:
tool: cross
- name: Build static library
run: cross build --release -p tokenizers-ffi --target ${{ matrix.target }}
- name: Package archive
shell: bash
run: |
mkdir -p dist
cp target/${{ matrix.target }}/release/libtokenizers_ffi.a dist/libtokenizers.a
tar -czf dist/${{ matrix.archive_name }} -C dist libtokenizers.a
if [[ -n "${{ matrix.alias_name }}" ]]; then
cp dist/${{ matrix.archive_name }} dist/${{ matrix.alias_name }}
fi
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.target }}
path: dist/*.tar.gz
if-no-files-found: error
upload-release-assets:
name: upload-release-assets
runs-on: ubuntu-latest
needs: [build-macos, build-linux]
permissions:
contents: write
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Attach artifacts to release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.event_name == 'workflow_dispatch' && inputs.tag_name || github.event.release.tag_name }}
files: artifacts/**/*