Skip to content

Commit dec4f01

Browse files
committed
Add artifact packaging and upload to CI and release workflows
1 parent a75d1f8 commit dec4f01

3 files changed

Lines changed: 96 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,16 @@ jobs:
5959
- name: Build
6060
run: cmake --build build --config ${{ env.BUILD_TYPE }} --parallel
6161

62+
- name: Upload artifacts
63+
uses: actions/upload-artifact@v4
64+
with:
65+
name: EntropyCore-Linux-${{ matrix.compiler.cc }}
66+
path: |
67+
build/libEntropyCore.a
68+
build/*Example
69+
build/*.so
70+
if-no-files-found: warn
71+
6272
build-macos:
6373
runs-on: macos-latest
6474

@@ -89,6 +99,16 @@ jobs:
8999
- name: Build
90100
run: cmake --build build --config ${{ env.BUILD_TYPE }} --parallel
91101

102+
- name: Upload artifacts
103+
uses: actions/upload-artifact@v4
104+
with:
105+
name: EntropyCore-macOS-universal
106+
path: |
107+
build/libEntropyCore.a
108+
build/*Example
109+
build/*.dylib
110+
if-no-files-found: warn
111+
92112
build-windows:
93113
runs-on: windows-latest
94114

@@ -112,3 +132,13 @@ jobs:
112132
113133
- name: Build
114134
run: cmake --build build --config ${{ env.BUILD_TYPE }} --parallel
135+
136+
- name: Upload artifacts
137+
uses: actions/upload-artifact@v4
138+
with:
139+
name: EntropyCore-Windows-x64
140+
path: |
141+
build/${{ env.BUILD_TYPE }}/EntropyCore.lib
142+
build/${{ env.BUILD_TYPE }}/*Example.exe
143+
build/${{ env.BUILD_TYPE }}/*.dll
144+
if-no-files-found: warn

.github/workflows/prerelease.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,23 @@ jobs:
2828
echo "date=$(date +'%Y%m%d-%H%M%S')" >> $GITHUB_OUTPUT
2929
echo "commit_msg=$(git log -1 --pretty=%B | head -n 1)" >> $GITHUB_OUTPUT
3030
31+
- name: Download all artifacts
32+
uses: actions/download-artifact@v4
33+
with:
34+
path: artifacts
35+
run-id: ${{ github.event.workflow_run.id }}
36+
github-token: ${{ github.token }}
37+
38+
- name: Create artifact archives
39+
run: |
40+
cd artifacts
41+
for dir in */; do
42+
dirname="${dir%/}"
43+
tar -czf "${dirname}.tar.gz" -C "$dirname" .
44+
zip -r "${dirname}.zip" "$dirname"
45+
done
46+
cd ..
47+
3148
- name: Delete existing pre-release
3249
run: |
3350
gh release delete latest --yes || true
@@ -49,10 +66,22 @@ jobs:
4966
- **Date**: ${{ steps.commit.outputs.date }}
5067
- **Message**: ${{ steps.commit.outputs.commit_msg }}
5168
69+
### 📦 Available Builds
70+
71+
- **Linux GCC 14**: `EntropyCore-Linux-gcc-14.tar.gz` / `.zip`
72+
- **Linux Clang 18**: `EntropyCore-Linux-clang-18.tar.gz` / `.zip`
73+
- **macOS Universal**: `EntropyCore-macOS-universal.tar.gz` / `.zip`
74+
- **Windows x64**: `EntropyCore-Windows-x64.tar.gz` / `.zip`
75+
76+
Each archive contains the library and example executables.
77+
5278
### ⚠️ Warning
5379
This is a development build and may be unstable. For production use, please use a [stable release](https://github.com/${{ github.repository }}/releases).
5480
5581
### 📋 Recent Changes
5682
See [commit history](https://github.com/${{ github.repository }}/commits/main) for details.
83+
files: |
84+
artifacts/*.tar.gz
85+
artifacts/*.zip
5786
prerelease: true
5887
make_latest: false

.github/workflows/release.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ permissions:
99
contents: write
1010

1111
jobs:
12+
# First, trigger builds for all platforms
13+
build:
14+
uses: ./.github/workflows/ci.yml
15+
1216
create-release:
17+
needs: build
1318
runs-on: ubuntu-latest
1419

1520
steps:
@@ -31,6 +36,21 @@ jobs:
3136
echo "version=${VERSION}" >> $GITHUB_OUTPUT
3237
echo "version_number=${VERSION#v}" >> $GITHUB_OUTPUT
3338
39+
- name: Download all artifacts
40+
uses: actions/download-artifact@v4
41+
with:
42+
path: artifacts
43+
44+
- name: Create artifact archives
45+
run: |
46+
cd artifacts
47+
for dir in */; do
48+
dirname="${dir%/}"
49+
tar -czf "${dirname}.tar.gz" -C "$dirname" .
50+
zip -r "${dirname}.zip" "$dirname"
51+
done
52+
cd ..
53+
3454
- name: Generate release notes
3555
id: notes
3656
run: |
@@ -53,6 +73,20 @@ jobs:
5373
5474
$CHANGELOG
5575
76+
### 📦 Pre-built Binaries
77+
78+
Download the appropriate archive for your platform:
79+
80+
- **Linux GCC 14**: `EntropyCore-Linux-gcc-14.tar.gz` / `.zip`
81+
- **Linux Clang 18**: `EntropyCore-Linux-clang-18.tar.gz` / `.zip`
82+
- **macOS Universal**: `EntropyCore-macOS-universal.tar.gz` / `.zip` (Intel + Apple Silicon)
83+
- **Windows x64**: `EntropyCore-Windows-x64.tar.gz` / `.zip`
84+
85+
Each archive contains:
86+
- `libEntropyCore.a` / `EntropyCore.lib` (static library)
87+
- Example executables
88+
- Headers are in the repository
89+
5690
### 🔧 Building from Source
5791
5892
```bash
@@ -86,6 +120,9 @@ jobs:
86120
with:
87121
name: "Release ${{ steps.version.outputs.version }}"
88122
body_path: release_notes.md
123+
files: |
124+
artifacts/*.tar.gz
125+
artifacts/*.zip
89126
draft: false
90127
prerelease: false
91128
make_latest: true

0 commit comments

Comments
 (0)