-
Notifications
You must be signed in to change notification settings - Fork 1
140 lines (130 loc) · 4.82 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
name: release-flow
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+*"
env:
EXECUTABLE_NAME: narrative-director-rs
OSX_APP_NAME: NarrativeDirector
jobs:
build-macOS:
runs-on: macOS-latest
env:
# macOS 11.0 Big Sur is the first version to support universal binaries
MACOSX_DEPLOYMENT_TARGET: 11.0
steps:
- name: Get tag
id: tag
uses: dawidd6/action-get-tag@v1
- name: Checkout repository
uses: actions/checkout@v3
- name: Install rust toolchain for Apple Silicon
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
targets: aarch64-apple-darwin, x86_64-apple-darwin
- name: Build release for Apple Silicon
run: |
SDKROOT=$(xcrun -sdk macosx --show-sdk-path) cargo build --release --target=aarch64-apple-darwin
- name: Build release for x86 Apple
run: |
SDKROOT=$(xcrun -sdk macosx --show-sdk-path) cargo build --release --target=x86_64-apple-darwin
- name: Create Universal Binary
run: |
lipo -create -output target/release/${{ env.EXECUTABLE_NAME }} target/aarch64-apple-darwin/release/${{ env.EXECUTABLE_NAME }} target/x86_64-apple-darwin/release/${{ env.EXECUTABLE_NAME }}
- name: Create release
run: |
mkdir -p build/macos/src/App.app/Contents/MacOS/resources
cp -r resources/ build/macos/src/App.app/Contents/MacOS/resources
cp target/release/${{ env.EXECUTABLE_NAME }} build/macos/src/App.app/Contents/MacOS/
strip build/macos/src/App.app/Contents/MacOS/${{ env.EXECUTABLE_NAME }}
mv build/macos/src/App.app build/macos/src/${{ env.OSX_APP_NAME }}.app
ln -s /Applications build/macos/src/
hdiutil create -fs HFS+ -volname "${{ env.OSX_APP_NAME }}" -srcfolder build/macos/src ${{ env.EXECUTABLE_NAME }}.dmg
- name: Upload release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.EXECUTABLE_NAME }}.dmg
asset_name: ${{ env.EXECUTABLE_NAME }}_${{ steps.tag.outputs.tag }}_macOS.dmg
tag: ${{ github.ref }}
overwrite: true
build-linux:
runs-on: ubuntu-latest
steps:
- name: Get tag
id: tag
uses: dawidd6/action-get-tag@v1
- name: Checkout repository
uses: actions/checkout@v3
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt install -y \
libx11-dev \
libxext-dev \
libxft-dev \
libxinerama-dev \
libxcursor-dev \
libxrender-dev \
libxfixes-dev \
libpango1.0-dev \
libgl1-mesa-dev \
libglu1-mesa-dev \
libasound2-dev \
pkg-config \
libudev-dev
- name: Build release
run: |
cargo build --release
- name: Prepare release
run: |
strip target/release/${{ env.EXECUTABLE_NAME }}
chmod +x target/release/${{ env.EXECUTABLE_NAME }}
mv target/release/${{ env.EXECUTABLE_NAME }} .
- name: Bundle release
run: |
tar -czf ${{ env.EXECUTABLE_NAME }}_linux.tar.gz ${{ env.EXECUTABLE_NAME }} resources
- name: Upload release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.EXECUTABLE_NAME }}_linux.tar.gz
asset_name: ${{ env.EXECUTABLE_NAME }}_${{ steps.tag.outputs.tag }}_linux.tar.gz
tag: ${{ github.ref }}
overwrite: true
build-windows:
runs-on: windows-latest
steps:
- name: Get tag
id: tag
uses: dawidd6/action-get-tag@v1
- name: Checkout repository
uses: actions/checkout@v3
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Build release
run: |
cargo build --release
- name: Prepare release
run: |
mkdir target/release/resources && cp -r resources target/release/resources
- name: Zip release
uses: vimtor/action-zip@v1
with:
files: target/release/resources/ target/release/${{ env.EXECUTABLE_NAME }}.exe
dest: ${{ env.EXECUTABLE_NAME }}_windows.zip
- name: Upload release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.EXECUTABLE_NAME }}_windows.zip
asset_name: ${{ env.EXECUTABLE_NAME }}_${{ steps.tag.outputs.tag }}_windows.zip
tag: ${{ github.ref }}
overwrite: true