Skip to content

fix: release CI (#5) #2

fix: release CI (#5)

fix: release CI (#5) #2

Workflow file for this run

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.13.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 }}