Skip to content

Commit 3b802b6

Browse files
authored
feat: make release ci (#4)
1 parent 0157212 commit 3b802b6

3 files changed

Lines changed: 112 additions & 4 deletions

File tree

.github/workflows/release.yml

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- v*
7+
8+
jobs:
9+
build-and-test:
10+
strategy:
11+
matrix:
12+
settings:
13+
- os: ubuntu-latest
14+
platform: x86_64-linux
15+
- os: ubuntu-24.04-arm
16+
platform: aarch64-linux
17+
- os: macos-13
18+
platform: x86_64-macos
19+
- os: macos-latest
20+
platform: aarch64-macos
21+
22+
runs-on: ${{ matrix.settings.os }}
23+
steps:
24+
- name: Checkout Repository
25+
uses: actions/checkout@v3
26+
with:
27+
submodules: recursive # Ensures submodules are cloned
28+
fetch-depth: 0 # Fetches the entire history for all branches
29+
30+
- name: Install Zig
31+
uses: mlugg/setup-zig@v1
32+
with:
33+
version: "0.13.0" # Set the required Zig version
34+
35+
- name: Test state-transition-z
36+
run: |
37+
zig build test
38+
39+
- name: Build state-transition-z on ${{ matrix.settings.platform }}
40+
run: |
41+
zig build -Doptimize=ReleaseSafe
42+
43+
- name: Upload static library artifact for ${{ matrix.settings.platform }}
44+
uses: actions/upload-artifact@v4
45+
with:
46+
name: libstate-transition-${{ matrix.settings.platform }}.a
47+
path: zig-out/lib/libstate-transition.a
48+
compression-level: 0 # No compression
49+
50+
- name: Set shared library extension
51+
id: set_extension
52+
run: |
53+
case "${{ matrix.settings.platform }}" in
54+
x86_64-linux|aarch64-linux) echo "EXT=so" >> $GITHUB_ENV ;;
55+
*) echo "EXT=dylib" >> $GITHUB_ENV ;;
56+
esac
57+
58+
- name: Upload shared library artifact for ${{ matrix.settings.platform }}
59+
uses: actions/upload-artifact@v4
60+
with:
61+
name: libstate-transition-utils-${{ matrix.settings.platform }}.${{ env.EXT }}
62+
path: zig-out/lib/libstate-transition-utils.${{ env.EXT }}
63+
compression-level: 0 # No compression
64+
65+
create-release:
66+
needs: build-and-test
67+
runs-on: ubuntu-latest
68+
permissions:
69+
contents: write
70+
71+
steps:
72+
- name: Download all artifacts
73+
uses: actions/download-artifact@v4
74+
if: startsWith(github.ref, 'refs/tags/')
75+
with:
76+
path: release_tmp
77+
pattern: libstate-transition*
78+
79+
- name: List folders in release_tmp directory
80+
run: ls -la ${{ github.workspace }}/release_tmp
81+
82+
- name: Organize Release Artifacts
83+
run: |
84+
mkdir -p release
85+
mv release_tmp/libstate-transition-x86_64-linux.a/libstate-transition.a release/libstate-transition-x86_64-linux.a
86+
mv release_tmp/libstate-transition-aarch64-linux.a/libstate-transition.a release/libstate-transition-aarch64-linux.a
87+
mv release_tmp/libstate-transition-x86_64-macos.a/libstate-transition.a release/libstate-transition-x86_64-macos.a
88+
mv release_tmp/libstate-transition-aarch64-macos.a/libstate-transition.a release/libstate-transition-aarch64-macos.a
89+
mv release_tmp/libstate-transition-utils-x86_64-linux.so/libstate-transition-utils.so release/libstate-transition-utils-x86_64-linux.so
90+
mv release_tmp/libstate-transition-utils-aarch64-linux.so/libstate-transition-utils.so release/libstate-transition-utils-aarch64-linux.so
91+
mv release_tmp/libstate-transition-utils-x86_64-macos.dylib/libstate-transition-utils.dylib release/libstate-transition-utils-x86_64-macos.dylib
92+
mv release_tmp/libstate-transition-utils-pk_aarch64-macos.dylib/libstate-transition-utils.dylib release/libstate-transition-utils-aarch64-macos.dylib
93+
94+
- name: List files in release directory
95+
run: ls -la ${{ github.workspace }}/release
96+
97+
- name: Create Release
98+
uses: softprops/action-gh-release@v2
99+
with:
100+
files: |
101+
${{ github.workspace }}/release/*
102+
tag_name: ${{ github.ref_name }}
103+
name: Release ${{ github.ref_name }}
104+
fail_on_unmatched_files: true
105+
draft: false
106+
prerelease: false
107+
env:
108+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

build.zig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ pub fn build(b: *std.Build) void {
1616
const optimize = b.standardOptimizeOption(.{});
1717

1818
const lib = b.addStaticLibrary(.{
19-
.name = "state-transition-z",
19+
.name = "state-transition",
2020
// In this case the main source file is merely a path, however, in more
2121
// complicated build scripts, this could be a generated file.
2222
.root_source_file = b.path("src/root.zig"),
@@ -30,7 +30,7 @@ pub fn build(b: *std.Build) void {
3030
b.installArtifact(lib);
3131

3232
const exe = b.addExecutable(.{
33-
.name = "state-transition-z",
33+
.name = "state-transition",
3434
.root_source_file = b.path("src/main.zig"),
3535
.target = target,
3636
.optimize = optimize,
@@ -42,7 +42,7 @@ pub fn build(b: *std.Build) void {
4242
b.installArtifact(exe);
4343

4444
const sharedLib = b.addSharedLibrary(.{
45-
.name = "state_transition_utils",
45+
.name = "state-transition-utils",
4646
.root_source_file = b.path("src/root_c_abi.zig"),
4747
.target = target,
4848
.optimize = optimize,

test/bun/utils/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { resolve } from "node:path";
2-
export const BINDINGS_NAME = "libstate_transition_utils";
2+
export const BINDINGS_NAME = "libstate-transition-utils";
33

44
export const ROOT_DIR = resolve(__dirname, "../../..");
55
export const PREBUILD_DIR = resolve(ROOT_DIR, "zig-out/lib");

0 commit comments

Comments
 (0)