-
Notifications
You must be signed in to change notification settings - Fork 4
207 lines (190 loc) · 6.95 KB
/
zgb_build_and_package.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
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
name: ZGB Build and Package
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Triggers the workflow on push or pull request events but only for the develop branch
# push:
# branches: [ develop ]
# pull_request:
# branches: [ develop ]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-20.04
name: ZGB-Linux-x64
- os: macos-13
name: ZGB-MacOS-x64
- os: macos-14
name: ZGB-MacOS-arm64
- os: windows-2019
name: ZGB-Windows-x64
# - os: windows-2019
# name: ZGB-Windows-x32
steps:
# ==== ZGB git repo ====
- name: Check out ZGB
uses: actions/checkout@v4
with:
path: CrossZGB/ZGB
submodules: false
# ==== OS Specific Dependencies and GBDK package ====
# Decompress the gbdk contents into ZGB/gbdk
# Remove git repo files
- name: Linux Depends
if: matrix.name == 'ZGB-Linux-x64'
run: |
cd CrossZGB
# GBDK
curl -Lo gbdk.tar.gz https://github.com/gbdk-2020/gbdk-2020/releases/download/4.3.0/gbdk-linux64.tar.gz
tar xvfz gbdk.tar.gz
rm -f gbdk.tar.gz
# ZGB env package
curl -Lo env.zip https://github.com/gbdk-2020/CrossZGB/releases/download/build-assets/CrossZGB_env_mac_linux_2024.0.zip
unzip env.zip
rm -f env.zip
# clean up git files
cd ZGB
rm -rf .git .gitignore .github
cd ..
cd ..
- name: MacOS Depends
if: matrix.name == 'ZGB-MacOS-x64'
run: |
cd CrossZGB
# GBDK
curl -Lo gbdk.tar.gz https://github.com/gbdk-2020/gbdk-2020/releases/download/4.3.0/gbdk-linux64.tar.gz
tar xvfz gbdk.tar.gz
rm -f gbdk.tar.gz
# ZGB env package
curl -Lo env.zip https://github.com/gbdk-2020/CrossZGB/releases/download/build-assets/CrossZGB_env_mac_linux_2024.0.zip
unzip env.zip
rm -f env.zip
# clean up git files
cd ZGB
rm -rf .git .gitignore .github
cd ../..
- name: MacOS Depends
if: matrix.name == 'ZGB-MacOS-arm64'
run: |
cd CrossZGB
# GBDK
curl -Lo gbdk.tar.gz https://github.com/gbdk-2020/gbdk-2020/releases/download/4.3.0/gbdk-macos-arm64.tar.gz
tar xvfz gbdk.tar.gz
rm -f gbdk.tar.gz
# ZGB env package
curl -Lo env.zip https://github.com/gbdk-2020/CrossZGB/releases/download/build-assets/CrossZGB_env_mac_linux_2024.0.zip
unzip env.zip
rm -f env.zip
# clean up git files
cd ZGB
rm -rf .git .gitignore .github
cd ../..
- name: Windows x64 Depends
if: matrix.name == 'ZGB-Windows-x64'
run: |
cd CrossZGB
# GBDK
curl -Lo gbdk.zip https://github.com/gbdk-2020/gbdk-2020/releases/download/4.3.0/gbdk-win64.zip
7z x gbdk.zip
del gbdk.zip
# ZGB env package
curl -Lo env.zip https://github.com/gbdk-2020/CrossZGB/releases/download/build-assets/CrossZGB_env_windows_2024.0.zip
7z x env.zip
del env.zip
# clean up git files
cd ZGB
Remove-Item -Path ".git" -Recurse -Force
Remove-Item -Path ".github" -Recurse -Force
Remove-Item -Path ".gitignore" -Force
cd ../..
- name: Windows x32 Depends
if: matrix.name == 'ZGB-Windows-x32'
run: |
cd CrossZGB
# GBDK
curl -Lo gbdk.zip https://github.com/gbdk-2020/gbdk-2020/releases/download/4.3.0/gbdk-win64.zip
7z x gbdk.zip
del gbdk.zip
# ZGB env package
curl -Lo env.zip https://github.com/gbdk-2020/CrossZGB/releases/download/build-assets/CrossZGB_env_windows_2024.0.zip
7z x env.zip
del env.zip
# clean up git files
cd ZGB
Remove-Item -Path ".git" -Recurse -Force
Remove-Item -Path ".github" -Recurse -Force
Remove-Item -Path ".gitignore" -Force
cd ../..
- name: Windows Depends MSYS2/MinGW64
if: matrix.name == 'ZGB-Windows-x64'
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
path-type: minimal #strict
release: false
update: false
install: >-
base-devel
mingw-w64-x86_64-toolchain
- name: Windows Depends MSYS2/MinGW32
if: matrix.name == 'ZGB-Windows-x32'
uses: msys2/setup-msys2@v2
with:
msystem: MINGW32
path-type: minimal #strict
release: false
update: false
install: >-
base-devel
mingw-w64-i686-toolchain
# ==== Pre-Build: Set environment vars ====
# Needs to be in a separate step than build so that setting the environment var takes effect
#
- name: Pre-Build Linux/MacOS
if: (matrix.name == 'ZGB-Linux-x64') || (matrix.name == 'ZGB-MacOS-x64') || (matrix.name == 'ZGB-MacOS-arm64')
shell: bash
run: |
echo "BUILD_PACKAGE_FILENAME=${{ matrix.name }}.tar.gz" >> $GITHUB_ENV
- name: Pre-Build Windows
if: (matrix.name == 'ZGB-Windows-x64') || (matrix.name == 'ZGB-Windows-x32')
shell: bash
run: |
echo "BUILD_PACKAGE_FILENAME=${{ matrix.name }}.zip" >> $GITHUB_ENV
# ==== Builds ====
- name: Build zgb Linux/MacOS
if: (matrix.name == 'ZGB-Linux-x64') || (matrix.name == 'ZGB-MacOS-x64') || (matrix.name == 'ZGB-MacOS-arm64')
shell: bash
run: |
cd CrossZGB/ZGB/tools/
make
cd ../../..
- name: Build zgb Windows
if: (matrix.name == 'ZGB-Windows-x64') || (matrix.name == 'ZGB-Windows-x32')
shell: cmd
run: |
cd CrossZGB/ZGB/tools/
make
cd ../../..
# ==== Packaging ====
- name: Package build Linux/MacOS
if: (matrix.name == 'ZGB-Linux-x64') || (matrix.name == 'ZGB-MacOS-x64') || (matrix.name == 'ZGB-MacOS-arm64')
shell: bash
run: |
mkdir package
tar czf package/${{ env.BUILD_PACKAGE_FILENAME }} CrossZGB
- name: Package build Windows
if: (matrix.name == 'ZGB-Windows-x64') || (matrix.name == 'ZGB-Windows-x32')
shell: cmd
run: |
mkdir package
7z a package/${{ env.BUILD_PACKAGE_FILENAME }} CrossZGB
- name: Store build
if: (matrix.name == 'ZGB-Linux-x64') || (matrix.name == 'ZGB-MacOS-x64') || (matrix.name == 'ZGB-MacOS-arm64') || ('ZGB-Windows-x64') || ('ZGB-Windows-x32')
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.name }} build
path: package/${{ env.BUILD_PACKAGE_FILENAME }}
# retention-days: 14