Update msbuild.yml #821
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
WANT_RELEASE: true | |
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 = $push | |
if ("${{ github.event_name }}" -ieq "push") | |
{ | |
$push = "true" | |
} | |
if ( "${{ github.event_name }}" -ieq "pull_request") | |
{ | |
$pr = "true" | |
} | |
echo "IS_PR=$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 }}-x64-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 }}-x64 | |
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' && env.IS_PR == 'false' | |
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' && env.IS_PR == 'false' | |
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.IS_PR == 'false' | |
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 }}' |