-
Notifications
You must be signed in to change notification settings - Fork 37
166 lines (164 loc) Β· 6.31 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
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
runs-on: ubuntu-latest
env:
CARGO_TERM_COLOR: always
BUILD_TARGET: x86_64-unknown-linux-musl
BINARY_NAME: fastn
steps:
- uses: actions/checkout@main
- uses: actions/cache@v2
with:
path: |
~/.cargo/registry
~/.cargo/git
target
ftd/target
fifthtry_content/target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Build-musl
uses: gmiam/rust-musl-action@9e6a37bf27ecfffb6b92240ea276bea5487fa15d
continue-on-error: false
with:
args: cargo build --target $BUILD_TARGET --release
- uses: actions/upload-artifact@v2
with:
name: linux_musl_x86_64
path: target/x86_64-unknown-linux-musl/release/${{ env.BINARY_NAME }}*
- name: Build-musl
uses: gmiam/rust-musl-action@9e6a37bf27ecfffb6b92240ea276bea5487fa15d
continue-on-error: false
with:
args: cargo build --target $BUILD_TARGET --release --features controller
- uses: actions/upload-artifact@v2
with:
name: fastn_controller_linux_musl_x86_64
path: target/x86_64-unknown-linux-musl/release/${{ env.BINARY_NAME }}*
release-windows:
name: Build for Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@main
- uses: actions-rs/toolchain@v1
- uses: actions/cache@v2
with:
path: |
~/.cargo/registry
~/.cargo/git
target
ftd/target
fifthtry_content/target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Run Build
id: build-windows
continue-on-error: false
uses: actions-rs/cargo@v1
with:
command: build
args: --release
- uses: actions/upload-artifact@master
with:
name: windows_x64_latest
path: target/release/fastn.exe
- name: Download EnVar plugin for NSIS
uses: carlosperate/[email protected]
with:
file-url: https://github.com/GsNSIS/EnVar/releases/download/v0.3.1/EnVar-Plugin.zip
file-name: envar_plugin.zip
location: ${{ github.workspace }}
- name: Extract EnVar plugin
run: 7z x -o"${{ github.workspace }}/NSIS_Plugins" "${{ github.workspace }}/envar_plugin.zip"
- name: Create installer
uses: joncloud/makensis-action@v4
with:
arguments: /V3 /DCURRENT_WD=${{ github.workspace }} /DVERSION=${{ github.event.inputs.releaseTag }}
additional-plugin-paths: ${{ github.workspace }}/NSIS_Plugins/Plugins
- uses: actions/upload-artifact@v2
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@main
- uses: actions-rs/toolchain@v1
- uses: actions/cache@v2
with:
path: |
~/.cargo/registry
~/.cargo/git
target
ftd/target
fifthtry_content/target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Run Build
id: build-macos
continue-on-error: false
uses: actions-rs/cargo@v1
with:
command: build
args: --release
- uses: actions/upload-artifact@master
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@main
- uses: actions/download-artifact@v2
with:
name: macos_x64_latest
path: ~/download/macos
- uses: actions/download-artifact@v2
with:
name: linux_musl_x86_64
path: ~/download/linux_musl
- uses: actions/download-artifact@v2
with:
name: fastn_controller_linux_musl_x86_64
path: ~/download/fastn_controller_linux_musl
- uses: actions/download-artifact@v2
with:
name: windows_x64_latest
path: ~/download/windows
- uses: actions/download-artifact@v2
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_musl/fastn ~/download/linux_musl/fastn_linux_musl_x86_64
mv ~/download/linux_musl/fastn.d ~/download/linux_musl/fastn_linux_musl_x86_64.d
mv ~/download/fastn_controller_linux_musl/fastn ~/download/fastn_controller_linux_musl/fastn_controller_linux_musl_x86_64
mv ~/download/fastn_controller_linux_musl/fastn.d ~/download/fastn_controller_linux_musl/fastn_controller_linux_musl_x86_64.d
- 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_musl/fastn_linux_musl_x86_64,~/download/linux_musl/fastn_linux_musl_x86_64.d,~/download/fastn_controller_linux_musl/fastn_controller_linux_musl_x86_64,~/download/fastn_controller_linux_musl/fastn_controller_linux_musl_x86_64.d"
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