Skip to content
This repository was archived by the owner on Oct 4, 2024. It is now read-only.

Commit 9a24d55

Browse files
committed
build: change tooling to match TR1X
1 parent 36c166c commit 9a24d55

23 files changed

+529
-226
lines changed

.github/workflows/build_docker.yml

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,24 @@ jobs:
77
publish_docker_image:
88
name: Build Docker toolchain
99
runs-on: ubuntu-latest
10+
strategy:
11+
matrix:
12+
include:
13+
- platform: win
1014
steps:
11-
- name: 'Login to Docker Hub'
15+
- name: Login to Docker Hub
1216
uses: docker/login-action@v1
1317
with:
1418
username: ${{ secrets.DOCKERHUB_USERNAME }}
1519
password: ${{ secrets.DOCKERHUB_PASSWORD }}
1620

17-
- name: 'Checkout code'
18-
uses: actions/checkout@v2
19-
with:
20-
path: .
21-
fetch-tags: true
21+
- name: Install dependencies
22+
uses: taiki-e/install-action@just
23+
24+
- name: Checkout code
25+
uses: actions/checkout@v4
2226

23-
- name: 'Build Docker image'
27+
- name: Build Docker image (${{ matrix.platform }})
2428
run: |
25-
docker build -t "rrdash/tr2x:latest" . -f docker/game-win/Dockerfile
26-
docker push "rrdash/tr2x:latest"
29+
just image-${{ matrix.platform }}
30+
just push-image-${{ matrix.platform }}

.github/workflows/build_game_win.yml

Lines changed: 0 additions & 66 deletions
This file was deleted.

.github/workflows/lint.yml

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,50 @@ jobs:
1313
uses: actions/checkout@v2
1414
with:
1515
path: .
16-
fetch-tags: true
16+
fetch-depth: 0
1717

18-
- name: 'Install dependencies'
18+
- name: Check JSON files validity
19+
shell: python
20+
run: |
21+
import json
22+
from pathlib import Path
23+
errors = False
24+
for path in Path('.').rglob('**/*.json'):
25+
try:
26+
json.loads(path.read_text())
27+
except json.JSONDecodeError as ex:
28+
print(f'Malformed JSON in {path}: {ex}')
29+
errors = True
30+
if errors:
31+
exit(1)
32+
33+
- name: Install dependencies
1934
run: |
2035
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
21-
echo 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-12 main' | sudo tee -a /etc/apt/sources.list
22-
echo 'deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-12 main' | sudo tee -a /etc/apt/sources.list
36+
echo 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main' | sudo tee -a /etc/apt/sources.list
37+
echo 'deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main' | sudo tee -a /etc/apt/sources.list
2338
sudo apt update
24-
sudo apt-get install -y clang-format-12 iwyu
25-
sudo ln -s /usr/bin/clang-format-12 /usr/local/bin/clang-format
26-
sudo apt-get install -y make python3-pip
27-
sudo python3 -m pip install pyjson5
39+
sudo apt-get install -y clang-format-18 iwyu
40+
sudo snap install --edge --classic just
41+
sudo ln -s /usr/bin/clang-format-18 /usr/local/bin/clang-format
42+
sudo apt-get install -y python3-pip
43+
sudo python3 -m pip install pyjson5 pre-commit
2844
29-
- name: 'Check imports'
45+
- name: Check formatted code differences
3046
run: |
31-
git add -A
32-
python3 tools/sort_imports
33-
git diff --exit-code || ( echo 'Please run `make imports` and commit the changes.'; exit 1 )
47+
just lint-format || /bin/true
48+
git diff --exit-code || (
49+
clang-format --version
50+
echo 'Please run `just lint` and commit the changes.'
51+
exit 1
52+
)
3453
35-
- name: 'Check formatted code differences'
54+
- name: Check imports
3655
run: |
37-
make lint
38-
git diff --exit-code || ( echo 'Please run `make lint` and commit the changes.'; exit 1 )
56+
git add -A
57+
just lint-imports
58+
git diff --exit-code || (
59+
include-what-you-use --version
60+
echo 'Please run `just lint` and commit the changes.'
61+
exit 1
62+
)

.github/workflows/prerelease.yml

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,24 @@
1-
name: Publish a prerelease
1+
name: Publish a pre-release
22

33
permissions:
44
contents: write
55

66
on:
77
push:
8-
branch: develop
8+
branches:
9+
- develop
910

1011
jobs:
11-
tag_latest:
12-
name: 'Tag the repository'
13-
runs-on: ubuntu-latest
14-
steps:
15-
- name: 'Checkout code'
16-
uses: actions/checkout@v3
17-
18-
- name: 'Update the tag'
19-
uses: EndBug/latest-tag@latest
20-
2112
publish_prerelease:
2213
name: 'Create a prerelease'
23-
needs:
24-
- tag_latest
2514
uses: ./.github/workflows/release.yml
15+
if: |
16+
github.ref == 'refs/heads/develop' &&
17+
vars.RELEASE_ENABLE == 'true'
2618
with:
2719
release_name: 'Development snapshot'
2820
draft: false
2921
prerelease: true
30-
tag_name: latest
22+
tag_name: 'latest'
23+
let_mac_fail: true
24+
secrets: inherit

.github/workflows/release.yml

Lines changed: 100 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -7,82 +7,138 @@ on:
77
push:
88
branch: stable
99
tags:
10-
- 'v?[0-9]*'
10+
- "v?[0-9]*"
11+
1112
workflow_call:
1213
inputs:
13-
release_name:
14-
description: 'Release name'
14+
draft:
15+
type: boolean
16+
description: "Draft"
1517
required: true
16-
default: 'Release ${{ github.ref_name }}'
18+
default: false
19+
prerelease:
20+
type: boolean
21+
description: "Prerelease"
22+
required: true
23+
default: false
24+
release_name:
1725
type: string
26+
description: "Release name"
27+
required: true
28+
default: "Release ${{ github.ref_name }}"
1829
tag_name:
19-
description: 'Tag name'
20-
required: false
21-
default: '${{ github.ref }}'
2230
type: string
31+
description: "Tag name"
32+
required: false
33+
default: github.ref_name
34+
35+
workflow_dispatch:
36+
inputs:
2337
draft:
24-
description: 'Draft'
38+
description: "Draft"
2539
required: true
26-
default: false
2740
type: boolean
41+
default: false
2842
prerelease:
29-
description: 'Prerelease'
43+
description: "Prerelease"
3044
required: true
3145
type: boolean
46+
default: false
47+
release_name:
48+
description: "Release name"
49+
required: true
50+
type: string
51+
default: "Release name"
52+
tag_name:
53+
description: "Tag name"
54+
required: false
55+
type: string
56+
default: github.ref_Name
3257

3358
jobs:
59+
package_multiplatform:
60+
name: Build release assets
61+
runs-on: ubuntu-latest
62+
if: vars.RELEASE_ENABLE == 'true'
63+
strategy:
64+
matrix:
65+
include:
66+
- platform: win
67+
just_target: package-win
68+
steps:
69+
- name: Install dependencies
70+
uses: taiki-e/install-action@just
71+
72+
- name: Checkout code
73+
uses: actions/checkout@v4
74+
with:
75+
fetch-depth: 0
76+
77+
- name: Package asset (${{ matrix.platform }})
78+
run: just ${{ matrix.just_target }}
79+
80+
- name: Upload the artifact
81+
uses: actions/upload-artifact@v4
82+
with:
83+
name: packaged_asset-${{ matrix.platform }}
84+
path: |
85+
*.zip
86+
*.exe
87+
3488
publish_release:
35-
name: 'Create a GitHub release'
89+
if: vars.RELEASE_ENABLE == 'true'
90+
name: Create a GitHub release
3691
runs-on: ubuntu-latest
3792
needs:
38-
- package_game_win
93+
- package_multiplatform
94+
3995
steps:
40-
- name: 'Checkout code'
41-
uses: actions/checkout@v3
42-
with:
43-
path: .
44-
fetch-tags: true
96+
- name: "Install dependencies"
97+
uses: taiki-e/install-action@just
4598

46-
- name: 'Download built assets'
47-
uses: actions/download-artifact@v1
99+
- name: "Checkout code"
100+
uses: actions/checkout@v4
101+
102+
- name: "Download built game assets"
103+
uses: actions/download-artifact@v4
48104
with:
49-
name: game_win_zip
50105
path: artifacts/
106+
merge-multiple: true
51107

52-
- name: 'Prepare the changelog'
53-
id: prepare_changelog
54-
uses: ./.github/actions/prepare_changelog
108+
- name: "Generate changelog"
109+
run: |
110+
just output-current-changelog > _changes.txt
55111
56-
- name: 'Get version'
57-
id: get_version
58-
uses: ./.github/actions/get_version
112+
- name: "Get information on the latest pre-release"
113+
if: ${{ inputs.prerelease == true || inputs.prerelease == 'true' }}
114+
id: last_release
115+
uses: InsonusK/[email protected]
116+
with:
117+
myToken: ${{ github.token }}
118+
exclude_types: "draft|release"
59119

60-
- name: 'Prepare for the release'
61-
run: |
62-
echo "${{steps.prepare_changelog.outputs.changelog }}" >artifacts/changes.txt
63-
mv artifacts/game-win.zip artifacts/TR2X-${{ steps.get_version.outputs.version }}-Windows.zip
120+
- name: 'Mark the pre-release as latest'
121+
if: ${{ inputs.prerelease == true || inputs.prerelease == 'true' }}
122+
uses: EndBug/latest-tag@latest
64123

65-
- name: 'Delete old release assets'
124+
- name: "Delete old pre-release assets"
125+
if: ${{ inputs.prerelease == true || inputs.prerelease == 'true' }}
66126
uses: mknejp/delete-release-assets@v1
67127
continue-on-error: true
68128
with:
69129
token: ${{ github.token }}
70-
tag: ${{ inputs.tag_name }}
71-
assets: '*.*'
130+
tag: ${{ steps.last_release.outputs.tag_name }}
131+
assets: "*.*"
72132

73-
- name: 'Publish the release'
74-
uses: softprops/action-gh-release@v1
133+
- name: "Publish a release"
134+
uses: softprops/action-gh-release@v2
75135
with:
76136
token: ${{ secrets.GITHUB_TOKEN }}
77137
name: ${{ inputs.release_name }}
78-
body_path: artifacts/changes.txt
79-
draft: ${{ inputs.draft }}
80-
prerelease: ${{ inputs.prerelease }}
81-
fail_on_unmatched_files: true
82138
tag_name: ${{ inputs.tag_name }}
139+
body_path: _changes.txt
140+
draft: ${{ inputs.draft == true || inputs.draft == 'true' }}
141+
prerelease: ${{ inputs.prerelease == true || inputs.prerelease == 'true' }}
142+
fail_on_unmatched_files: true
83143
files: |
84-
artifacts/TR2X-${{ steps.get_version.outputs.VERSION }}-Windows.zip
85-
86-
package_game_win:
87-
name: 'Package the game (Windows)'
88-
uses: ./.github/workflows/build_game_win.yml
144+
artifacts/*

0 commit comments

Comments
 (0)