forked from MUME/MMapper
-
Notifications
You must be signed in to change notification settings - Fork 0
132 lines (125 loc) 路 4.67 KB
/
Copy pathbuild-release.yml
File metadata and controls
132 lines (125 loc) 路 4.67 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
name: build-release
on:
push:
tags:
- 'v*'
branches:
- master
pull_request:
workflow_dispatch:
jobs:
build:
runs-on: ${{ matrix.os }}
continue-on-error: false
strategy:
fail-fast: false
matrix:
os: [windows-2022, macos-15-intel, macos-15, ubuntu-22.04, ubuntu-22.04-arm]
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
submodules: true
- if: runner.os == 'Windows' || runner.os == 'macOS'
uses: lukka/get-cmake@latest
- if: runner.os == 'Windows'
uses: ilammy/msvc-dev-cmd@v1
# Install Dependencies (Ubuntu)
- if: runner.os == 'Linux'
name: Install Packages for Ubuntu
run: |
sudo apt update -qq
sudo apt install -y \
qt6-base-dev qt6-base-dev-tools libqt6opengl6-dev libqt6websockets6-dev \
libgl1-mesa-dev qtkeychain-qt6-dev build-essential cmake ninja-build mold git \
zlib1g-dev libssl-dev
echo "QMAKESPEC=linux-g++" >> $GITHUB_ENV
echo "CC=gcc-12" >> $GITHUB_ENV
echo "CXX=g++-12" >> $GITHUB_ENV
echo "MMAPPER_CMAKE_EXTRA=-DUSE_MOLD=true -DPACKAGE_TYPE=Deb" >> $GITHUB_ENV
# Install Dependencies (Mac)
- if: runner.os == 'macOS'
name: Install Qt for Mac
uses: jurplel/install-qt-action@v4
with:
version: 6.5.3
arch: clang_64
cache: true
modules: 'qtwebsockets'
- if: runner.os == 'macOS'
name: Install Packages for Mac
run: |
echo "MMAPPER_CMAKE_EXTRA=-DCMAKE_PREFIX_PATH=$env:QT_ROOT_DIR -DPACKAGE_TYPE=Dmg" >> $GITHUB_ENV
# Install Dependencies (Windows)
- if: runner.os == 'Windows'
name: Install Qt for Windows
uses: jurplel/install-qt-action@v4
with:
version: 6.5.3
dir: 'C:\'
arch: win64_msvc2019_64
cache: true
modules: 'qtwebsockets'
# Build
- if: runner.os == 'Windows'
name: Build MMapper for Windows
shell: pwsh
run: |
mkdir ${{ github.workspace }}/artifact
mkdir build
cd build
cmake --version
$packageDir = ($env:GITHUB_WORKSPACE -replace '\\', '/') + "/artifact"
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -G 'Ninja' -DCPACK_PACKAGE_DIRECTORY="$packageDir" -DCMAKE_PREFIX_PATH=$env:QT_ROOT_DIR -DWITH_WEBSOCKET=ON -DWITH_QTKEYCHAIN=ON -DPACKAGE_TYPE=Nsis -S .. || exit -1
cmake --build . --parallel
- if: runner.os == 'Linux' || runner.os == 'macOS'
name: Build MMapper for Linux and Mac
run: |
mkdir -p build ${{ github.workspace }}/artifact
cd build
cmake --version
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -G 'Ninja' -DCPACK_PACKAGE_DIRECTORY=${{ github.workspace }}/artifact $MMAPPER_CMAKE_EXTRA -DWITH_WEBSOCKET=ON -DWITH_QTKEYCHAIN=ON -S .. || exit -1
cmake --build . --parallel
# Package
- name: Package MMapper
run: cd build && cpack
- if: runner.os == 'Linux'
name: Get Linux package file base name
id: get_linux_package_name
run: |
PACKAGE_FILE=$(ls ${{ github.workspace }}/artifact/*.deb)
PACKAGE_BASENAME=$(basename "$PACKAGE_FILE" | sed 's/\./-/g')
echo "PACKAGE_BASENAME=$PACKAGE_BASENAME" >> $GITHUB_OUTPUT
- if: runner.os == 'macOS'
name: Get Mac package file base name
id: get_mac_package_name
run: |
PACKAGE_FILE=$(ls ${{ github.workspace }}/artifact/*.dmg)
PACKAGE_BASENAME=$(basename "$PACKAGE_FILE" | sed 's/\./-/g')
echo "PACKAGE_BASENAME=$PACKAGE_BASENAME" >> $GITHUB_OUTPUT
- if: runner.os == 'Windows'
name: Get Windows package file base name
id: get_windows_package_name
shell: pwsh
run: |
$packageFile = Get-ChildItem -Path "${{ github.workspace }}/artifact/*.exe" | Select-Object -First 1
$packageBasename = $packageFile.BaseName -replace '\.', '-'
"PACKAGE_BASENAME=$packageBasename" >> $env:GITHUB_OUTPUT
- if: runner.os == 'macOS'
name: Upload Package for Mac
uses: actions/upload-artifact@v5
with:
name: release-${{ steps.get_mac_package_name.outputs.PACKAGE_BASENAME }}
path: ${{ github.workspace }}/artifact/*.dmg*
- if: runner.os == 'Linux'
name: Upload Package for Ubuntu
uses: actions/upload-artifact@v5
with:
name: release-${{ steps.get_linux_package_name.outputs.PACKAGE_BASENAME }}
path: ${{ github.workspace }}/artifact/*.deb*
- if: runner.os == 'Windows'
name: Upload Package for Windows
uses: actions/upload-artifact@v5
with:
name: release-${{ steps.get_windows_package_name.outputs.PACKAGE_BASENAME }}
path: ${{ github.workspace }}/artifact/*.exe*