1
0
mirror of https://github.com/valinet/ExplorerPatcher.git synced 2024-11-24 07:30:22 +01:00
ExplorerPatcher/.github/workflows/build.yml

199 lines
7.0 KiB
YAML
Raw Normal View History

2021-11-05 03:46:14 +01:00
# references:
# https://trstringer.com/github-actions-multiline-strings/
# https://trstringer.com/github-actions-create-release-upload-artifacts/
# https://github.com/Speedy37/sws/blob/444c67157a98652c4e7ffd3b6d6bbfb664071926/.github/workflows/msbuild.yml
# https://stackoverflow.com/questions/58886293/getting-current-branch-and-commit-hash-in-github-action
2021-11-05 00:37:09 +01:00
name: Build
on:
push:
branches:
- '**'
tags-ignore:
- '**'
pull_request:
branches:
- '**'
tags-ignore:
- '**'
2021-11-12 21:34:32 +01:00
workflow_dispatch:
inputs:
ref:
description: 'Commit'
required: true
config:
description: 'Configuration'
required: false
build_dir:
description: 'Build dir'
required: false
2021-11-05 00:37:09 +01:00
env:
SOLUTION_FILE_PATH: .
BUILD_CONFIGURATION: Release
jobs:
build:
runs-on: windows-latest
steps:
2021-11-12 21:34:32 +01:00
- name: Print inputs
shell: bash
run: |
echo "ref: ${{ github.event.inputs.ref }}"
echo "config: ${{ github.event.inputs.config }}"
echo "build_dir: ${{ github.event.inputs.build_dir }}"
2021-11-05 00:37:09 +01:00
- name: Checkout latest build and submodules
uses: actions/checkout@v4
2021-11-12 21:34:32 +01:00
if: github.event.inputs.ref == ''
with:
submodules: recursive
- name: Checkout specific build and submodules
uses: actions/checkout@v4
2021-11-12 21:34:32 +01:00
if: github.event.inputs.ref != ''
2021-11-05 00:37:09 +01:00
with:
2021-11-12 21:34:32 +01:00
ref: ${{ github.event.inputs.ref }}
2021-11-05 00:37:09 +01:00
submodules: recursive
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v2
2021-11-05 00:37:09 +01:00
2021-11-05 03:46:14 +01:00
- name: Declare some variables
id: vars
shell: bash
run: |
echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_OUTPUT
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
2021-11-05 03:46:14 +01:00
2021-11-12 21:34:32 +01:00
- name: Enable SimpleWindowSwitcher support for newer Windows SDKs
shell: cmd
run: |
cd libs/sws
C:\msys64\usr\bin\wget.exe https://github.com/valinet/sws/commit/972acb76d1e6429133c92ed7cdefd29b9a2c6179.patch
C:\msys64\usr\bin\dos2unix.exe 972acb76d1e6429133c92ed7cdefd29b9a2c6179.patch
C:\msys64\usr\bin\dos2unix.exe SimpleWindowSwitcher/sws_def.h
C:\msys64\usr\bin\patch.exe -N SimpleWindowSwitcher/sws_def.h 972acb76d1e6429133c92ed7cdefd29b9a2c6179.patch
C:\msys64\usr\bin\unix2dos.exe SimpleWindowSwitcher/sws_def.h
exit /b 0
2022-01-27 03:35:27 +01:00
- name: Setup NuGet
uses: nuget/setup-nuget@v2
2022-01-27 03:35:27 +01:00
- name: Restore NuGet packages
run: |
nuget restore ExplorerPatcher.sln
- name: Download ep_taskbar
uses: robinraju/release-downloader@v1
with:
repository: ExplorerPatcher/ep_taskbar_releases
fileName: ep_taskbar.*.dll
latest: true
out-file-path: build/Release
2021-11-12 21:34:32 +01:00
- name: Build funchook
2021-11-05 00:37:09 +01:00
shell: powershell
run: |
cd libs/funchook
md build
cd build
cmake -G "Visual Studio 17 2022" -A x64 ..
(gc .\funchook-static.vcxproj) -replace '<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>', '<RuntimeLibrary>MultiThreaded</RuntimeLibrary>' | Out-File .\funchook-static.vcxproj
2021-11-05 00:37:09 +01:00
cmake --build . --config Release
2021-11-05 03:46:14 +01:00
2021-11-05 00:37:09 +01:00
- name: Build EP IA-32
2021-11-12 21:34:32 +01:00
if: github.event.inputs.config == ''
2021-11-05 00:37:09 +01:00
working-directory: ${{env.GITHUB_WORKSPACE}}
run: |
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=IA-32 ${{env.SOLUTION_FILE_PATH}}
2021-11-12 21:34:32 +01:00
2021-11-05 00:37:09 +01:00
- name: Build EP amd64
2021-11-12 21:34:32 +01:00
if: github.event.inputs.config == ''
2021-11-05 00:37:09 +01:00
working-directory: ${{env.GITHUB_WORKSPACE}}
run: |
2021-11-05 03:46:14 +01:00
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=amd64 ${{env.SOLUTION_FILE_PATH}}
2021-11-12 21:34:32 +01:00
- name: Build EP custom
if: github.event.inputs.config != ''
working-directory: ${{env.GITHUB_WORKSPACE}}
run: |
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=${{ github.event.inputs.config }} ${{env.SOLUTION_FILE_PATH}}
- name: Create expected build directory
if: github.event.inputs.build_dir != ''
shell: bash
run: |
mkdir build
cp -r ${{ github.event.inputs.build_dir }}/Release build/Release
2021-11-05 03:46:14 +01:00
- name: Generate dxgi.dll
2021-11-12 21:34:32 +01:00
shell: bash
2021-11-05 03:46:14 +01:00
working-directory: build/Release
run: |
2021-11-12 21:34:32 +01:00
if [[ -f "ExplorerPatcher.amd64.dll" ]]; then cp ExplorerPatcher.amd64.dll dxgi.dll; fi
2021-11-14 18:59:10 +01:00
- name: Patch setup
shell: cmd
working-directory: build/Release
run: |
ep_setup_patch.exe
exit /b 0
2021-11-05 05:11:53 +01:00
- name: Upload artifacts
uses: actions/upload-artifact@v4
2021-11-05 05:11:53 +01:00
with:
2021-11-05 07:17:47 +01:00
name: ep_bin_multi_${{ steps.vars.outputs.sha_short }}_${{ steps.vars.outputs.branch }}
2021-11-05 05:11:53 +01:00
path: |
build/Release/
2021-11-05 03:46:14 +01:00
- name: Generate release name
shell: bash
working-directory: build/Release
2021-11-12 21:34:32 +01:00
if: github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
2021-11-05 03:46:14 +01:00
run: |
echo "data=$(./ep_generate_release_name.exe)" >> $GITHUB_OUTPUT
2021-11-05 03:46:14 +01:00
id: release_name
- name: Generate release notes
shell: bash
working-directory: build/Release
2021-11-12 21:34:32 +01:00
if: github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
2021-11-05 03:46:14 +01:00
run: |
echo "data<<EP_RELEASE_DESCRIPTION_DELIM" >> $GITHUB_OUTPUT
echo "$(./ep_generate_release_description.exe ${{ steps.vars.outputs.sha_short }} ${{ steps.vars.outputs.branch }} ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" >> $GITHUB_OUTPUT
echo "EP_RELEASE_DESCRIPTION_DELIM" >> $GITHUB_OUTPUT
2021-11-05 03:46:14 +01:00
id: release_description
- name: Create/update release (valinet)
uses: softprops/action-gh-release@v2
if: github.repository_owner == 'valinet' && github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
2021-11-05 03:46:14 +01:00
id: create_release
with:
draft: false
prerelease: ${{ !startsWith(github.event.head_commit.message, 'rel_') }}
name: ${{ steps.release_name.outputs.data }}
2021-11-05 03:46:14 +01:00
tag_name: ${{ steps.release_name.outputs.data }}_${{ steps.vars.outputs.sha_short }}
body: ${{ steps.release_description.outputs.data }}
files: |
./build/Release/ep_setup.exe
env:
GITHUB_TOKEN: ${{ secrets.PAT }}
- name: Create/update release (forks)
uses: softprops/action-gh-release@v2
if: github.repository_owner != 'valinet' && github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
id: create_release_fork
with:
draft: false
prerelease: ${{ !startsWith(github.event.head_commit.message, 'rel_') }}
name: ${{ steps.release_name.outputs.data }}
tag_name: ${{ steps.release_name.outputs.data }}_${{ steps.vars.outputs.sha_short }}
body: ${{ steps.release_description.outputs.data }}
files: |
./build/Release/ep_setup.exe
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}