-
Notifications
You must be signed in to change notification settings - Fork 39
176 lines (149 loc) · 7.12 KB
/
build.yml
File metadata and controls
176 lines (149 loc) · 7.12 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
name: Build
on:
push:
branches:
- '**'
release:
types: [ created ]
pull_request:
types: [ opened, synchronize, reopened ]
jobs:
build:
name: Build
runs-on: ${{ (github.repository == 'OrfeasZ/ZHMModSDK' && 'ptlm-runner') || 'windows-latest' }}
if: github.event_name == 'pull_request' || github.event_name == 'release' || (github.event_name == 'push' && github.ref == 'refs/heads/master') || github.repository != 'OrfeasZ/ZHMModSDK'
steps:
- name: Get latest CMake and ninja
uses: lukka/get-cmake@latest
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Rust nightly toolchain
uses: dtolnay/rust-toolchain@nightly
if: github.repository != 'OrfeasZ/ZHMModSDK'
with:
components: rust-src
- name: Setup VS environment
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64
- name: Build and install debug
run: |
cmake --preset x64-Debug .
cmake --build _build/x64-Debug -j12
cmake --install _build/x64-Debug
- name: Build and install release
run: |
cmake --preset x64-Release .
cmake --build _build/x64-Release -j12
cmake --install _build/x64-Release
- name: Copy debug artifacts
run: |
mkdir _dist-debug
Copy-Item _install/x64-Debug/bin/* -Destination _dist-debug/ -Recurse
Copy-Item _install/x64-Debug/licenses -Destination _dist-debug/ -Recurse
Copy-Item LICENSE -Destination _dist-debug/LICENSE
- name: Copy release artifacts
run: |
mkdir _dist-release
Copy-Item _install/x64-Release/bin/* -Destination _dist-release/ -Recurse
Copy-Item _install/x64-Release/licenses -Destination _dist-release/ -Recurse
Copy-Item LICENSE -Destination _dist-release/LICENSE
- name: Copy SDK dev artifacts
run: |
mkdir _sdk
Copy-Item cmake/sdk-dist.cmake -Destination _sdk/CMakeLists.txt
Copy-Item _install/x64-Release/include -Destination _sdk/ -Recurse
mkdir _sdk/release
Copy-Item _install/x64-Release/lib -Destination _sdk/release/ -Recurse
Copy-Item _install/x64-Release/bin -Destination _sdk/release/ -Recurse
Remove-Item _sdk/release/bin/mods -Recurse
Remove-Item _sdk/release/bin/dinput8.dll
Remove-Item _sdk/release/bin/dinput8.pdb
Remove-Item _sdk/release/bin/ResourceLib_HM3.dll
Remove-Item _sdk/release/bin/ResourceLib_HM3.pdb
Remove-Item _sdk/release/bin/crashpad_handler.exe
mkdir _sdk/debug
Copy-Item _install/x64-Debug/lib -Destination _sdk/debug/ -Recurse
Copy-Item _install/x64-Debug/bin -Destination _sdk/debug/ -Recurse
Remove-Item _sdk/debug/bin/mods -Recurse
Remove-Item _sdk/debug/bin/dinput8.dll
Remove-Item _sdk/debug/bin/dinput8.pdb
Remove-Item _sdk/debug/bin/ResourceLib_HM3.dll
Remove-Item _sdk/debug/bin/ResourceLib_HM3.pdb
Remove-Item _sdk/debug/bin/crashpad_handler.exe
mkdir _sdk/cmake
Copy-Item cmake/zhm-mod.cmake -Destination _sdk/cmake/zhm-mod.cmake
Copy-Item _install/x64-Release/licenses -Destination _sdk/ -Recurse
Copy-Item LICENSE -Destination _sdk/LICENSE
- name: Upload symbols to sentry
if: github.repository == 'OrfeasZ/ZHMModSDK' && github.event_name == 'release'
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
run: |
npx @sentry/cli debug-files upload _dist-debug/
npx @sentry/cli debug-files upload _dist-release/
- name: Archive debug SDK and mods
uses: actions/upload-artifact@v4
with:
name: ZHMModSDK-Debug
path: _dist-debug/*
- name: Move release PDBs recursively into a separate folder
shell: powershell
run: |
mkdir _dist-release-pdbs
Get-ChildItem -Path _dist-release\* -Include *.pdb -Recurse | Move-Item -Destination _dist-release-pdbs
- name: Archive release SDK and mods
uses: actions/upload-artifact@v4
with:
name: ZHMModSDK-Release
path: _dist-release/*
- name: Archive release PDBs
uses: actions/upload-artifact@v4
with:
name: ZHMModSDK-Release-PDBs
path: _dist-release-pdbs/*
- name: Archive SDK dev package
uses: actions/upload-artifact@v4
with:
name: DevPkg-ZHMModSDK
path: _sdk/*
upload_release:
name: Upload release artifacts
needs: build
if: github.repository == 'OrfeasZ/ZHMModSDK' && github.event_name == 'release'
runs-on: ubuntu-latest
strategy:
matrix:
artifact:
- ZHMModSDK-Release
- ZHMModSDK-Release-PDBs
- ZHMModSDK-Debug
- DevPkg-ZHMModSDK
steps:
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: ${{ matrix.artifact }}
path: ${{ matrix.artifact }}
- name: Archive artifact files
run: |
cd ${{ matrix.artifact }}
zip -r ${{ matrix.artifact }}.zip *
- name: Get release
id: get_release
uses: bruceadams/get-release@v1.2.2
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Upload release assets
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ${{ matrix.artifact }}/${{ matrix.artifact }}.zip
asset_name: ${{ matrix.artifact }}.zip
asset_content_type: application/zip