Skip to content

Nightly (Experimental) Build #226

Nightly (Experimental) Build

Nightly (Experimental) Build #226

Workflow file for this run

name: Nightly (Experimental) Build
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
on:
schedule:
- cron: "0 3 * * *"
workflow_dispatch:
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
- name: Run generate-nightly.bat to create solution
run: |
echo "Running generate-nightly.bat to produce consolation-client.sln..."
call generate-nightly.bat
shell: cmd
working-directory: ${{ github.workspace }}
- name: Verify consolation-client.sln exists
run: dir build
shell: pwsh
- name: Clean old d3d9.dll
run: |
$dllPath = "build/bin/Release/d3d9.dll"
if (Test-Path $dllPath) {
Write-Host "Removing old d3d9.dll..."
Remove-Item $dllPath -Force
} else {
Write-Host "No old DLL found, skipping."
}
shell: pwsh
- name: Build solution
run: msbuild build\consolation-client.sln `
/p:Configuration=Release `
/p:OutDir=bin/Release/ `
/p:DisableSpecificWarnings=4459 `
/p:TreatWarningsAsErrors=false
shell: pwsh
working-directory: ${{ github.workspace }}
- name: Package and verify nightly installation layout
run: ./tools/package-nightly.ps1
shell: pwsh
- name: Get short commit hash
id: shortsha
run: |
$short = $env:GITHUB_SHA.Substring(0,7)
"short_sha=$short" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8
shell: pwsh
- name: Get build metadata
id: metadata
run: |
$utcNow = (Get-Date).ToUniversalTime()
$time = $utcNow.ToString("dd MMMM yyyy - HH:mm:ss 'UTC'")
$tag = "nightly-" + $utcNow.ToString("yyyyMMdd-HHmmss") + "-${{ steps.shortsha.outputs.short_sha }}"
"build_time=$time" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8
"release_tag=$tag" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8
shell: pwsh
- name: Cleanup old nightly releases (keep 10)
uses: actions/github-script@v7
with:
script: |
const releases = await github.rest.repos.listReleases({
owner: context.repo.owner,
repo: context.repo.repo,
});
const nightly = releases.data
.filter(r => r.prerelease && r.tag_name.startsWith("nightly-"))
.sort((a,b) => new Date(b.created_at) - new Date(a.created_at));
const toDelete = nightly.slice(10);
for (const rel of toDelete) {
console.log(`Deleting old nightly: ${rel.name}`);
await github.rest.repos.deleteRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: rel.id
});
await github.rest.git.deleteRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: `tags/${rel.tag_name}`
});
}
- name: Create/Update Nightly Release and upload zip
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.metadata.outputs.release_tag }}
name: Nightly Build ${{ steps.shortsha.outputs.short_sha }}
body: |
Nightly build from commit ${{ steps.shortsha.outputs.short_sha }} (${{ steps.metadata.outputs.build_time }})
Nightly builds are experimental and unstable. They may crash frequently or fail to run at all.
Use at your own risk. Support is limited and no support will be given for nightly builds.
Extract the archive into the patched English/French 1.1 game directory,
preserving folders, then use Launch Consolation.bat.
The DLL in optional/offline is NOT installed automatically: copy it to
the game root only for offline/debug use and follow README_XLIVE.txt.
Normal GFWL play uses the original runtime without -offline.
draft: false
prerelease: true
overwrite_files: true
files: consolation-nightly.zip