-
Notifications
You must be signed in to change notification settings - Fork 36
172 lines (170 loc) · 6 KB
/
release.yml
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
name: Create a new release
on:
workflow_dispatch:
inputs:
releaseTag:
description: 'Release Tag'
required: true
productionRelease:
type: boolean
description: Mark release as production ready
jobs:
release-ubuntu:
name: Build for Linux
# using the oldest available ubuntu on github CI to provide maximum compatibility with glibc versions
# update RELEASE_TEMPLATE with the glibc version
# on ubuntu-20.04, glibc version is 2.31
runs-on: ubuntu-20.04
env:
CARGO_TERM_COLOR: always
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
ftd/target
fifthtry_content/target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: print rustc version
run: rustc --version
- name: cargo build (linux)
run: cargo build --release
- name: print fastn version
run: ./target/release/fastn --version
- name: print file info
run: |
file ./target/release/fastn
ldd ./target/release/fastn
- uses: actions/upload-artifact@v4
with:
name: linux_x86_64
path: target/release/fastn
build-windows:
name: Build for Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
ftd/target
fifthtry_content/target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: print rustc version
run: rustc --version
- name: cargo build (windows)
run: cargo build --release
- name: print fastn version
run: target\release\fastn.exe --version
- uses: actions/upload-artifact@v4
with:
name: windows_x64_latest
path: target/release/fastn.exe
release-windows:
runs-on: ubuntu-latest
needs: [ build-windows ]
name: Make installer for windows build
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: windows_x64_latest
path: result/bin/
- name: check exe
run: |
ls -la result/bin/
- name: Install NSIS & Plugins
run: |
sudo apt update && sudo apt install -y nsis nsis-pluginapi
sudo chown -R $(whoami) /usr/share/nsis/Plugins/
wget https://github.com/GsNSIS/EnVar/releases/download/v0.3.1/EnVar-Plugin.zip
unzip EnVar-Plugin.zip -d EnVar-Plugin
sudo mv EnVar-Plugin/Plugins/amd64-unicode/* /usr/share/nsis/Plugins/amd64-unicode/
sudo mv EnVar-Plugin/Plugins/x86-ansi/* /usr/share/nsis/Plugins/x86-ansi/
sudo mv EnVar-Plugin/Plugins/x86-unicode/* /usr/share/nsis/Plugins/x86-unicode/
- name: Create Installer
run: makensis -V3 -DCURRENT_WD=${{ github.workspace }} -DVERSION=${{ github.event.inputs.releaseTag }} install.nsi
- uses: actions/upload-artifact@v4
with:
name: windows_x64_installer.exe
path: windows_x64_installer.exe
release-macos:
name: Build for MacOS
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
ftd/target
fifthtry_content/target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: print rustc version
run: rustc --version
- name: Run Build
id: build-macos
continue-on-error: false
run: cargo build --release
- name: print fastn version
run: ./target/release/fastn --version
- name: print file info
run: |
file ./target/release/fastn
otool -L ./target/release/fastn
- uses: actions/upload-artifact@v4
with:
name: macos_x64_latest
path: |
target/release/fastn
create-release:
name: Create github tag and release
runs-on: ubuntu-latest
needs: [ release-ubuntu, release-macos, release-windows ]
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: macos_x64_latest
path: ~/download/macos
- uses: actions/download-artifact@v4
with:
name: linux_x86_64
path: ~/download/linux
- uses: actions/download-artifact@v4
with:
name: windows_x64_latest
path: ~/download/windows
- uses: actions/download-artifact@v4
with:
name: windows_x64_installer.exe
path: ~/download/windows
- name: Rename assets
run: |
mv ~/download/windows/fastn.exe ~/download/windows/fastn_windows_x86_64.exe
mv ~/download/windows/windows_x64_installer.exe ~/download/windows/fastn_setup.exe
mv ~/download/macos/fastn ~/download/macos/fastn_macos_x86_64
mv ~/download/linux/fastn ~/download/linux/fastn_linux_musl_x86_64
- name: Update .github/RELEASE_TEMPLATE.md
run: |
sed -i "s/GITHUB_SHA/${GITHUB_SHA}/g" .github/RELEASE_TEMPLATE.md
sed -i "s/DATE/$(date)/g" .github/RELEASE_TEMPLATE.md
- uses: ncipollo/release-action@v1
with:
artifacts: "~/download/windows/fastn_windows_x86_64.exe,~/download/windows/fastn_setup.exe,~/download/macos/fastn_macos_x86_64,~/download/linux/fastn_linux_musl_x86_64"
generateReleaseNotes: true
token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.event.inputs.releaseTag }}
prerelease: ${{ github.event.inputs.productionRelease && github.event.inputs.productionRelease == 'false' }}
bodyFile: .github/RELEASE_TEMPLATE.md