Skip to content

Only comment if the build workflow was succesful #306

Only comment if the build workflow was succesful

Only comment if the build workflow was succesful #306

Workflow file for this run

name: Build
on: [push, pull_request]
jobs:
fetch-deps:
name: Download original binaries
uses: ./.github/workflows/racersbin.yml
build-current-toolchain:
name: Current MSVC
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v2
- name: Setup Ninja
uses: ./.github/actions/setup-ninja
- name: Setup vcvars
uses: ilammy/msvc-dev-cmd@v1
with:
arch: amd64_x86
- name: Install LLVM
uses: KyleMayes/install-llvm-action@v2
with:
version: '21'
- name: Build
run: |
cmake -S . -B build -GNinja `
-DCMAKE_CXX_COMPILER=cl `
-DCMAKE_BUILD_TYPE=Debug `
-DENABLE_CLANG_TIDY=ON `
-Werror=dev
cmake --build build -- -k0
build:
name: 'MSVC 6.0'
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v6
with:
repository: isledecomp/MSVC600-8168
path: msvc600
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.25.x'
- name: Build
shell: cmd
run: |
call .\msvc600\VC98\Bin\VCVARS32.BAT x86
cmake -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -G "NMake Makefiles"
cmake --build build
- name: Upload Artifact
uses: actions/upload-artifact@main
with:
name: Win32
path: |
build/LEGORacers.exe
build/LEGORacers.pdb
build/GolDP.dll
build/GolDP.pdb
verify:
name: Verify decomp
needs: [build, fetch-deps]
runs-on: windows-latest
permissions:
actions: read
issues: write
pull-requests: write
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: '3.12'
- uses: actions/download-artifact@v8
with:
name: Win32
path: build
- name: Restore cached original binaries
id: cache-original-binaries
uses: actions/cache/restore@v5
with:
enableCrossOsArchive: true
path: racersbin
key: racersbin
- name: Install python packages
shell: bash
run: |
pip install -r tools/requirements.txt
- name: Detect binaries
id: detection
run: |
reccmp-project detect --what original --search-path racersbin
reccmp-project detect --what recompiled --search-path build
- name: Summarize Accuracy
shell: bash
run: |
reccmp-reccmp -S LEGORACERSPROGRESS.SVG --svg-icon assets/legoracers.png --target LEGORACERS --total 3986 --nolib --json LEGORACERSPROGRESS.json --html LEGORACERSPROGRESS.HTML
reccmp-reccmp -S GOLDPPROGRESS.SVG --svg-icon assets/goldp.png --target GOLDP --total 1071 --nolib --json GOLDPPROGRESS.json --html GOLDPPROGRESS.HTML
- name: Compare Accuracy With Current Master
shell: bash
env:
RELEASE_URL: https://github.com/isledecomp/racers/releases/download/continuous
run: |
curl -fLSs -o LEGORACERSPROGRESS-old.json $RELEASE_URL/LEGORACERSPROGRESS.json || echo "" >LEGORACERSPROGRESS-old.json
curl -fLSs -o GOLDPPROGRESS-old.json $RELEASE_URL/GOLDPPROGRESS.json || echo "" >GOLDPPROGRESS-old.json
(reccmp-reccmp --target LEGORACERS --nolib --diff LEGORACERSPROGRESS-old.json || echo "Current master not found")>"LEGORACERS-diff.txt"
(reccmp-reccmp --target GOLDP --nolib --diff GOLDPPROGRESS-old.json || echo "Current master not found")>"GOLDP-diff.txt"
cat LEGORACERS-diff.txt
cat GOLDP-diff.txt
- name: Check Vtables
if: ${{ steps.detection.conclusion == 'success' && always() }}
shell: bash
run: |
reccmp-vtable --target LEGORACERS
reccmp-vtable --target GOLDP
- name: Check Variables
if: ${{ steps.detection.conclusion == 'success' && always() }}
shell: bash
run: |
reccmp-datacmp --target LEGORACERS
reccmp-datacmp --target GOLDP
- name: Check Folding
if: ${{ steps.detection.conclusion == 'success' && always() }}
shell: bash
run: |
python tools/check_folded.py --target LEGORACERS
python tools/check_folded.py --target GOLDP
- name: 'Create comment on PR'
if: ${{ github.event_name == 'pull_request' }}
shell: sh
env:
GH_TOKEN: ${{ github.token }}
run: |
python -c 'txt=open("LEGORACERS-diff.txt").read().strip(); open("LEGORACERS-diff.txt", "w").write(txt);'
python -c 'txt=open("GOLDP-diff.txt").read().strip(); open("GOLDP-diff.txt", "w").write(txt);'
cat <<EOF >reccmp-pr-message.txt
# reccmp report
## LEGORACERS (LEGORacers.exe)
\`\`\`
$(cat LEGORACERS-diff.txt | sed 's/\x1b\[[0-9;]*m//g')
\`\`\`
## GOLDP (GolDP.dll)
\`\`\`
$(cat GOLDP-diff.txt | sed 's/\x1b\[[0-9;]*m//g')
\`\`\`
EOF
echo "${{ github.event.number }}" >pr-number.txt
cat reccmp-pr-message.txt
- name: Upload Artifact
uses: actions/upload-artifact@main
with:
name: Accuracy Report
path: |
LEGORACERSPROGRESS*
GOLDPPROGRESS*
- name: Upload PR comment payload
if: ${{ github.event_name == 'pull_request' && always() }}
uses: actions/upload-artifact@main
with:
name: reccmp-pr-comment
path: |
reccmp-pr-message.txt
pr-number.txt
upload:
name: Upload artifacts
needs: [verify]
runs-on: ubuntu-latest
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'isledecomp/racers' }}
permissions:
contents: write
pages: write
id-token: write
steps:
- uses: actions/checkout@v6
with:
repository: probonopd/uploadtool
- uses: actions/download-artifact@v8
with:
name: Win32
path: build
- uses: actions/download-artifact@v8
with:
name: Accuracy Report
- name: Upload Continuous Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
./upload.sh \
build/LEGORacers.exe \
build/GolDP.dll \
LEGORACERSPROGRESS* \
GOLDPPROGRESS*
- name: Prepare Pages
run: |
mkdir -p progress
cp LEGORACERSPROGRESS.SVG progress/
cp GOLDPPROGRESS.SVG progress/
cp LEGORACERSPROGRESS.HTML progress/
cp GOLDPPROGRESS.HTML progress/
- uses: actions/upload-pages-artifact@v3
with:
path: progress/
- name: Deploy to GitHub Pages
uses: actions/deploy-pages@v5
decomplint:
name: ${{ matrix.module }} annotations
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- module: LEGORACERS
path: LEGORacers common
- module: GOLDP
path: GolDP common
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Install python libraries
id: install
run: |
pip install -r tools/requirements.txt
- name: Run decomplint
if: ${{ steps.install.conclusion == 'success' && always() }}
run: |
reccmp-decomplint ${{ matrix.path }} --module ${{ matrix.module }} --warnfail
- name: Check address padding
if: ${{ steps.install.conclusion == 'success' && always() }}
run: |
python tools/reccmp_addr_padding.py
clang-format:
name: c++ clang-format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Run clang-format
run: |
find LEGORacers GolDP common tools -iname '*.h' -o -iname '*.cpp' | xargs \
pipx run "clang-format>=22,<23" \
--style=file \
-i
git diff --color --exit-code
naming:
name: Naming conventions
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install LLVM and Clang
uses: KyleMayes/install-llvm-action@v2
with:
version: '21'
- uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Install python libraries
run: |
pip install clang==21.* pyyaml
- name: Run ncc
run: |
python3 tools/ncc/ncc.py \
--clang-lib ${{ env.LLVM_PATH }}/lib/libclang.so \
--recurse \
--style tools/ncc/ncc.style \
--skip tools/ncc/skip.yml \
--definition DEFINE_GUID PASCAL WINAPI FAR BOOL CALLBACK HWND__=HWND \
--include \
util \
LEGORacers/include \
LEGORacers \
GolDP/include \
GolDP \
common/include \
common \
--path LEGORacers GolDP common