fix workflows take 2 #6

Merged
jheaps merged 1 commits from fix/workflows into master 2026-08-26 15:46:12 -06:00
Showing only changes of commit c048529654 - Show all commits
+28 -6
View File
@@ -12,13 +12,17 @@ concurrency:
jobs: jobs:
build-deploy: build-deploy:
# Gitea's runner images are lean, so the toolchain is installed below rather
# than assumed. The glibc that libchess_engine.so links against comes from
# this image, not from the runner host — keep it matched to the prod server.
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Install deploy tools - name: Install toolchain
run: | run: |
apt-get update apt-get update
apt-get install -y --no-install-recommends rsync openssh-client apt-get install -y --no-install-recommends \
cmake build-essential rsync openssh-client
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -29,10 +33,26 @@ jobs:
dotnet-version: '8.0.x' dotnet-version: '8.0.x'
- name: Restore - name: Restore
run: dotnet restore run: dotnet restore JoshHeaps.Net/JoshHeaps.Net.csproj
- name: Build native chess engine (libchess_engine.so)
run: |
cmake -S native/chess_engine -B native/chess_engine/build -DCMAKE_BUILD_TYPE=Release
cmake --build native/chess_engine/build
cp native/chess_engine/build/libchess_engine.so JoshHeaps.Net/Resources/
# Publishing the project rather than the solution keeps chess_engine.vcxproj
# (Windows-only MSBuild C++ targets) and the UiTests assemblies out of it.
- name: Publish - name: Publish
run: dotnet publish -c Release -o ./publish run: dotnet publish JoshHeaps.Net/JoshHeaps.Net.csproj -c Release -o ./publish
- name: Verify payload
run: |
set -euo pipefail
test -f publish/Resources/libchess_engine.so \
|| { echo "libchess_engine.so missing from publish output"; exit 1; }
test -x publish/Resources/stockfish-ubuntu-x86-64-sse41-popcnt \
|| { echo "stockfish is not executable"; exit 1; }
- name: Prepare SSH - name: Prepare SSH
env: env:
@@ -47,6 +67,8 @@ jobs:
chmod 600 ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key
ssh-keyscan -p "$PORT" "$SSH_HOST" >> ~/.ssh/known_hosts 2>/dev/null ssh-keyscan -p "$PORT" "$SSH_HOST" >> ~/.ssh/known_hosts 2>/dev/null
# --exclude chess-data: never let --delete remove the learned-engine training
# data, which lives in the deploy dir unless ChessEngine__WeightsPath is set.
- name: Rsync to server - name: Rsync to server
env: env:
SSH_HOST: ${{ secrets.SSH_HOST }} SSH_HOST: ${{ secrets.SSH_HOST }}
@@ -56,11 +78,11 @@ jobs:
run: | run: |
set -euo pipefail set -euo pipefail
PORT="${SSH_PORT:-22}" PORT="${SSH_PORT:-22}"
rsync -az --delete \ rsync -az --delete --exclude 'chess-data' \
-e "ssh -p $PORT -i ~/.ssh/deploy_key -o StrictHostKeyChecking=yes" \ -e "ssh -p $PORT -i ~/.ssh/deploy_key -o StrictHostKeyChecking=yes" \
publish/ "$SSH_USER@$SSH_HOST:$TARGET_DIR/" publish/ "$SSH_USER@$SSH_HOST:$TARGET_DIR/"
- name: Restart service - name: Reload and restart service
env: env:
SSH_HOST: ${{ secrets.SSH_HOST }} SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_PORT: ${{ secrets.SSH_PORT }} SSH_PORT: ${{ secrets.SSH_PORT }}