-
-
Notifications
You must be signed in to change notification settings - Fork 10
206 lines (179 loc) · 6.42 KB
/
Copy pathrelease.yml
File metadata and controls
206 lines (179 loc) · 6.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
name: Release
# Triggered when a SemVer tag (e.g. 0.1.0) is pushed.
# Builds native binaries for 4 platform targets and creates a GitHub Release.
on:
push:
tags:
- '[0-9]+.[0-9]+.[0-9]+'
permissions:
contents: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-linux-amd64:
name: Build — linux/amd64
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: graalvm/setup-graalvm@v1
with:
java-version: '25'
distribution: 'graalvm-community'
cache: maven
github-token: ${{ secrets.GITHUB_TOKEN }}
- run: mvn clean package -Pnative -DskipTests -B
- run: mv target/floci target/floci-linux-amd64
- uses: actions/upload-artifact@v4
with:
name: floci-linux-amd64
path: target/floci-linux-amd64
build-linux-arm64:
name: Build — linux/arm64
runs-on: ubuntu-24.04-arm
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: graalvm/setup-graalvm@v1
with:
java-version: '25'
distribution: 'graalvm-community'
cache: maven
github-token: ${{ secrets.GITHUB_TOKEN }}
- run: mvn clean package -Pnative -DskipTests -B
- run: mv target/floci target/floci-linux-arm64
- uses: actions/upload-artifact@v4
with:
name: floci-linux-arm64
path: target/floci-linux-arm64
build-darwin-arm64:
name: Build — darwin/arm64
runs-on: macos-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: graalvm/setup-graalvm@v1
with:
java-version: '25'
distribution: 'graalvm-community'
cache: maven
github-token: ${{ secrets.GITHUB_TOKEN }}
- run: mvn clean package -Pnative -DskipTests -B
- run: mv target/floci target/floci-darwin-arm64
- uses: actions/upload-artifact@v4
with:
name: floci-darwin-arm64
path: target/floci-darwin-arm64
build-darwin-amd64:
name: Build — darwin/amd64 (Rosetta)
# GraalVM native-image cannot cross-compile architectures, and GitHub's Intel
# macOS runners (macos-13) queue for hours and are being deprecated — a past
# release sat 9.5h on macos-13 before being cancelled. Instead we run an
# x86_64 GraalVM under Rosetta 2 on the reliable Apple Silicon runner.
# setup-graalvm has no arch override, so the x86_64 JDK is installed manually.
runs-on: macos-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- name: Install Rosetta 2
run: sudo softwareupdate --install-rosetta --agree-to-license
- name: Install x86_64 GraalVM
run: |
curl -fsSL -o "$RUNNER_TEMP/graalvm-x64.tar.gz" \
https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_macos-x64_bin.tar.gz
mkdir -p "$RUNNER_TEMP/graalvm-x64"
tar -xzf "$RUNNER_TEMP/graalvm-x64.tar.gz" -C "$RUNNER_TEMP/graalvm-x64" --strip-components 1
echo "JAVA_HOME=$RUNNER_TEMP/graalvm-x64/Contents/Home" >> "$GITHUB_ENV"
echo "$RUNNER_TEMP/graalvm-x64/Contents/Home/bin" >> "$GITHUB_PATH"
- name: Verify x86_64 toolchain
run: arch -x86_64 "$JAVA_HOME/bin/java" -XshowSettings:properties -version 2>&1 | grep 'os.arch'
- name: Build native binary (x86_64 under Rosetta)
run: arch -x86_64 mvn clean package -Pnative -DskipTests -B
- name: Verify binary is x86_64
run: file target/floci | grep -q x86_64
- run: mv target/floci target/floci-darwin-amd64
- uses: actions/upload-artifact@v4
with:
name: floci-darwin-amd64
path: target/floci-darwin-amd64
build-windows-amd64:
name: Build — windows/amd64
runs-on: windows-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- uses: graalvm/setup-graalvm@v1
with:
java-version: '25'
distribution: 'graalvm-community'
cache: maven
github-token: ${{ secrets.GITHUB_TOKEN }}
- run: mvn clean package -Pnative -DskipTests -B
- run: mv target/floci.exe target/floci-windows-amd64.exe
- uses: actions/upload-artifact@v4
with:
name: floci-windows-amd64
path: target/floci-windows-amd64.exe
build-jar:
name: Build — JVM jar
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '25'
distribution: 'temurin'
cache: maven
- run: mvn clean package -DskipTests -B
- uses: actions/upload-artifact@v4
with:
name: floci-jar
path: target/floci.jar
release:
name: Create GitHub Release
needs: [build-linux-amd64, build-linux-arm64, build-darwin-amd64, build-darwin-arm64, build-windows-amd64, build-jar]
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: Extract version
id: version
run: echo "version=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
- uses: actions/download-artifact@v4
with:
path: dist/
- name: Generate checksums
run: |
cd dist
find . -type f \( -name "floci-*" \) | sort | xargs sha256sum > sha256sums.txt
cat sha256sums.txt
- name: Create Release
uses: softprops/action-gh-release@v2
with:
name: "floci ${{ steps.version.outputs.version }}"
body: |
## Installation
**Homebrew:**
```sh
brew install floci-io/floci/floci
```
**Direct download (Linux/macOS):**
```sh
curl -fsSL https://floci.io/install.sh | sh
```
**Windows:**
```powershell
iwr https://floci.io/install.ps1 | iex
```
**JVM fallback** (requires Java 21+): `floci.jar`
See [CHANGELOG.md](CHANGELOG.md) for what's new.
files: |
dist/floci-linux-amd64/floci-linux-amd64
dist/floci-linux-arm64/floci-linux-arm64
dist/floci-darwin-amd64/floci-darwin-amd64
dist/floci-darwin-arm64/floci-darwin-arm64
dist/floci-windows-amd64/floci-windows-amd64.exe
dist/floci-jar/floci.jar
dist/sha256sums.txt