feat: upgrade to zig 0.14 (#8) #3
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
push: | |
tags: | |
- v* | |
env: | |
STATIC_LIB_PREFIX: libstate-transition | |
SHARED_LIB_PREFIX: libstate-transition-utils | |
jobs: | |
build-and-test: | |
strategy: | |
matrix: | |
settings: | |
- os: ubuntu-latest | |
platform: x86_64-linux | |
- os: ubuntu-24.04-arm | |
platform: aarch64-linux | |
- os: macos-13 | |
platform: x86_64-macos | |
- os: macos-latest | |
platform: aarch64-macos | |
runs-on: ${{ matrix.settings.os }} | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive # Ensures submodules are cloned | |
fetch-depth: 0 # Fetches the entire history for all branches | |
- name: Install Zig | |
uses: mlugg/setup-zig@v1 | |
with: | |
version: "0.14.0" # Set the required Zig version | |
- name: Test state-transition-z | |
run: | | |
zig build test | |
- name: Build state-transition-z on ${{ matrix.settings.platform }} | |
run: | | |
zig build -Doptimize=ReleaseSafe | |
- name: Upload static library artifact for ${{ matrix.settings.platform }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.STATIC_LIB_PREFIX }}-${{ matrix.settings.platform }}.a | |
path: zig-out/lib/${{ env.STATIC_LIB_PREFIX }}.a | |
compression-level: 0 # No compression | |
- name: Set shared library extension | |
id: set_extension | |
run: | | |
case "${{ matrix.settings.platform }}" in | |
x86_64-linux|aarch64-linux) echo "EXT=so" >> $GITHUB_ENV ;; | |
*) echo "EXT=dylib" >> $GITHUB_ENV ;; | |
esac | |
- name: Upload shared library artifact for ${{ matrix.settings.platform }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.SHARED_LIB_PREFIX }}-${{ matrix.settings.platform }}.${{ env.EXT }} | |
path: zig-out/lib/${{ env.SHARED_LIB_PREFIX }}.${{ env.EXT }} | |
compression-level: 0 # No compression | |
create-release: | |
needs: build-and-test | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Download all artifacts | |
uses: actions/download-artifact@v4 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
path: release_tmp | |
pattern: libstate-transition* | |
- name: List folders in release_tmp directory | |
run: ls -la ${{ github.workspace }}/release_tmp | |
- name: Organize Release Artifacts # TODO: make a for loop? | |
run: | | |
mkdir -p release | |
mv release_tmp/${{ env.STATIC_LIB_PREFIX }}-x86_64-linux.a/${{ env.STATIC_LIB_PREFIX }}.a release/${{ env.STATIC_LIB_PREFIX }}-x86_64-linux.a | |
mv release_tmp/${{ env.STATIC_LIB_PREFIX }}-aarch64-linux.a/${{ env.STATIC_LIB_PREFIX }}.a release/${{ env.STATIC_LIB_PREFIX }}-aarch64-linux.a | |
mv release_tmp/${{ env.STATIC_LIB_PREFIX }}-x86_64-macos.a/${{ env.STATIC_LIB_PREFIX }}.a release/${{ env.STATIC_LIB_PREFIX }}-x86_64-macos.a | |
mv release_tmp/${{ env.STATIC_LIB_PREFIX }}-aarch64-macos.a/${{ env.STATIC_LIB_PREFIX }}.a release/${{ env.STATIC_LIB_PREFIX }}-aarch64-macos.a | |
mv release_tmp/${{ env.SHARED_LIB_PREFIX }}-x86_64-linux.so/${{ env.SHARED_LIB_PREFIX }}.so release/${{ env.SHARED_LIB_PREFIX }}-x86_64-linux.so | |
mv release_tmp/${{ env.SHARED_LIB_PREFIX }}-aarch64-linux.so/${{ env.SHARED_LIB_PREFIX }}.so release/${{ env.SHARED_LIB_PREFIX }}-aarch64-linux.so | |
mv release_tmp/${{ env.SHARED_LIB_PREFIX }}-x86_64-macos.dylib/${{ env.SHARED_LIB_PREFIX }}.dylib release/${{ env.SHARED_LIB_PREFIX }}-x86_64-macos.dylib | |
mv release_tmp/${{ env.SHARED_LIB_PREFIX }}-aarch64-macos.dylib/${{ env.SHARED_LIB_PREFIX }}.dylib release/${{ env.SHARED_LIB_PREFIX }}-aarch64-macos.dylib | |
- name: List files in release directory | |
run: ls -la ${{ github.workspace }}/release | |
- name: Create Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
files: | | |
${{ github.workspace }}/release/* | |
tag_name: ${{ github.ref_name }} | |
name: Release ${{ github.ref_name }} | |
fail_on_unmatched_files: true | |
draft: false | |
prerelease: false | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |