blob: c6f06ae2a8a75f497fd50239e137ea3a1273d8f1 (
plain)
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
|
name: "MeshMC: Release"
on:
push:
tags:
- "*"
permissions: {}
jobs:
build_release:
name: Build Release
uses: ./.github/workflows/meshmc-build.yml
permissions:
contents: read
id-token: write
packages: write
with:
build-type: Release
environment: Release
secrets: inherit
create_release:
needs: build_release
permissions:
contents: write
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
- name: Download build artifacts
uses: actions/download-artifact@v8
- name: Grab and store version
run: |
tag_name=$(echo "${{ github.ref }}" | grep -oE "[^/]+$")
echo "VERSION=$tag_name" >> "$GITHUB_ENV"
# ── Source tarball preparation ──────────────────────────────
- name: Prepare source tree
id: prepare
run: |
set -euo pipefail
SRC_STAGE="source-stage"
mkdir -p "$SRC_STAGE"
cp -a meshmc "$SRC_STAGE/meshmc"
# Bundle handbook docs
if [ -d "docs/handbook/meshmc" ]; then
mkdir -p "$SRC_STAGE/meshmc/docs/handbook"
cp -a docs/handbook/meshmc/. "$SRC_STAGE/meshmc/docs/handbook/"
fi
# Bundle libnbtplusplus and patch CMakeLists.txt
mkdir -p "$SRC_STAGE/meshmc/libraries/libnbtplusplus"
cp -a libnbtplusplus/. "$SRC_STAGE/meshmc/libraries/libnbtplusplus/"
sed -i "s|add_subdirectory(\${CMAKE_SOURCE_DIR}/../libnbtplusplus libnbtplusplus)|add_subdirectory(libraries/libnbtplusplus)|g" \
"$SRC_STAGE/meshmc/CMakeLists.txt"
echo "source-dir=$SRC_STAGE/meshmc" >> "$GITHUB_OUTPUT"
- name: Package source archives
uses: ./.github/actions/package-source
with:
project: meshmc
version: ${{ env.VERSION }}
source-dir: ${{ steps.prepare.outputs.source-dir }}
output-dir: release-artifacts
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-private-key-id: ${{ secrets.GPG_PRIVATE_KEY_ID }}
# ── Binary artifact packaging ──────────────────────────────
- name: Package binary artifacts
run: |
# shellcheck disable=SC2086,SC2035
mv MeshMC-Linux-Qt6-Portable*/MeshMC-portable.tar.gz MeshMC-Linux-Qt6-Portable-${{ env.VERSION }}.tar.gz
mv MeshMC-Linux-aarch64-Qt6-Portable*/MeshMC-portable.tar.gz MeshMC-Linux-aarch64-Qt6-Portable-${{ env.VERSION }}.tar.gz
mv MeshMC-*.AppImage/MeshMC-*-x86_64.AppImage MeshMC-Linux-x86_64.AppImage
mv MeshMC-*.AppImage.zsync/MeshMC-*-x86_64.AppImage.zsync MeshMC-Linux-x86_64.AppImage.zsync
mv MeshMC-*.AppImage/MeshMC-*-aarch64.AppImage MeshMC-Linux-aarch64.AppImage
mv MeshMC-*.AppImage.zsync/MeshMC-*-aarch64.AppImage.zsync MeshMC-Linux-aarch64.AppImage.zsync
mv MeshMC-macOS*/MeshMC.zip MeshMC-macOS-${{ env.VERSION }}.zip
mv MeshMC-macOS*/MeshMC.dmg MeshMC-macOS-${{ env.VERSION }}.dmg
for d in MeshMC-Windows-MSVC*; do
cd "${d}" || continue
LEGACY="$(echo -n "${d}" | grep -o Legacy || true)"
ARM64="$(echo -n "${d}" | grep -o arm64 || true)"
INST="$(echo -n "${d}" | grep -o Setup || true)"
PORT="$(echo -n "${d}" | grep -o Portable || true)"
NAME="MeshMC-Windows-MSVC"
test -z "${LEGACY}" || NAME="${NAME}-Legacy"
test -z "${ARM64}" || NAME="${NAME}-arm64"
test -z "${PORT}" || NAME="${NAME}-Portable"
test -z "${INST}" || mv MeshMC-*.exe "../${NAME}-Setup-${{ env.VERSION }}.exe"
test -n "${INST}" || zip -r -9 "../${NAME}-${{ env.VERSION }}.zip" -- *
cd ..
done
for d in MeshMC-Windows-MinGW-w64*; do
cd "${d}" || continue
INST="$(echo -n "${d}" | grep -o Setup || true)"
PORT="$(echo -n "${d}" | grep -o Portable || true)"
NAME="MeshMC-Windows-MinGW-w64"
test -z "${PORT}" || NAME="${NAME}-Portable"
test -z "${INST}" || mv MeshMC-*.exe "../${NAME}-Setup-${{ env.VERSION }}.exe"
test -n "${INST}" || zip -r -9 "../${NAME}-${{ env.VERSION }}.zip" -- *
cd ..
done
for d in MeshMC-Windows-MinGW-arm64*; do
cd "${d}" || continue
INST="$(echo -n "${d}" | grep -o Setup || true)"
PORT="$(echo -n "${d}" | grep -o Portable || true)"
NAME="MeshMC-Windows-MinGW-arm64"
test -z "${PORT}" || NAME="${NAME}-Portable"
test -z "${INST}" || mv MeshMC-*.exe "../${NAME}-Setup-${{ env.VERSION }}.exe"
test -n "${INST}" || zip -r -9 "../${NAME}-${{ env.VERSION }}.zip" -- *
cd ..
done
# ── Single release creation ────────────────────────────────
- name: Create release
id: create_release
uses: softprops/action-gh-release@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ github.ref }}
name: MeshMC ${{ env.VERSION }}
draft: true
prerelease: false
fail_on_unmatched_files: true
files: |
MeshMC-Linux-x86_64.AppImage
MeshMC-Linux-x86_64.AppImage.zsync
MeshMC-Linux-aarch64.AppImage
MeshMC-Linux-aarch64.AppImage.zsync
MeshMC-Linux-Qt6-Portable-${{ env.VERSION }}.tar.gz
MeshMC-Linux-aarch64-Qt6-Portable-${{ env.VERSION }}.tar.gz
MeshMC-Windows-MinGW-w64-${{ env.VERSION }}.zip
MeshMC-Windows-MinGW-w64-Portable-${{ env.VERSION }}.zip
MeshMC-Windows-MinGW-w64-Setup-${{ env.VERSION }}.exe
MeshMC-Windows-MinGW-arm64-${{ env.VERSION }}.zip
MeshMC-Windows-MinGW-arm64-Portable-${{ env.VERSION }}.zip
MeshMC-Windows-MinGW-arm64-Setup-${{ env.VERSION }}.exe
MeshMC-Windows-MSVC-arm64-${{ env.VERSION }}.zip
MeshMC-Windows-MSVC-arm64-Portable-${{ env.VERSION }}.zip
MeshMC-Windows-MSVC-arm64-Setup-${{ env.VERSION }}.exe
MeshMC-Windows-MSVC-${{ env.VERSION }}.zip
MeshMC-Windows-MSVC-Portable-${{ env.VERSION }}.zip
MeshMC-Windows-MSVC-Setup-${{ env.VERSION }}.exe
MeshMC-macOS-${{ env.VERSION }}.zip
MeshMC-macOS-${{ env.VERSION }}.dmg
release-artifacts/*
|