Skip to content

Crysis Warhead: Chickens Patch #834

Crysis Warhead: Chickens Patch

Crysis Warhead: Chickens Patch #834

Workflow file for this run

name: MSBuild
on:
push:
paths-ignore:
- '**/*.md'
pull_request:
paths-ignore:
- '**/*.md'
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-${{ github.event_name }}
cancel-in-progress: true
jobs:
build:
runs-on: windows-latest
env:
BUILD_PRESET: vs2022
CONFIGURATION: RelWithDebInfo
INSTALL_CONFIGURATION: ${{ github.workspace }}/out/install
DLL_OUT: x64_lib
permissions:
contents: write
steps:
- name: Checkout main repository
uses: actions/checkout@main
with:
submodules: recursive
fetch-depth: 0
- name: Setup environment variables
run: |
$cmdOutput = Split-Path -Path $pwd -Leaf
$branch = "${{ github.ref_name }}"
$branch = $branch.replace('/','-')
$_ver = "1.0.$(git rev-list HEAD --count)-$(git rev-parse --short=8 HEAD)+${{ github.run_number }}-branch-$branch"
echo "commit_ver=$_ver" >> "$Env:GITHUB_ENV"
echo "zip_name=$cmdOutput-$_ver" >> "$Env:GITHUB_ENV"
echo "zip_file=${{ github.workspace }}\$cmdOutput-$_ver.7z" >> "$Env:GITHUB_ENV"
echo "zip_file_pdb=${{ github.workspace }}\$cmdOutput-$_ver-pdb.7z" >> "$Env:GITHUB_ENV"
echo "folder=$cmdOutput" >> "$Env:GITHUB_ENV"
echo "BUILD_CONFIGURATION=${{ github.workspace }}/out/build/${{ env.BUILD_PRESET }}" >> "$Env:GITHUB_ENV"
$push = "false"
$pr = "true"
$is_pr = "${{ github.event_name }}" -ieq "pull_request"
if ("${{ github.event_name }}" -ieq "push" -or $is_pr)
{
$push = "true"
}
if ($is_pr)
{
$pr = "false"
}
echo "WANT_RELEASE=$pr" >> "$Env:GITHUB_ENV"
echo "IS_PUSH=$push" >> "$Env:GITHUB_ENV"
echo "BRANCH=$branch" >> "$Env:GITHUB_ENV"
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@main
- name: Setup install folder for CI
run: |
$myFile = "${{github.workspace}}\CMakePresets.json"
(Get-Content $myFile ).Replace('"installDir": "${sourceDir}/out/install",', '"installDir": "${sourceDir}/out/install/${{ env.DLL_OUT }}",') | Set-Content $myFile
cat $myFile
- name: Setup CMake Project (${{ env.CONFIGURATION }})
run: cmake --preset ${{ env.BUILD_PRESET }}
- name: Build CMake Project (${{ env.CONFIGURATION }})
run: cmake --build ${{ env.BUILD_CONFIGURATION }} --config ${{ env.CONFIGURATION }} -- /verbosity:normal
- name: Install CMake Project (${{ env.CONFIGURATION }})
run: cmake --install ${{ env.BUILD_CONFIGURATION }} --config ${{ env.CONFIGURATION }}
- name: Bundle loaders and data files
working-directory: ${{ env.INSTALL_CONFIGURATION }}
run: |
mkdir x64
$ScriptHookZip = "ScriptHookRDR2_1.0.1491.17.zip"
$ASI_win32 = "Ultimate-ASI-Loader.zip"
$ASI_x64 = "Ultimate-ASI-Loader_x64.zip"
$dataFilesLink = "https://github.com/illusion0001/Windows-Game-Patches/releases/download/data-files"
$ASIDownloadLink = "https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/latest/download"
# curl -fLJO https://github.com/illusion0001/ScriptHook-Mirrors/releases/download/mirrors/$ScriptHookZip
curl -fLJO $ASIDownloadLink/$ASI_x64
# curl -fLJO $ASIDownloadLink/$ASI_win32
# 7z x $ScriptHookZip
7z x $ASI_x64 -o"x64/!ASI_Loader_x64"
# Copy-Item bin/ScriptHookRDR2.dll ./x64/RDR3.Patches/
# Copy config files
Copy-Item -Recurse -Force ${{ github.workspace }}/data/*/ ./
Copy-Item -Recurse -Force x64/* ${{ env.DLL_OUT }}
- name: Clean output folder
run: |
Remove-Item -Path ${{ env.INSTALL_CONFIGURATION }} -Recurse -Include *.lib
$Folders = Get-ChildItem -Path ${{ env.INSTALL_CONFIGURATION }}\${{ env.DLL_OUT }} -Directory
foreach ($Folder in $Folders)
{
$HasRequiredFiles = Get-ChildItem -Path "$($Folder.FullName)\*" -Include *.asi,*.dll
if ($HasRequiredFiles.Count -eq 0)
{
echo "$($Folder.FullName) not included"
Remove-Item -Path $Folder.FullName -Recurse -Force
}
}
- name: Generate Hash file
working-directory: ${{ env.INSTALL_CONFIGURATION }}
run: |
$asiFiles = Get-ChildItem -Path "." -Filter "*.asi" -Recurse
foreach ($file in $asiFiles)
{
$hash = Get-FileHash -Path "$file" -Algorithm SHA256 | Format-List
$hash | Out-File -Append -FilePath "${{ env.INSTALL_CONFIGURATION }}\hashes.txt"
echo $hash
}
- name: Upload artifact (PDB)
if: env.IS_PUSH == 'true'
uses: actions/upload-artifact@main
with:
name: ${{ env.zip_name }}-pdb
path: |
${{ env.INSTALL_CONFIGURATION }}/${{ env.DLL_OUT }}
${{ env.INSTALL_CONFIGURATION }}/hashes.txt
- name: Upload artifact
if: env.IS_PUSH == 'true'
uses: actions/upload-artifact@main
with:
name: ${{ env.zip_name }}
path: |
${{ env.INSTALL_CONFIGURATION }}/${{ env.DLL_OUT }}
!${{ env.INSTALL_CONFIGURATION }}/${{ env.DLL_OUT }}/**/*.pdb
${{ env.INSTALL_CONFIGURATION }}/hashes.txt
- name: Prepare Release
if: env.WANT_RELEASE == 'true' && env.IS_PUSH == 'true'
run: |
$hashMarkdown = @'
## ⚠️ Requires [7-Zip](https://github.com/ip7z/7zip/releases/latest) for extracting archive files. ⚠️
- [7z x86](https://github.com/ip7z/7zip/releases/download/24.09/7z2409.exe)
- [7z x64](https://github.com/ip7z/7zip/releases/download/24.09/7z2409-x64.exe)
<details>
<summary>Readme Contents (Click to Expand)</summary>
{0}
</details>
<details>
<summary>ASI Plugin Hashes (Click to Expand)</summary>
```yaml
{1}
```
</details>
'@ -f (Get-Content ".github\README.md" | Out-String), (Get-Content "${{ env.INSTALL_CONFIGURATION }}\hashes.txt" | Out-String)
$hashMarkdown | Out-File -FilePath hash.md
# Get-Content hash.md
7z a -mx9 -mtm- "${{ env.zip_file_pdb }}" ${{ env.INSTALL_CONFIGURATION }}\${{ env.DLL_OUT }}
7z a -mx9 -mtm- "${{ env.zip_file_pdb }}" ${{ env.INSTALL_CONFIGURATION }}\hashes.txt
Remove-Item -Path ${{ env.INSTALL_CONFIGURATION }} -Recurse -Include *.pdb
7z a -mx9 -mtm- "${{ env.zip_file }}" ${{ env.INSTALL_CONFIGURATION }}\${{ env.DLL_OUT }}
7z a -mx9 -mtm- "${{ env.zip_file }}" ${{ env.INSTALL_CONFIGURATION }}\hashes.txt
- name: Branch Check
if: env.WANT_RELEASE == 'true' && env.IS_PUSH == 'true'
run: |
$prerelease = ""
if ("${{ env.BRANCH }}" -ieq "main")
{
$prerelease = ""
echo "Is main release"
}
else
{
$prerelease = " --prerelease"
echo "Is not main release: ${{ env.BRANCH }}"
}
echo "prerelease=$prerelease" >> $Env:GITHUB_ENV
- name: Create Release
if: env.WANT_RELEASE == 'true' && env.IS_PUSH == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: '& gh release create ${{ env.commit_ver }} "${{ env.zip_file_pdb }}" "${{ env.zip_file }}" --target ${{ GITHUB.SHA }} -t "${{ env.commit_ver }}" -F hash.md${{ env.prerelease }}'