Skip to content

Support two macOS GitHub Actions runner images #26

Support two macOS GitHub Actions runner images

Support two macOS GitHub Actions runner images #26

Workflow file for this run

name: 'Windows'
env:
LIBRARIES_BRANCH: libraries-OS-COMPILER
NCINE_BRANCH: nCine-BRANCH_NAME-OS-COMPILER
NCINE_SOURCE_BRANCH: BRANCH_NAME
DEPLOY_MESSAGE:
"Push artifact from GitHub Actions build ${{ github.run_number }} with id ${{ github.run_id }}
- PROJECT_NAME artifact from branch 'BRANCH_NAME' with commit id ${{ github.sha }}"
DEPLOY_BRANCH: PROJECT_NAME-BRANCH_NAME-OS-COMPILER
on: [push, workflow_dispatch]
jobs:
Windows:
strategy:
fail-fast: false
matrix:
os: [windows-2019, windows-2022]
BuildType: [Debug, Release, BinDist]
runs-on: ${{ matrix.os }}
steps:
- name: 'Checkout Code'
uses: actions/checkout@v4
- name: 'Unshallow Git Repository for Versioning'
if: matrix.BuildType == 'BinDist'
run: |
$env:GIT_REDIRECT_STDERR = '2>&1'
git fetch --unshallow; if (-not $?) { return }
- name: 'Download nCine-libraries, nCine Artifacts, and project data'
run: |
$env:GIT_REDIRECT_STDERR = '2>&1'
$env:branch_name = git describe --tags --exact-match; if (-not $?) { $env:branch_name = git symbolic-ref -q --short HEAD }; if (-not $?) { $env:branch_name = git rev-parse --short HEAD }
$env:vsversion = switch ("${{ matrix.os }}")
{
"windows-2022" {"vs2022"}
"windows-2019" {"vs2019"}
}
cd ..
git clone https://github.com/nCine/nCine-libraries-artifacts.git
cd nCine-libraries-artifacts
$env:LIBRARIES_BRANCH = $env:LIBRARIES_BRANCH -creplace "OS","windows" -creplace "COMPILER",$env:vsversion
git checkout $env:LIBRARIES_BRANCH
$env:LIBRARIES_FILE = Get-ChildItem -Path $(pwd) -Name -File | Select-Object -First 1
7z x $env:LIBRARIES_FILE
Move-Item -Path nCine-external -Destination ..
cd ..
Remove-Item nCine-libraries-artifacts -Recurse -Force
git clone https://github.com/nCine/nCine-artifacts.git
cd nCine-artifacts
$env:NCINE_SOURCE_BRANCH = $env:NCINE_SOURCE_BRANCH -creplace "BRANCH_NAME","$env:branch_name"
$env:NCINE_BRANCH = $env:NCINE_BRANCH -creplace "BRANCH_NAME","$env:ncine_source_branch" -creplace "OS","windows" -creplace "COMPILER",$env:vsversion
git checkout $env:NCINE_BRANCH
$env:NCINE_FILE = Get-ChildItem -Path $(pwd) -Filter nCine-*.zip -Name -File | Select-Object -First 1
7z x $env:NCINE_FILE
$env:NCINE_DIR = $env:NCINE_FILE -creplace ".zip",""
Move-Item -Path $env:NCINE_DIR -Destination ../nCine
cd ..
Remove-Item nCine-artifacts -Recurse -Force
git clone https://github.com/$env:GITHUB_REPOSITORY-data.git
- name: 'CMake Configuration'
run: |
$env:project_name = Split-Path -Path "$env:GITHUB_REPOSITORY" -leaf
$env:generator = switch ("${{ matrix.os }}")
{
"windows-2022" {"Visual Studio 17 2022"}
"windows-2019" {"Visual Studio 16 2019"}
}
if ("${{ matrix.BuildType }}" -eq "BinDist")
{ cmake -G "$env:generator" -A x64 -B ../$env:project_name-build-${{ matrix.BuildType }} -D NCPROJECT_OPTIONS_PRESETS=${{ matrix.BuildType }} -D nCine_DIR=$(pwd)/../nCine/cmake }
else
{ cmake -G "$env:generator" -A x64 -B ../$env:project_name-build-${{ matrix.BuildType }} -D nCine_DIR=$(pwd)/../nCine/cmake }
- name: 'CMake Build'
run: |
$env:project_name = Split-Path -Path "$env:GITHUB_REPOSITORY" -leaf
if ("${{ matrix.BuildType }}" -eq "BinDist")
{ cmake --build ../$env:project_name-build-${{ matrix.BuildType }} --config Release }
else
{ cmake --build ../$env:project_name-build-${{ matrix.BuildType }} --config ${{ matrix.BuildType }} }
- name: 'Package'
if: matrix.BuildType == 'BinDist'
run: |
$env:project_name = Split-Path -Path "$env:GITHUB_REPOSITORY" -leaf
cmake --build ../$env:project_name-build-${{ matrix.BuildType }} --config Release --target package
- name: 'Push Artifacts'
if: matrix.BuildType == 'BinDist'
env:
PUBLIC_REPO_TOKEN: ${{ secrets.PUBLIC_REPO_TOKEN }}
run: |
git config --global user.email "actions@github.com"
git config --global user.name "GitHub Actions"
$env:GIT_REDIRECT_STDERR = '2>&1'
$env:project_name = Split-Path -Path "$env:GITHUB_REPOSITORY" -leaf
$env:branch_name = git describe --tags --exact-match; if (-not $?) { $env:branch_name = git symbolic-ref -q --short HEAD }; if (-not $?) { $env:branch_name = git rev-parse --short HEAD }
$env:DEPLOY_MESSAGE = $env:DEPLOY_MESSAGE -creplace "PROJECT_NAME",$env:project_name
$env:DEPLOY_MESSAGE = $env:DEPLOY_MESSAGE -creplace "BRANCH_NAME",$env:branch_name
$env:vsversion = switch ("${{ matrix.os }}")
{
"windows-2022" {"vs2022"}
"windows-2019" {"vs2019"}
}
$env:DEPLOY_BRANCH = $env:DEPLOY_BRANCH -creplace "PROJECT_NAME",$env:project_name
$env:DEPLOY_BRANCH = $env:DEPLOY_BRANCH -creplace "BRANCH_NAME",$env:branch_name
$env:DEPLOY_BRANCH = $env:DEPLOY_BRANCH -creplace "OS","windows" -creplace "COMPILER",$env:vsversion
cd ..
git clone https://$env:PUBLIC_REPO_TOKEN@github.com/$env:GITHUB_REPOSITORY-artifacts.git 2>&1>$null
cd $env:project_name-artifacts
git checkout $env:DEPLOY_BRANCH; if (-not $?) { git checkout --orphan $env:DEPLOY_BRANCH }
git reset
git clean -f
git rm *
Move-Item -Path ..\$env:project_name-build-${{ matrix.BuildType }}\*.exe -Destination .
Move-Item -Path ..\$env:project_name-build-${{ matrix.BuildType }}\*.zip -Destination .
git add *.exe *.zip
git commit --amend -m "$env:DEPLOY_MESSAGE"; if (-not $?) { git commit -m "$env:DEPLOY_MESSAGE" }
git push --force; if (-not $?) { git push --set-upstream origin $env:DEPLOY_BRANCH }