Skip to content

Commit 4dd6444

Browse files
committed
Update Github Actions WF
1 parent 67358d6 commit 4dd6444

1 file changed

Lines changed: 130 additions & 11 deletions

File tree

.github/workflows/prep_release.yml

Lines changed: 130 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@ name: Prepare Viash Release
22

33
on:
44
workflow_dispatch:
5-
5+
66
jobs:
7-
build-and-release:
7+
build-jar:
88
runs-on: ubuntu-latest
99

1010
permissions:
11-
contents: write
11+
contents: read
12+
13+
outputs:
14+
viash_version: ${{ steps.get_version.outputs.viash_version }}
15+
changelog_section: ${{ steps.get_version.outputs.changelog_section }}
1216

1317
steps:
1418
- name: Checkout code
@@ -43,26 +47,141 @@ jobs:
4347
echo "Detected Viash version: $viash_version"
4448
echo "Detected Viash minor version: $viash_minor_version"
4549
echo "viash_version=$viash_version" >> "$GITHUB_OUTPUT"
46-
50+
4751
# fetch relevant changelog section
4852
changelog_section=$(awk "/# Viash ${viash_version}.*/{flag=1;print;next}/^# /{flag=0}flag" CHANGELOGS/CHANGELOG_${viash_minor_version}.md)
49-
53+
5054
echo "changelog_section<<GITHUB_EOF" >> "$GITHUB_OUTPUT"
5155
echo "$changelog_section" >> "$GITHUB_OUTPUT"
5256
echo "GITHUB_EOF" >> "$GITHUB_OUTPUT"
5357
58+
- name: Extract fat JAR
59+
run: |
60+
cp target/viash.jar viash.jar
61+
62+
- name: Upload JAR artifact
63+
uses: actions/upload-artifact@v4
64+
with:
65+
name: fat-jar
66+
path: viash.jar
67+
retention-days: 1
68+
69+
- name: Upload release assets
70+
uses: actions/upload-artifact@v4
71+
with:
72+
name: release-assets
73+
path: |
74+
bin/viash
75+
bin/schema.json
76+
bin/viash_install
77+
retention-days: 1
78+
79+
build-native:
80+
needs: build-jar
81+
strategy:
82+
fail-fast: false
83+
matrix:
84+
include:
85+
- os: macos-13
86+
label: macos-x86_64
87+
- os: macos-14
88+
label: macos-aarch64
89+
- os: ubuntu-latest
90+
label: linux-x86_64
91+
- os: ubuntu-24.04-arm
92+
label: linux-aarch64
93+
94+
runs-on: ${{ matrix.os }}
95+
96+
permissions:
97+
contents: read
98+
99+
steps:
100+
- name: Download JAR
101+
uses: actions/download-artifact@v4
102+
with:
103+
name: fat-jar
104+
105+
- name: Set up GraalVM
106+
uses: graalvm/setup-graalvm@v1
107+
with:
108+
java-version: '21'
109+
distribution: 'graalvm'
110+
111+
- name: Build native image
112+
run: |
113+
native-image -jar viash.jar \
114+
--no-fallback \
115+
-H:+ReportExceptionStackTraces \
116+
--initialize-at-build-time=scala,org.rogach.scallop \
117+
--enable-url-protocols=https \
118+
-o viash
119+
120+
- name: Smoke test
121+
run: |
122+
./viash --version
123+
124+
- name: Upload native binary
125+
uses: actions/upload-artifact@v4
126+
with:
127+
name: viash-${{ matrix.label }}
128+
path: viash
129+
retention-days: 1
130+
131+
create-release:
132+
needs: [build-jar, build-native]
133+
runs-on: ubuntu-latest
134+
135+
permissions:
136+
contents: write
137+
138+
steps:
139+
- name: Download release assets
140+
uses: actions/download-artifact@v4
141+
with:
142+
name: release-assets
143+
path: release-assets
144+
145+
- name: Download native binaries
146+
uses: actions/download-artifact@v4
147+
with:
148+
pattern: viash-*
149+
path: native-binaries
150+
merge-multiple: false
151+
152+
- name: Prepare release files
153+
run: |
154+
mkdir -p release
155+
156+
# JAR-based executable (backward compatible)
157+
cp release-assets/bin/viash release/viash
158+
cp release-assets/bin/schema.json release/schema.json
159+
cp release-assets/bin/viash_install release/viash_install
160+
161+
# Native binaries with platform suffixes
162+
cp native-binaries/viash-linux-x86_64/viash release/viash-linux-x86_64
163+
cp native-binaries/viash-linux-aarch64/viash release/viash-linux-aarch64
164+
cp native-binaries/viash-macos-x86_64/viash release/viash-macos-x86_64
165+
cp native-binaries/viash-macos-aarch64/viash release/viash-macos-aarch64
166+
167+
chmod +x release/viash-*
168+
54169
- name: Create release
55170
uses: softprops/action-gh-release@v2
56171
env:
57172
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
58173
with:
59-
tag_name: ${{ steps.get_version.outputs.viash_version }}
174+
tag_name: ${{ needs.build-jar.outputs.viash_version }}
60175
target_commitish: ${{ github.sha }}
61-
name: Viash ${{ steps.get_version.outputs.viash_version }}
62-
body: ${{ steps.get_version.outputs.changelog_section }}
176+
name: Viash ${{ needs.build-jar.outputs.viash_version }}
177+
body: ${{ needs.build-jar.outputs.changelog_section }}
63178
draft: true
64179
fail_on_unmatched_files: true
65180
files: |
66-
bin/viash
67-
bin/schema.json
68-
bin/viash_install
181+
release/viash
182+
release/schema.json
183+
release/viash_install
184+
release/viash-linux-x86_64
185+
release/viash-linux-aarch64
186+
release/viash-macos-x86_64
187+
release/viash-macos-aarch64

0 commit comments

Comments
 (0)