Skip to content

Commit

Permalink
cicd: implement automatic release pipelines with caching
Browse files Browse the repository at this point in the history
  • Loading branch information
Lazrius committed Mar 10, 2024
1 parent a918035 commit e9c0022
Show file tree
Hide file tree
Showing 17 changed files with 178 additions and 24 deletions.
1 change: 1 addition & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
## TODO
37 changes: 37 additions & 0 deletions .github/ISSUE_TEMPLATE/BUG-REPORT.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: "Bug Report"
description: Create a new ticket for a bug.
title: "Bug - <title>"
labels: [
"bug"
]
body:
- type: checkboxes
attributes:
label: Chaos Mod Components
description: What parts of ChaosMod were you using at the time of the bug?
options:
- label: This effect is related to a "Chaos Effect"
- label: This effect is related to the randomizer/patch notes
- label: This effect only occurs during a mission
- label: I can reliably reproduce this bug
- type: textarea
id: description
attributes:
label: "Description"
description: Please enter an explicit description of your issue
placeholder: Short and explicit description of your issue.
validations:
required: true
- type: textarea
id: reprod
attributes:
label: "Reproduction steps"
description: If possible explain how to reproduce this issue
value: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
render: bash
validations:
required: false
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: false
105 changes: 105 additions & 0 deletions .github/workflows/build-installer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: Build Installer
on:
push:
branches: [ master ]

jobs:
build:
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')"
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: Compile ChaosMod
run: msbuild.exe "${env:GITHUB_WORKSPACE}\FreelancerChaosMod.sln" /t:Build /p:Configuration=Release /p:Platform=x86

- name: "Pre-Build Installer"
run: |
cd ${{ github.workspace }}
mkdir Archive
Get-ChildItem -Path ".\Assets" | Move-Item -Destination ".\Archive"
Get-ChildItem -Path ".\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: "Automatically generated"
tag: ${{ steps.vars.outputs.date }}

Binary file removed Assets/EXE/avcodec-59.dll
Binary file not shown.
Binary file removed Assets/EXE/avformat-59.dll
Binary file not shown.
Binary file removed Assets/EXE/avutil-57.dll
Binary file not shown.
Binary file removed Assets/EXE/swresample-4.dll
Binary file not shown.
Binary file removed Assets/EXE/swscale-6.dll
Binary file not shown.
16 changes: 8 additions & 8 deletions ChaosMod/ChaosMod.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,14 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<TargetName>$(ProjectName)</TargetName>
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(SolutionDir)vendor\flhook-sdk\vendor;$(SolutionDir)vendor\flhook-sdk\include;$(SolutionDir)vendor;C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include;$(ProjectDir);$(SolutionDir)Include</IncludePath>
<LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(SolutionDir)vendor\flhook-sdk\lib;$(SolutionDir)vcpkg_installed\x86-windows\x86-windows\lib;C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86</LibraryPath>
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(SolutionDir)vendor\flhook-sdk\vendor;$(SolutionDir)vendor\flhook-sdk\include;$(SolutionDir)vendor;$(DX9_SDK)\Include;$(ProjectDir);$(SolutionDir)Include</IncludePath>
<LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(SolutionDir)vendor\flhook-sdk\lib;$(SolutionDir)vcpkg_installed\x86-windows\x86-windows\lib;$(DX9_SDK)\Lib\x86</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)</TargetName>
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(SolutionDir)vendor\flhook-sdk\vendor;$(SolutionDir)vendor\flhook-sdk\include;$(SolutionDir)vendor;C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include;$(ProjectDir);$(SolutionDir)Include</IncludePath>
<LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(SolutionDir)vendor\flhook-sdk\lib;$(SolutionDir)vcpkg_installed\x86-windows\x86-windows\lib;C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86</LibraryPath>
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(SolutionDir)vendor\flhook-sdk\vendor;$(SolutionDir)vendor\flhook-sdk\include;$(SolutionDir)vendor;$(DX9_SDK)\Include;$(ProjectDir);$(SolutionDir)Include</IncludePath>
<LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(SolutionDir)vendor\flhook-sdk\lib;$(SolutionDir)vcpkg_installed\x86-windows\x86-windows\lib;$(DX9_SDK)\Lib\x86</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
Expand Down Expand Up @@ -145,10 +145,10 @@
<ShowProgress>true</ShowProgress>
</ResourceCompile>
<PostBuildEvent>
<Command>
copy /Y "$(TargetDir)*.dll" "$(FL_CHAOS_MOD)"
powershell -ExecutionPolicy Bypass -File $(SolutionDir)CopyChaosAssets.ps1
</Command>
<Command>if defined FL_CHAOS_MOD (
copy /Y "$(TargetDir)*.dll" "$(FL_CHAOS_MOD)"
powershell -ExecutionPolicy Bypass -File $(SolutionDir)CopyChaosAssets.ps1 -NoLaunch true -NoXml true
)</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
Expand Down
1 change: 1 addition & 0 deletions ChaosMod/PCH.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ void Log(const std::string& log)
auto now = std::chrono::system_clock::now();
file << std::format("{0:%F_%T}: ", now) << log << std::endl;
}

void Assert(const bool cond, const std::string& text, const std::string& file, const int line)
{
if (!cond)
Expand Down
7 changes: 6 additions & 1 deletion ChaosMod/PCH.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,12 @@ enum class Language
std::string GetInfocardName(uint ids);
void SetLanguage(Language lang);

#define ASSERT(cond, text) Assert(cond, text, __FILE__, __LINE__)
// ReSharper disable twice CppInconsistentNaming
#ifdef DEBUG
#define ASSERT(cond, text) Assert(cond, text, __FILE__, __LINE__)
#else
#define ASSERT
#endif

struct Weight : refl::attr::usage::field
{
Expand Down
30 changes: 15 additions & 15 deletions ChaosMod/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
#include <Systems/ReshadeManager.hpp>
#include <reshade/reshade.hpp>

const st6_malloc_t st6_malloc = reinterpret_cast<st6_malloc_t>(GetProcAddress(GetModuleHandleA("msvcrt.dll"), "malloc"));
const st6_free_t st6_free = reinterpret_cast<st6_free_t>(GetProcAddress(GetModuleHandleA("msvcrt.dll"), "free"));
const st6_malloc_t st6_malloc = reinterpret_cast<st6_malloc_t>(GetProcAddress(GetModuleHandleA("msvcrt.dll"), "malloc")); // NOLINT
const st6_free_t st6_free = reinterpret_cast<st6_free_t>(GetProcAddress(GetModuleHandleA("msvcrt.dll"), "free")); // NOLINT

typedef void*(__cdecl* ScriptLoadPtr)(const char*);
typedef void (*GlobalTimeFunc)(double delta);
Expand Down Expand Up @@ -70,11 +70,11 @@ uint CreateIdDetour(const char* string)
#ifdef _DEBUG
if (!hashFile)
{
fopen_s(&hashFile, "hashmap.csv", "wb");
(void)fopen_s(&hashFile, "hashmap.csv", "wb");
}

fprintf_s(hashFile, "%s,%u,0x%X\n", string, hash, hash);
fflush(hashFile);
(void)fprintf_s(hashFile, "%s,%u,0x%X\n", string, hash, hash);
(void)fflush(hashFile);
#endif
}

Expand Down Expand Up @@ -175,17 +175,17 @@ void PatchResolution()
// Disable the reading of the znear/zfar/fovy parameters.
{
BYTE patch1[] = { 0x00 };
MemUtils::WriteProcMem((char*)0x5C8994, &patch1, 1);
MemUtils::WriteProcMem((char*)0x5C899C, &patch1, 1);
MemUtils::WriteProcMem((char*)0x5C89A4, &patch1, 1);
MemUtils::WriteProcMem(0x5C8994, &patch1, 1);
MemUtils::WriteProcMem(0x5C899C, &patch1, 1);
MemUtils::WriteProcMem(0x5C89A4, &patch1, 1);
}

// Force the fovx to predefined values.
{
BYTE patch6[] = { 0x90, 0xE9 };
MemUtils::WriteProcMem((char*)0x40f617, &patch6, 2);
PBYTE fpFovx = (PBYTE)HkCb_Fovx_Naked - 0x40f618 - 5;
MemUtils::WriteProcMem((char*)0x40f618 + 1, &fpFovx, 4);
MemUtils::WriteProcMem(0x40f617, &patch6, 2);
PBYTE fovX = reinterpret_cast<PBYTE>(HkCb_Fovx_Naked) - 0x40f618 - 5;
MemUtils::WriteProcMem(0x40f618 + 1, &fovX, 4);
}

// Set the FOV for the UI elements on the main screen.
Expand Down Expand Up @@ -521,10 +521,10 @@ void SetupHack()

// Setup hooks
const HMODULE common = GetModuleHandleA("common");
timingDetour =
std::make_unique<FunctionDetour<GlobalTimeFunc>>(reinterpret_cast<GlobalTimeFunc>(GetProcAddress(common, "?UpdateGlobalTime@Timing@@YAXN@Z")));
thornLoadDetour =
std::make_unique<FunctionDetour<ScriptLoadPtr>>(reinterpret_cast<ScriptLoadPtr>(GetProcAddress(common, "?ThornScriptLoad@@YAPAUIScriptEngine@@PBD@Z")));
timingDetour = std::make_unique<FunctionDetour<GlobalTimeFunc>>(
reinterpret_cast<GlobalTimeFunc>(GetProcAddress(common, "?UpdateGlobalTime@Timing@@YAXN@Z"))); // NOLINT
thornLoadDetour = std::make_unique<FunctionDetour<ScriptLoadPtr>>(
reinterpret_cast<ScriptLoadPtr>(GetProcAddress(common, "?ThornScriptLoad@@YAPAUIScriptEngine@@PBD@Z"))); // NOLINT

timingDetour->Detour(Update);
thornLoadDetour->Detour(ScriptLoadHook);
Expand Down
Binary file added Installer/Assets/External/7za.exe
Binary file not shown.
Binary file added Installer/Assets/External/HexToBinary.dll
Binary file not shown.
Binary file added Installer/Assets/External/utf-8-bom-remover.exe
Binary file not shown.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
## TODO Readme

## Contributing

See [contributing guidelines]("./.github/CONTRIBUTING.md) for more information.

## Credits

### Direct
Expand Down

0 comments on commit e9c0022

Please sign in to comment.