-
Notifications
You must be signed in to change notification settings - Fork 4
161 lines (135 loc) · 5.2 KB
/
release.yaml
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
name: Build Spec-Hops
on:
pull_request:
branches: [master] # Adjust this if your main branch has a different name
release:
types: [created]
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: write
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
name: Build on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
output_name: Spec-Hops-linux
- os: macos-latest
output_name: Spec-Hops-macos-intel
arch: x86_64
- os: macos-latest
output_name: Spec-Hops-macos-arm
arch: arm64
- os: windows-latest
output_name: Spec-Hops-windows.exe
steps:
- name: Checkout repository and submodules
uses: actions/checkout@v3
with:
submodules: recursive
- name: Print status of submodules
run: |
git submodule update --init --recursive
git submodule status
- name: Install dependencies (Ubuntu)
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y cmake ninja-build libgl1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libwayland-dev libxkbcommon-dev xorg-dev libglu1-mesa-dev
sudo apt-get install libxrandr-dev libxinerama-dev libxcursor-dev mesa-common-dev libx11-xcb-dev pkg-config nodejs npm
- name: Install dependencies (macOS)
if: matrix.os == 'macos-latest'
run: |
brew install cmake ninja
- name: Install dependencies (Windows)
if: matrix.os == 'windows-latest'
run: |
choco install cmake ninja
- name: Configure CMake (Windows)
if: matrix.os == 'windows-latest'
run: |
mkdir build
cd build
cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Release ..
- name: Configure CMake (Others)
if: matrix.os != 'windows-latest'
run: |
mkdir build
cd build
cmake -GNinja -DCMAKE_BUILD_TYPE=Release ${{ matrix.os == 'macos-latest' && format('-DCMAKE_OSX_ARCHITECTURES={0}', matrix.arch) || '' }} ..
- name: Build
run: |
cmake --build build --config Release
- name: Prepare release package
if: github.event_name == 'release'
run: |
mkdir release
cp build/OpenGL/${{ matrix.os == 'windows-latest' && 'Release/' || '' }}Spec-Hops${{ matrix.os == 'windows-latest' && '.exe' || '' }} release/${{ matrix.output_name }}
cp -r OpenGL/res release/res
- name: Set executable permissions (macOS)
if: github.event_name == 'release' && matrix.os != 'windows-latest'
run: |
chmod +x release/${{ matrix.output_name }}
- name: Create release archive (Unix)
if: github.event_name == 'release' && matrix.os != 'windows-latest'
run: |
cd release
zip -r ../${{ matrix.output_name }}.zip .
- name: Create release archive (Windows)
if: github.event_name == 'release' && matrix.os == 'windows-latest'
run: |
Compress-Archive -Path release\* -DestinationPath ${{ matrix.output_name }}.zip
- name: Upload Release Asset
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ matrix.output_name }}.zip
asset_name: ${{ matrix.output_name }}.zip
tag: ${{ github.ref }}
overwrite: true
build-web:
name: Build for Web and Deploy to GitHub Pages
runs-on: ubuntu-latest
steps:
- name: Checkout repository and submodules
uses: actions/checkout@v3
with:
submodules: recursive
- name: Setup Emscripten
uses: mymindstorm/setup-emsdk@v11
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y cmake ninja-build libgl1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libwayland-dev libxkbcommon-dev xorg-dev libglu1-mesa-dev
sudo apt-get install libxrandr-dev libxinerama-dev libxcursor-dev mesa-common-dev libx11-xcb-dev pkg-config nodejs npm
- name: Configure and Build with Emscripten
run: |
mkdir build_emscripten && cd build_emscripten
emcmake cmake -DCMAKE_BUILD_TYPE=Release ..
emmake make
- name: Prepare Web Build
run: |
mkdir web_build
cp build_emscripten/OpenGL/Spec-Hops.data web_build/
cp build_emscripten/OpenGL/Spec-Hops.js web_build/
cp build_emscripten/OpenGL/Spec-Hops.wasm web_build/
cp -r build_emscripten/OpenGL/static web_build/
cp build_emscripten/OpenGL/Spec-Hops.html web_build/index.html
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: './web_build'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4