Skip to content

Nightly Release

Nightly Release #18

Workflow file for this run

name: Nightly Release
on:
# This can be used to automatically publish nightlies at UTC nighttime
schedule:
- cron: '0 3 * * *' # run at 3 AM UTC
# This can be used to allow manually triggering nightlies from the web interface
workflow_dispatch:
jobs:
date-check:
runs-on: ubuntu-latest
name: Check latest commit
outputs:
should_run: ${{ steps.should_run.outputs.should_run }}
steps:
- uses: actions/checkout@v4
- name: print latest_commit
run: echo ${{ github.sha }}
- id: should_run
continue-on-error: true
name: check latest commit is less than a day
if: ${{ github.event_name == 'schedule' }}
run: test -z $(git rev-list --after="24 hours" ${{ github.sha }}) && echo "::set-output name=should_run::false"
build-msvc:
needs: date-check
if: ${{ needs.date-check.outputs.should_run != 'false' }}
env:
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
runs-on: windows-latest
steps:
- name: Export GitHub Actions cache environment variables
uses: actions/github-script@v6
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Set Work ENVs
id: vars
run: |
echo "::set-output name=date::$(date +'%Y-%m-%d-%H-%M')"
BODY=$(git log master --since='24 hours ago' | sed -En 's/^ +?([a-z]+:\w*)/\1/p' | awk '{print "- "$0}')
echo "::set-output name=body::"${BODY[@]}""
WIN_HOME=$(echo $HOME | tr '/' '\\')
WIN_HOME="${WIN_HOME:1:1}:${WIN_HOME:2:${#WIN_HOME}-1}"
WIN_HOME=${WIN_HOME^}
echo $WIN_HOME
echo DX9_SDK=$WIN_HOME/dx9
echo "DX9_SDK=$WIN_HOME/dx9" >> $GITHUB_ENV
shell: bash
- run: vcpkg integrate install
- uses: ilammy/[email protected]
with:
arch: x86
- name: "Install Inno"
run: choco install innosetup --acceptlicense
- name: "Restore DX9 Cache"
id: dx9-cache
uses: actions/cache@v4
with:
path: ~/dx9
key: dx9-cache
- name: "Restore HD Installer"
id: hde-cache
uses: actions/cache@v4
with:
path: ${{ github.workspace }}/Installer/Assets/External
key: hde-cache
- name: "Cache DX9 SDK"
if: steps.dx9-cache.outputs.cache-hit != 'true'
run: |
echo Downloading DXSDK June 2010
curl -s -L -o "_DX2010_.exe" "https://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe"
echo Extracting include files
7z x _DX2010_.exe DXSDK/Include -o_DX2010_ > nul
echo Extracting lib files
7z x _DX2010_.exe DXSDK/Lib/x86 -o_DX2010_ > nul
echo Moving SDK to home directory
mkdir $DX9_SDK
mv _DX2010_/DXSDK/* $DX9_SDK
echo Cleaning up install files
rm -fR _DX*_ _DX*_.exe
shell: bash
- name: "Download HDE Installer"
if: steps.hde-cache.outputs.cache-hit != 'true'
run:
curl -s -o ${{ github.workspace }}/Installer/Assets/External/FreelancerHDESetup_v06_silent_test.exe https://f003.backblazeb2.com/b2api/v2/b2_download_file_by_id?fileId=4_z0d41f4d9e10a9adf85d20013_f212668fac620798a_d20240305_m125353_c003_v0312019_t0022_u01709643233941
- name: CMake Generate
run: cmake --preset vs2022-msvc-release -S ${{ github.workspace }} -B ${{ github.workspace }}\build\vs2022-msvc-release
- name: Compile ChaosMod
run: cmake --build ${{ github.workspace }}\build\vs2022-msvc-release --target ChaosMod --config Release
- name: "Pre-Build Installer"
run: |
cd ${{ github.workspace }}
mkdir Archive
Get-ChildItem -Path ".\Assets" | Move-Item -Destination ".\Archive"
Get-ChildItem -Path ".\build\vs2022-msvc-release\Release" -Filter ".dll" -Recurse | Move-Item -Destination ".\Archive\EXE"
7z a -r ./chaosmod.7z ./Archive/*
Copy-Item -Path .\chaosmod.7z -Destination ./Installer/Assets/Mod
- name: "Build Installer"
run: |
cd ${{ github.workspace }}/Installer
& "${env:programfiles(x86)}\Inno Setup 6\iscc.exe" /O+ ".\setup.iss"
cd ..
7z a -r .\Installer.7z .\Installer/Output*
Rename-Item -Path .\chaosmod.7z -NewName Assets.7z
- name: Create Release
id: create_release
uses: ncipollo/release-action@v1
with:
artifacts: "${{ github.workspace }}/*.7z"
body: "${{ steps.vars.outputs.body }}"
tag: ${{ steps.vars.outputs.date }}