-
Notifications
You must be signed in to change notification settings - Fork 0
109 lines (97 loc) · 3.38 KB
/
Copy pathwindows-build.yml
File metadata and controls
109 lines (97 loc) · 3.38 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
name: Windows Release
on:
workflow_dispatch:
push:
tags:
- "v*.*.*"
jobs:
build-windows:
runs-on: windows-latest
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v5
- name: Set up MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: >-
mingw-w64-x86_64-toolchain
mingw-w64-x86_64-rust
mingw-w64-x86_64-libopenmpt
mingw-w64-x86_64-ffmpeg
mingw-w64-x86_64-clang
- name: Build RustTracker
env:
BINDGEN_EXTRA_CLANG_ARGS: "-target x86_64-pc-windows-gnu"
CARGO_PROFILE_RELEASE_LTO: "true"
CARGO_PROFILE_RELEASE_CODEGEN_UNITS: "1"
CARGO_PROFILE_RELEASE_STRIP: "true"
run: |
cargo build --release
- name: Package Release
run: |
mkdir release
cp target/release/rusttracker.exe release/rusttracker.exe
mkdir -p release/assets
cp assets/soundfont.sf2 release/assets/soundfont.sf2
# Automatically resolve and copy all required MSYS2 DLLs (including FFmpeg transitive dependencies)
ldd target/release/rusttracker.exe | grep -i '/mingw64' | awk '{print $3}' | xargs -I '{}' cp '{}' release/
- name: Get Version
run: |
VERSION=$(grep -m 1 '^version' Cargo.toml | cut -d '"' -f 2)
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Sign Executable
shell: pwsh
env:
AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
VAULT_URL: ${{ secrets.AZURE_SIGNING_VAULT_URL }}
CERT_NAME: ${{ secrets.AZURE_SIGNING_CERT_NAME }}
if: ${{ env.AZURE_CLIENT_ID != '' }}
run: |
dotnet tool install --global AzureSignTool
azuresigntool sign `
-kvu "$env:VAULT_URL" `
-kvi "$env:AZURE_CLIENT_ID" `
-kvs "$env:AZURE_CLIENT_SECRET" `
-kct "$env:AZURE_TENANT_ID" `
-kco "$env:CERT_NAME" `
-tr http://timestamp.digicert.com `
-td sha256 `
-fd sha256 `
release/rusttracker.exe
- name: Build Installer
shell: cmd
run: |
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" "/DMyAppVersion=%VERSION%" installer.iss
- name: Sign Installer
shell: pwsh
env:
AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
VAULT_URL: ${{ secrets.AZURE_SIGNING_VAULT_URL }}
CERT_NAME: ${{ secrets.AZURE_SIGNING_CERT_NAME }}
if: ${{ env.AZURE_CLIENT_ID != '' }}
run: |
azuresigntool sign `
-kvu "$env:VAULT_URL" `
-kvi "$env:AZURE_CLIENT_ID" `
-kvs "$env:AZURE_CLIENT_SECRET" `
-kct "$env:AZURE_TENANT_ID" `
-kco "$env:CERT_NAME" `
-tr http://timestamp.digicert.com `
-td sha256 `
-fd sha256 `
setup/RustTracker-Setup.exe
- name: Upload Artifact
uses: actions/upload-artifact@v5
with:
name: RustTracker-Windows
path: setup/RustTracker-Setup.exe