Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
name: Release Artifacts

on:
release:
types: [published]

env:
CARGO_TERM_COLOR: always

jobs:
build-macos:
name: build-macos-${{ matrix.target }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: macos-13
target: x86_64-apple-darwin
archive_name: libtokenizers.darwin-x86_64.tar.gz
alias_name: ""
- os: macos-14
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.release.tag_name }}
files: artifacts/**/*