Skip to content

Commit 8bf3e71

Browse files
committed
[GITHUB] Add weekly pre-releases workflow for Generals and GeneralsMD builds
1 parent 15a53d5 commit 8bf3e71

File tree

1 file changed

+170
-0
lines changed

1 file changed

+170
-0
lines changed

.github/workflows/weekly-release.yml

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
name: Weekly Release
2+
3+
permissions:
4+
contents: write
5+
pull-requests: write
6+
7+
on:
8+
workflow_dispatch:
9+
schedule:
10+
- cron: '0 8 * * 1'
11+
12+
concurrency:
13+
group: ${{ github.workflow }}-${{ github.ref }}
14+
cancel-in-progress: true
15+
16+
jobs:
17+
detect-scm-changes:
18+
runs-on: ubuntu-latest
19+
outputs:
20+
changed: ${{ steps.check.outputs.changed }}
21+
steps:
22+
- uses: actions/checkout@v4
23+
with:
24+
fetch-depth: 0
25+
fetch-tags: true
26+
- id: check
27+
run: |
28+
echo LAST TAG:
29+
git describe --tags --abbrev=0 2>/dev/null || echo ""
30+
31+
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
32+
if [ -z "$LAST_TAG" ]; then
33+
echo "changed=true" >> $GITHUB_OUTPUT
34+
exit 0
35+
fi
36+
CHANGED=$(git diff --name-only $LAST_TAG..HEAD | grep -v '.github/workflows/' | wc -l)
37+
if [ "$CHANGED" -eq "0" ]; then
38+
echo "changed=false" >> $GITHUB_OUTPUT
39+
else
40+
echo "changed=true" >> $GITHUB_OUTPUT
41+
fi
42+
43+
build-generals:
44+
needs: detect-scm-changes
45+
if: needs.detect-scm-changes.outputs.changed == 'true'
46+
name: Build Generals${{ matrix.preset && '' }}
47+
strategy:
48+
matrix:
49+
include:
50+
- preset: "vc6"
51+
tools: true
52+
extras: true
53+
- preset: "win32-vcpkg"
54+
tools: true
55+
extras: true
56+
fail-fast: false
57+
uses: ./.github/workflows/build-toolchain.yml
58+
with:
59+
game: "Generals"
60+
preset: ${{ matrix.preset }}
61+
tools: ${{ matrix.tools }}
62+
extras: ${{ matrix.extras }}
63+
secrets: inherit
64+
65+
build-generalsmd:
66+
needs: detect-scm-changes
67+
if: needs.detect-scm-changes.outputs.changed == 'true'
68+
name: Build GeneralsMD${{ matrix.preset && '' }}
69+
strategy:
70+
matrix:
71+
include:
72+
- preset: "vc6"
73+
tools: true
74+
extras: true
75+
- preset: "win32"
76+
tools: true
77+
extras: true
78+
fail-fast: false
79+
uses: ./.github/workflows/build-toolchain.yml
80+
with:
81+
game: "GeneralsMD"
82+
preset: ${{ matrix.preset }}
83+
tools: ${{ matrix.tools }}
84+
extras: ${{ matrix.extras }}
85+
secrets: inherit
86+
87+
create-release:
88+
name: Create Release
89+
needs: [ build-generals, build-generalsmd ]
90+
runs-on: ubuntu-latest
91+
steps:
92+
- name: Set Date Output
93+
id: set_date
94+
run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
95+
96+
# Generals vc6
97+
- name: Download Generals VC6 Artifacts
98+
uses: actions/download-artifact@v4
99+
with:
100+
name: Generals-vc6+t+e
101+
path: generals-vc6-artifacts
102+
103+
- name: Prepare and Zip Generals VC6
104+
run: |
105+
mkdir generals-vc6-release
106+
cp generals-vc6-artifacts/generalsv.exe generals-vc6-release/GeneralsV.exe
107+
cp generals-vc6-artifacts/W3DViewV.exe generals-vc6-release/W3DViewV.exe
108+
cp generals-vc6-artifacts/WorldBuilderV.exe generals-vc6-release/WorldBuilderV.exe
109+
zip -j generals-vc6-${{ steps.set_date.outputs.date }}-weekly.zip generals-vc6-release/*
110+
111+
# Generals win32
112+
- name: Download Generals Win32 Artifacts
113+
uses: actions/download-artifact@v4
114+
with:
115+
name: Generals-win32-vcpkg+t+e
116+
path: generals-win32-artifacts
117+
118+
- name: Prepare and Zip Generals Win32
119+
run: |
120+
mkdir generals-win32-release
121+
cp generals-win32-artifacts/generalsv.exe generals-win32-release/GeneralsV.exe
122+
cp generals-win32-artifacts/W3DViewV.exe generals-win32-release/W3DViewV.exe
123+
cp generals-win32-artifacts/WorldBuilderV.exe generals-win32-release/WorldBuilderV.exe
124+
zip -j generals-win32-${{ steps.set_date.outputs.date }}-weekly.zip generals-win32-release/*
125+
126+
# GeneralsMD vc6
127+
- name: Download GeneralsMD VC6 Artifacts
128+
uses: actions/download-artifact@v4
129+
with:
130+
name: GeneralsMD-vc6+t+e
131+
path: generalsmd-vc6-artifacts
132+
133+
- name: Prepare and Zip GeneralsMD VC6
134+
run: |
135+
mkdir generalsmd-vc6-release
136+
cp generalsmd-vc6-artifacts/generalszh.exe generalsmd-vc6-release/GeneralsZHv.exe
137+
cp generalsmd-vc6-artifacts/W3DViewZH.exe generalsmd-vc6-release/W3DViewZHv.exe
138+
cp generalsmd-vc6-artifacts/WorldBuilderZH.exe generalsmd-vc6-release/WorldBuilderZHv.exe
139+
zip -j generalszh-vc6-${{ steps.set_date.outputs.date }}-weekly.zip generalsmd-vc6-release/*
140+
141+
# GeneralsMD win32
142+
- name: Download GeneralsMD Win32 Artifacts
143+
uses: actions/download-artifact@v4
144+
with:
145+
name: GeneralsMD-win32+t+e
146+
path: generalsmd-win32-artifacts
147+
148+
- name: Prepare and Zip GeneralsMD Win32
149+
run: |
150+
mkdir generalsmd-win32-release
151+
cp generalsmd-win32-artifacts/generalszh.exe generalsmd-win32-release/GeneralsZHv.exe
152+
cp generalsmd-win32-artifacts/W3DViewZH.exe generalsmd-win32-release/W3DViewZHv.exe
153+
cp generalsmd-win32-artifacts/WorldBuilderZH.exe generalsmd-win32-release/WorldBuilderZHv.exe
154+
zip -j generalszh-win32-${{ steps.set_date.outputs.date }}-weekly.zip generalsmd-win32-release/*
155+
156+
- name: Create GitHub Release
157+
uses: softprops/action-gh-release@v2
158+
with:
159+
tag_name: ${{ steps.set_date.outputs.date }}-weekly
160+
name: ${{ steps.set_date.outputs.date }}-weekly
161+
body: |
162+
**Build notes:**
163+
164+
- **VC6 builds**: May be less compatible with modern systems, but guarantee compatibility with the original binary for multiplayer.
165+
- **Win32 builds**: Offer better compatibility with modern systems, but multiplayer will only work with other win32 builds.
166+
files: |
167+
generals-*-*-weekly.zip
168+
generalszh-*-*-weekly.zip
169+
env:
170+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)