forked from mvdhout1992/cnc-ddraw
-
Notifications
You must be signed in to change notification settings - Fork 148
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #291 from egornovivan/master
Add GHA workflow
- Loading branch information
Showing
2 changed files
with
328 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
name: Build | ||
|
||
on: | ||
push: | ||
branches: | ||
- 'master' | ||
- 'develop' | ||
- 'github-action' | ||
paths: | ||
- '.github/workflows/build.yml' | ||
- 'action.yml' | ||
|
||
jobs: | ||
Build: | ||
runs-on: windows-2019 | ||
steps: | ||
|
||
# - name: Install Windows XP Support for Visual Studio 2022 # windows-2022 # v141_xp # Installation takes more than 5 minutes | ||
# run: | | ||
# Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\" | ||
# $InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" | ||
# $componentsToAdd = @( | ||
# "Microsoft.VisualStudio.Component.WinXP" | ||
# ) | ||
# [string]$workloadArgs = $componentsToAdd | ForEach-Object {" --add " + $_} | ||
# $Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache') | ||
# $process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden | ||
# if ($process.ExitCode -eq 0) | ||
# { | ||
# Write-Host "components have been successfully added" | ||
# Get-ChildItem C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.Windows.XPSupport.* | ||
# } | ||
# else | ||
# { | ||
# Write-Host "components were not installed" | ||
# exit 1 | ||
# } | ||
|
||
- name: Clone cnc-ddraw | ||
uses: actions/checkout@v4 | ||
|
||
- name: Release build | ||
id: build-release | ||
uses: ./ | ||
with: | ||
release: true | ||
|
||
- name: ReleaseWin2000 build | ||
id: build-releasewin2000 | ||
uses: ./ | ||
with: | ||
releasewin2000: true | ||
|
||
- name: Debug build | ||
id: build-debug | ||
uses: ./ | ||
with: | ||
debug: true | ||
|
||
- name: DebugLog build | ||
id: build-debuglog | ||
uses: ./ | ||
with: | ||
debuglog: true | ||
|
||
- name: DebugLogMini build | ||
id: build-debuglogmini | ||
uses: ./ | ||
with: | ||
debuglogmini: true | ||
|
||
- name: Prepare artifact | ||
run: | | ||
: | ||
mkdir -p cnc-ddraw-release | ||
mkdir -p cnc-ddraw-releasewin2000 | ||
mkdir -p cnc-ddraw-debug | ||
mkdir -p cnc-ddraw-debuglog | ||
mkdir -p cnc-ddraw-debuglogmini | ||
cp "${{ steps.build-release.outputs.release }}" cnc-ddraw-release | ||
cp "${{ steps.build-releasewin2000.outputs.releasewin2000 }}" cnc-ddraw-releasewin2000 | ||
cp "${{ steps.build-debug.outputs.debug }}" cnc-ddraw-debug | ||
cp "${{ steps.build-debug.outputs.debug-pdb }}" cnc-ddraw-debug | ||
cp "${{ steps.build-debuglog.outputs.debuglog }}" cnc-ddraw-debuglog | ||
cp "${{ steps.build-debuglog.outputs.debuglog-pdb }}" cnc-ddraw-debuglog | ||
cp "${{ steps.build-debuglogmini.outputs.debuglogmini }}" cnc-ddraw-debuglogmini | ||
cp "${{ steps.build-debuglogmini.outputs.debuglogmini-pdb }}" cnc-ddraw-debuglogmini | ||
shell: bash | ||
|
||
- name: Upload artifacts cnc-ddraw-release | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: cnc-ddraw-release | ||
path: cnc-ddraw-release | ||
retention-days: 14 | ||
|
||
- name: Upload artifacts cnc-ddraw-releasewin2000 | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: cnc-ddraw-releasewin2000 | ||
path: cnc-ddraw-releasewin2000 | ||
retention-days: 14 | ||
|
||
- name: Upload artifacts cnc-ddraw-debug | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: cnc-ddraw-debug | ||
path: cnc-ddraw-debug | ||
retention-days: 14 | ||
|
||
- name: Upload artifacts cnc-ddraw-debuglog | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: cnc-ddraw-debuglog | ||
path: cnc-ddraw-debuglog | ||
retention-days: 14 | ||
|
||
- name: Upload artifacts cnc-ddraw-debuglogmini | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: cnc-ddraw-debuglogmini | ||
path: cnc-ddraw-debuglogmini | ||
retention-days: 14 |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,198 @@ | ||
#name: 'sfall' | ||
#description: 'Builds sfall binaries' | ||
#author: '@wipe2238' | ||
|
||
### | ||
# | ||
# Example: | ||
# | ||
# - name: Build sfall | ||
# id: sfall | ||
# uses: phobos2077/sfall@develop | ||
# with: | ||
# release-xp: true | ||
# | ||
# - name: Copy sfall to mod directory | ||
# run: copy "${{ steps.sfall.outputs.release-xp }}" "my/mod/directory/ddraw.dll" | ||
# | ||
### | ||
|
||
# While both inputs are marked as required, users needs to set only one of them (at minimum) to 'true' for action to work | ||
inputs: | ||
|
||
release: | ||
description: 'Set to true to enable building with Release configuration' | ||
required: true | ||
|
||
releasewin2000: | ||
description: 'Set to true to enable building with ReleaseWin2000 configuration' | ||
required: true | ||
|
||
debug: | ||
description: 'Set to true to enable building with Debug configuration' | ||
required: true | ||
|
||
debuglog: | ||
description: 'Set to true to enable building with DebugLog configuration' | ||
required: true | ||
|
||
debuglogmini: | ||
description: 'Set to true to enable building with DebugLogMini configuration' | ||
required: true | ||
|
||
# Outputs are always using Windows directory separator (`\`) | ||
outputs: | ||
|
||
release: | ||
description: 'Full path to ddraw.dll built with Release configuration' | ||
value: ${{ steps.build-release.outputs.ddraw-dll }} | ||
|
||
releasewin2000: | ||
description: 'Full path to ddraw.dll built with ReleaseWin2000 configuration' | ||
value: ${{ steps.build-releasewin2000.outputs.ddraw-dll }} | ||
|
||
debug: | ||
description: 'Full path to ddraw.dll built with Debug configuration' | ||
value: ${{ steps.build-debug.outputs.ddraw-dll }} | ||
debug-pdb: | ||
description: 'Full path to ddraw.pdb built with Debug configuration' | ||
value: ${{ steps.build-debug.outputs.ddraw-pdb }} | ||
|
||
debuglog: | ||
description: 'Full path to ddraw.dll built with DebugLog configuration' | ||
value: ${{ steps.build-debuglog.outputs.ddraw-dll }} | ||
debuglog-pdb: | ||
description: 'Full path to ddraw.pdb built with DebugLog configuration' | ||
value: ${{ steps.build-debuglog.outputs.ddraw-pdb }} | ||
|
||
debuglogmini: | ||
description: 'Full path to ddraw.dll built with DebugLogMini configuration' | ||
value: ${{ steps.build-debuglogmini.outputs.ddraw-dll }} | ||
debuglogmini-pdb: | ||
description: 'Full path to ddraw.pdb built with DebugLogMini configuration' | ||
value: ${{ steps.build-debuglogmini.outputs.ddraw-pdb }} | ||
|
||
runs: | ||
using: 'composite' | ||
steps: | ||
|
||
# Quick check for things which should never happen | ||
- name: Sanity checks | ||
run: | | ||
if [[ "${{ runner.os }}" != "Windows" ]]; then | ||
echo "[ERROR] This action can only be used on Windows" | ||
exit 1 | ||
elif [[ "${{ inputs.release }}" != "true" ]] && [[ "${{ inputs.releasewin2000 }}" != "true" ]] && [[ "${{ inputs.debug }}" != "true" ]] && [[ "${{ inputs.debuglog }}" != "true" ]] && [[ "${{ inputs.debuglogmini }}" != "true" ]]; then | ||
echo "[ERROR] At least one of following inputs must be set to 'true' -- 'release', 'releasewin2000', 'debug', 'debuglog', 'debuglogmini'" | ||
exit 1 | ||
# | ||
elif [[ ! -f "$(cygpath --unix "$GITHUB_ACTION_PATH/cnc-ddraw.sln")" ]]; then | ||
echo "[ERROR] Solution file not found -- '\\cnc-ddraw.sln'" | ||
exit 1 | ||
fi | ||
# | ||
shell: bash | ||
|
||
# MSBuild is not in PATH on Windows machines | ||
# Using `::set-output` to make sure workflow environment remains unchanged | ||
- name: Prepare MSBuild | ||
id: msbuild | ||
run: | | ||
echo "::group::Prepare MSBuild" | ||
MSBUILD_EXE="$("/c/Program Files (x86)/Microsoft Visual Studio/Installer/vswhere.exe" -latest -requires Microsoft.Component.MSBuild -find MSBuild/**/Bin/MSBuild.exe)" | ||
echo "exe=$MSBUILD_EXE" >> $GITHUB_OUTPUT | ||
echo "::endgroup::" | ||
shell: bash | ||
|
||
# Creating empty `PostBuild.cmd` to avoid false-positive build error | ||
- name: Build Release | ||
id: build-release | ||
run: | | ||
if [[ "${{ inputs.release }}" == "true" ]]; then | ||
echo ::group::Build Release | ||
# | ||
# echo "@echo off" > "$GITHUB_ACTION_PATH/sfall/PostBuild.cmd" | ||
"${{ steps.msbuild.outputs.exe }}" "$GITHUB_ACTION_PATH/cnc-ddraw.sln" -p:Configuration=Release -p:Platform=x86 -p:PlatformToolset=v141_xp | ||
# | ||
echo "ddraw-dll=$(cygpath --windows "$GITHUB_ACTION_PATH/bin/Release/ddraw.dll")" >> $GITHUB_OUTPUT | ||
echo "::endgroup::" | ||
fi | ||
shell: bash | ||
|
||
# Creating empty `PostBuild.cmd` to avoid false-positive build error | ||
- name: Build ReleaseWin2000 | ||
id: build-releasewin2000 | ||
run: | | ||
if [[ "${{ inputs.releasewin2000 }}" == "true" ]]; then | ||
echo ::group::Build ReleaseWin2000 | ||
# | ||
# echo "@echo off" > "$GITHUB_ACTION_PATH/sfall/PostBuild.cmd" | ||
"${{ steps.msbuild.outputs.exe }}" "$GITHUB_ACTION_PATH/cnc-ddraw.sln" -p:Configuration=ReleaseWin2000 -p:Platform=x86 -p:PlatformToolset=v141_xp | ||
# | ||
echo "ddraw-dll=$(cygpath --windows "$GITHUB_ACTION_PATH/bin/ReleaseWin2000/ddraw.dll")" >> $GITHUB_OUTPUT | ||
echo "::endgroup::" | ||
fi | ||
shell: bash | ||
|
||
# Creating empty `PostBuild.cmd` to avoid false-positive build error | ||
- name: Build Debug | ||
id: build-debug | ||
run: | | ||
: | ||
if [[ "${{ inputs.debug }}" == "true" ]]; then | ||
echo "::group::Build Debug" | ||
# | ||
# echo "@echo off" > "$GITHUB_ACTION_PATH/sfall/PostBuild.cmd" | ||
"${{ steps.msbuild.outputs.exe }}" "$GITHUB_ACTION_PATH/cnc-ddraw.sln" -p:Configuration=Debug -p:Platform=x86 -p:PlatformToolset=v141_xp | ||
# | ||
echo "ddraw-dll=$(cygpath --windows "$GITHUB_ACTION_PATH/bin/Debug/ddraw.dll")" >> $GITHUB_OUTPUT | ||
echo "ddraw-pdb=$(cygpath --windows "$GITHUB_ACTION_PATH/bin/Debug/ddraw.pdb")" >> $GITHUB_OUTPUT | ||
echo "::endgroup::" | ||
fi | ||
shell: bash | ||
|
||
# Creating empty `PostBuild.cmd` to avoid false-positive build error | ||
- name: Build DebugLog | ||
id: build-debuglog | ||
run: | | ||
: | ||
if [[ "${{ inputs.debuglog }}" == "true" ]]; then | ||
echo "::group::Build DebugLog" | ||
# | ||
# echo "@echo off" > "$GITHUB_ACTION_PATH/sfall/PostBuild.cmd" | ||
"${{ steps.msbuild.outputs.exe }}" "$GITHUB_ACTION_PATH/cnc-ddraw.sln" -p:Configuration=DebugLog -p:Platform=x86 -p:PlatformToolset=v141_xp | ||
# | ||
echo "ddraw-dll=$(cygpath --windows "$GITHUB_ACTION_PATH/bin/DebugLog/ddraw.dll")" >> $GITHUB_OUTPUT | ||
echo "ddraw-pdb=$(cygpath --windows "$GITHUB_ACTION_PATH/bin/DebugLog/ddraw.pdb")" >> $GITHUB_OUTPUT | ||
echo "::endgroup::" | ||
fi | ||
shell: bash | ||
|
||
# Creating empty `PostBuild.cmd` to avoid false-positive build error | ||
- name: Build DebugLogMini | ||
id: build-debuglogmini | ||
run: | | ||
: | ||
if [[ "${{ inputs.debuglogmini }}" == "true" ]]; then | ||
echo "::group::Build DebugLogMini" | ||
# | ||
# echo "@echo off" > "$GITHUB_ACTION_PATH/sfall/PostBuild.cmd" | ||
"${{ steps.msbuild.outputs.exe }}" "$GITHUB_ACTION_PATH/cnc-ddraw.sln" -p:Configuration=DebugLogMini -p:Platform=x86 -p:PlatformToolset=v141_xp | ||
# | ||
echo "ddraw-dll=$(cygpath --windows "$GITHUB_ACTION_PATH/bin/DebugLogMini/ddraw.dll")" >> $GITHUB_OUTPUT | ||
echo "ddraw-pdb=$(cygpath --windows "$GITHUB_ACTION_PATH/bin/DebugLogMini/ddraw.pdb")" >> $GITHUB_OUTPUT | ||
echo "::endgroup::" | ||
fi | ||
shell: bash |