Move Windows Installer into separate job

This commit is contained in:
Ivan Savenko
2025-08-06 16:37:38 +03:00
parent 469188764d
commit 57926eade3
+107 -45
View File
@@ -15,6 +15,7 @@ env:
jobs:
build:
name: build-${{ matrix.platform }}
strategy:
matrix:
include:
@@ -142,22 +143,6 @@ jobs:
with:
submodules: recursive
- name: Extract version info
id: extract-version
shell: bash
run: |
filePath="${GITHUB_WORKSPACE}/cmake_modules/VersionDefinition.cmake"
major=$(grep -m 1 "VCMI_VERSION_MAJOR" "$filePath" | tr -d -c 0-9)
minor=$(grep -m 1 "VCMI_VERSION_MINOR" "$filePath" | tr -d -c 0-9)
patch=$(grep -m 1 "VCMI_VERSION_PATCH" "$filePath" | tr -d -c 0-9)
short_version="${major}.${minor}.${patch}"
version_timestamp=$(date +"%Y%m%d%H%M%S")
echo "short_version=${short_version}" >> "$GITHUB_OUTPUT"
echo "version_timestamp=${version_timestamp}" >> "$GITHUB_OUTPUT"
- name: Prepare CI
if: "${{ matrix.before_install != '' }}"
run: source '${{github.workspace}}/CI/before_install/${{matrix.before_install}}'
@@ -276,35 +261,6 @@ jobs:
echo "Waiting..."; counter=0; while pgrep XProtect && ((counter < 20)); do sleep 3; ((counter++)); done
pgrep XProtect || true
- name: Ensure Inno Setup is installed
if: ${{ startsWith(matrix.platform, 'msvc') }}
shell: bash
run: |
if [ ! -f "/c/Program Files (x86)/Inno Setup 6/ISCC.exe" ] && [ ! -f "/c/ProgramData/Chocolatey/bin/ISCC.exe" ]; then
choco install innosetup --no-progress -y
fi
- name: Build VCMI Installer
if: ${{ startsWith(matrix.platform, 'msvc') }}
run: >
CI\wininstaller\build_installer.cmd
"${{ steps.extract-version.outputs.short_version }}"
"${{ env.VCMI_PACKAGE_BUILD }}"
"${{ matrix.arch }}"
"VCMI ${{ env.VCMI_PACKAGE_NAME_SUFFIX }}"
"${{ env.VCMI_PACKAGE_FILE_NAME }}"
"${{ github.workspace }}\out\build\${{ matrix.preset }}\bin\RelWithDebInfo"
"${{ github.workspace }}\ucrt"
shell: cmd
- name: Upload VCMI Installer Artifacts
if: ${{ startsWith(matrix.platform, 'msvc') }}
uses: actions/upload-artifact@v4
with:
name: ${{ env.VCMI_PACKAGE_FILE_NAME }} - ${{ matrix.platform }} - installer
path: |
${{ github.workspace }}/CI/wininstaller/Output/*.exe
- name: Pack
id: cpack
if: ${{ matrix.pack == 1 }}
@@ -519,6 +475,112 @@ jobs:
run: |
ctest --preset ${{matrix.preset}}
windows-installer:
needs: build
name: windows-installer-${{ matrix.arch }}
strategy:
matrix:
include:
- platform: msvc-x64
arch: x64
os: windows-latest
- platform: msvc-x86
arch: x86
os: windows-latest
- platform: msvc-arm64
arch: arm64
os: windows-11-arm
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Extract version info
id: extract-version
shell: bash
run: |
filePath="${GITHUB_WORKSPACE}/cmake_modules/VersionDefinition.cmake"
major=$(grep -m 1 "VCMI_VERSION_MAJOR" "$filePath" | tr -d -c 0-9)
minor=$(grep -m 1 "VCMI_VERSION_MINOR" "$filePath" | tr -d -c 0-9)
patch=$(grep -m 1 "VCMI_VERSION_PATCH" "$filePath" | tr -d -c 0-9)
short_version="${major}.${minor}.${patch}"
version_timestamp=$(date +"%Y%m%d%H%M%S")
echo "short_version=${short_version}" >> "$GITHUB_OUTPUT"
echo "version_timestamp=${version_timestamp}" >> "$GITHUB_OUTPUT"
- name: Install vcpkg Dependencies
run: source '${{github.workspace}}/CI/install_vcpkg_dependencies.sh' '${{matrix.platform}}'
- name: Build Number
run: |
source '${{github.workspace}}/CI/get_package_name.sh'
VCMI_PACKAGE_FILE_NAME+="-${{ matrix.arch }}"
echo VCMI_PACKAGE_FILE_NAME="$VCMI_PACKAGE_FILE_NAME" >> $GITHUB_ENV
echo VCMI_PACKAGE_BUILD="$VCMI_PACKAGE_BUILD" >> $GITHUB_ENV
echo VCMI_PACKAGE_NAME_SUFFIX="$VCMI_PACKAGE_NAME_SUFFIX" >> $GITHUB_ENV
echo VCMI_PACKAGE_GOLDMASTER="$VCMI_PACKAGE_GOLDMASTER" >> $GITHUB_ENV
env:
PULL_REQUEST: ${{ github.event.pull_request.number }}
- name: Download Artifact
uses: actions/download-artifact@v4
with:
name: ${{ env.VCMI_PACKAGE_FILE_NAME }} - ${{ matrix.platform }}
path: ${{github.workspace}}/artifact
- name: Extract Artifact
shell: bash
run: |
mkdir artifact/extracted
unzip "artifact/${{ env.VCMI_PACKAGE_FILE_NAME }}.zip" -d artifact/extracted
- name: Ensure Inno Setup is installed
shell: bash
run: |
if [ ! -f "/c/Program Files (x86)/Inno Setup 6/ISCC.exe" ] && [ ! -f "/c/ProgramData/Chocolatey/bin/ISCC.exe" ]; then
choco install innosetup --no-progress -y
fi
- name: Build VCMI Installer
run: >
CI\wininstaller\build_installer.cmd
"${{ steps.extract-version.outputs.short_version }}"
"${{ env.VCMI_PACKAGE_BUILD }}"
"${{ matrix.arch }}"
"VCMI ${{ env.VCMI_PACKAGE_NAME_SUFFIX }}"
"${{ env.VCMI_PACKAGE_FILE_NAME }}"
"${{ github.workspace }}\artifact\extracted"
"${{ github.workspace }}\ucrt"
shell: cmd
- name: Upload VCMI Installer Artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ env.VCMI_PACKAGE_FILE_NAME }} - ${{ matrix.platform }} - installer
path: |
${{ github.workspace }}/CI/wininstaller/Output/*.exe
- name: Upload Installer
if: ${{ github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/beta' || github.ref == 'refs/heads/master' }}
run: |
cd '${{github.workspace}}/CI/wininstaller/Output'
source '${{github.workspace}}/CI/upload_package.sh'
env:
DEPLOY_RSA: ${{ secrets.DEPLOY_RSA }}
PACKAGE_EXTENSION: exe
validate-code:
if: always()
runs-on: ubuntu-latest