-
Notifications
You must be signed in to change notification settings - Fork 11
191 lines (160 loc) · 6.8 KB
/
build.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
name: Build Launcher
on:
pull_request:
branches:
- "main"
push:
branches:
- "marc"
workflow_dispatch:
jobs:
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: chickensoft-games/setup-godot@v1
with:
version: 4.2.1
use-dotnet: false
include-templates: true
- name: Verify Setup
run: |
godot --version
- name: Import certificate to Keychain
run: |
echo "${{ secrets.MACOS_CERTIFICATE }}" | base64 --decode > certificate.p12
KEYCHAIN_PASSWORD=$(uuidgen)
security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
security import ./certificate.p12 -k ~/Library/Keychains/build.keychain -P ${{ secrets.MACOS_CERTIFICATE_PASSWORD }} -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PASSWORD" ~/Library/Keychains/build.keychain
env:
MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
- name: Setup notarization credentials
run: |
echo ${{ secrets.GODOT_MACOS_NOTARIZATION_API_KEY }} | base64 --decode > notarization_api_key.p8
- name: Export build
run: |
godot --headless --export-debug "macOS" --verbose 2>&1 | tee build.log
env:
GODOT_MACOS_NOTARIZATION_API_KEY_ID: ${{ secrets.GODOT_MACOS_NOTARIZATION_API_KEY_ID }}
GODOT_MACOS_NOTARIZATION_API_KEY: ./notarization_api_key.p8
GODOT_MACOS_NOTARIZATION_API_UUID: ${{ secrets.GODOT_MACOS_NOTARIZATION_API_UUID }}
- name: Upload macOS build
uses: actions/upload-artifact@v4
with:
name: drivechain_launcher_macos
if-no-files-found: error
path: build/drivechain_launcher-*
- name: Wait for notarization to finish
run: |
request_id=$(grep 'Notarization request UUID' build.log | rev | cut -d ' ' -f 1 | rev | tr -d '"')
xcrun notarytool wait $request_id \
--issuer ${{ secrets.GODOT_MACOS_NOTARIZATION_API_UUID }} \
--key-id ${{ secrets.GODOT_MACOS_NOTARIZATION_API_KEY_ID }} \
--key ./notarization_api_key.p8
build-windows-linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
build: [windows, linux]
steps:
- uses: actions/checkout@v3
- uses: chickensoft-games/setup-godot@v1
with:
version: 4.2.1
use-dotnet: false
include-templates: true
- name: Verify Setup
run: |
godot --version
- name: Export build
run: |
name="${{fromJSON('{"windows": "Windows Desktop", "linux": "Linux/X11"}')[matrix.build] }}"
godot --headless --export-debug "$name" --verbose 2>&1 | tee build.log
- name: Upload Windows/Linux build
uses: actions/upload-artifact@v4
with:
name: drivechain_launcher_${{ matrix.build }}
if-no-files-found: error
path: build/drivechain_launcher-*
test-windows-linux:
name: Test Windows and Linux Builds
runs-on: ubuntu-latest
needs: build-windows-linux
steps:
- name: Download Windows/Linux artifacts
uses: actions/download-artifact@v4
with:
name: drivechain_launcher_windows
- name: Download Windows/Linux artifacts
uses: actions/download-artifact@v4
with:
name: drivechain_launcher_linux
- name: Check out the repository
uses: actions/checkout@v3
- name: Make script executable
run: chmod +x ./scripts/drivechainintegration.sh || echo "Drivechain script not found, skipping chmod"
run: chmod +x ./scripts/functions.sh || echo "Function scrript not found, skipping chmod"
run: chmod +x ./scripts/config.sh || echo "Config script not found, skipping chmod"
- name: Run Tests
run: ./scripts/drivechainintegration.sh || echo "Script not found, skipping tests"
upload-artifacts-macos:
name: Upload macOS artifacts to releases.drivechain.info
runs-on: ubuntu-latest
needs: build-macos
if: github.event_name == 'push' && github.repository_owner == 'LayerTwo-Labs'
steps:
# - name: Download macOS artifacts
# uses: actions/download-artifact@v4
# with:
# name: drivechain_launcher_macos
# - name: Create zip files for macOS
# run: |
# mv drivechain_launcher_macos drivechain-launcher-latest-x86_64-apple-darwin
# zip -r drivechain-launcher-latest-x86_64-apple-darwin.zip drivechain-launcher-latest-x86_64-apple-darwin/*
# - name: Upload macOS release assets to releases.drivechain.info
# uses: cross-the-world/ssh-scp-ssh-pipelines@latest
# with:
# host: 45.33.96.47
# user: root
# pass: ${{ secrets.RELEASES_SERVER_PW }}
# port: 22
# scp: |
# 'drivechain-launcher-latest-x86_64-apple-darwin.zip' => '/var/www/html/'
- name: Skip upload macOS artifacts
run: echo "Skipping upload of macOS artifacts"
upload-artifacts-windows-linux:
name: Upload Windows/Linux artifacts to releases.drivechain.info
runs-on: ubuntu-latest
needs: [test-windows-linux]
if: github.event_name == 'push' && github.repository_owner == 'LayerTwo-Labs'
steps:
# - name: Download Windows/Linux artifacts
# uses: actions/download-artifact@v4
# with:
# name: drivechain_launcher_windows
# - name: Download Windows/Linux artifacts
# uses: actions/download-artifact@v4
# with:
# name: drivechain_launcher_linux
# - name: Create zip files for Windows/Linux
# run: |
# mv drivechain_launcher_linux drivechain-launcher-latest-x86_64-unknown-linux-gnu
# zip -r drivechain-launcher-latest-x86_64-unknown-linux-gnu.zip drivechain-launcher-latest-x86_64-unknown-linux-gnu/*
# mv drivechain_launcher_windows drivechain-launcher-latest-x86_64-w64
# zip -r drivechain-launcher-latest-x86_64-w64.zip drivechain-launcher-latest-x86_64-w64/*
# - name: Upload Windows/Linux release assets to releases.drivechain.info
# uses: cross-the-world/ssh-scp-ssh-pipelines@latest
# with:
# host: 45.33.96.47
# user: root
# pass: ${{ secrets.RELEASES_SERVER_PW }}
# port: 22
# scp: |
# 'drivechain-launcher-latest-x86_64-unknown-linux-gnu.zip' => '/var/www/html/'
# 'drivechain-launcher-latest-x86_64-w64.zip' => '/var/www/html/'
- name: Skip upload Windows/Linux artifacts
run: echo "Skipping upload of Windows/Linux artifacts"