Empty commit to test cached build performance #374
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: Build | |
on: | |
push: | |
workflow_dispatch: | |
jobs: | |
windows: | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [x86, x64] | |
runs-on: windows-latest | |
env: | |
PLATFORM: ${{ matrix.platform }} | |
BUILD_CONFIGURATION: Release | |
SOLUTION_FILE_PATH: . | |
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Add MSBuild to PATH | |
uses: microsoft/[email protected] | |
- name: Setup NuGet credentials | |
shell: bash | |
run: | | |
$(vcpkg fetch nuget | tail -n1) \ | |
sources add \ | |
-source "https://nuget.pkg.github.com/lairworks/index.json" \ | |
-storepasswordincleartext \ | |
-name "GitHub" \ | |
-username "lairworks" \ | |
-password "${{ secrets.GITHUB_TOKEN }}" | |
$(vcpkg fetch nuget | tail -n1) \ | |
setApiKey "${{ secrets.GITHUB_TOKEN }}" \ | |
-source "https://nuget.pkg.github.com/lairworks/index.json" | |
- name: Restore vcpkg dependency cache | |
uses: actions/cache@v4 | |
id: cache | |
with: | |
path: vcpkg_installed | |
key: ${{ runner.os }}-${{ matrix.platform }}-${{ hashFiles('vcpkg.json') }} | |
- name: Restore incremental build cache | |
uses: actions/cache/restore@v4 | |
if: github.ref != format('refs/heads/{0}', github.event.repository.default_branch) | |
with: | |
path: .build | |
key: buildCache-${{ runner.os }}-${{ matrix.platform }}-${{ github.sha }} | |
restore-keys: buildCache-${{ runner.os }}-${{ matrix.platform }}- | |
- name: Set modification times | |
if: ${{ hashFiles('.build/lastBuildSha.txt') != '' }} | |
shell: bash | |
run: | | |
# Determine SHA of last cached build (ignore cache if not marked) | |
lastBuildSha=$(<.build/lastBuildSha.txt) || exit 0 | |
echo "Last build SHA: ${lastBuildSha}" | |
# Fetch source code for last build | |
# (exit successfully if not found, cache will be ignored) | |
git fetch --depth=1 origin "${lastBuildSha}" || exit 0 | |
git switch --detach "${lastBuildSha}" | |
# Set last modification times to that of last build's committer time | |
# The committer time should pre-date any cached output modification time | |
commitTime=$(git log -1 --format="%cI") | |
echo "commitTime=${commitTime}" | |
find . -type f -exec touch -d "${commitTime}" '{}' + | |
# Re-check out current branch, which updates last modification times of modified files | |
git switch - | |
- name: Set build SHA | |
shell: bash | |
run: | | |
# Save copy of current SHA to be cached, and used for reference in future builds | |
mkdir --parents .build/ | |
echo "${{ github.sha }}" > .build/lastBuildSha.txt | |
- name: Build | |
# Add additional options to the MSBuild command line here (like platform or verbosity level). | |
# See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference | |
run: | | |
vcpkg integrate install | |
msbuild /maxCpuCount /warnAsError /property:RunCodeAnalysis=true /property:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}} | |
- name: Save incremental build cache | |
uses: actions/cache/save@v4 | |
with: | |
path: .build | |
key: buildCache-${{ runner.os }}-${{ matrix.platform }}-${{ github.sha }} | |
- name: Test | |
working-directory: ./test/ | |
run: ../.build/${{env.BUILD_CONFIGURATION}}_${{env.PLATFORM}}_test/test.exe | |
- name: Package | |
run: ./Package.bat "${{env.BUILD_CONFIGURATION}}" "${{matrix.platform}}" | |
linux: | |
strategy: | |
fail-fast: false | |
matrix: | |
image: | |
- "build-env-nas2d-arch:1.5" | |
runs-on: ubuntu-latest | |
container: | |
image: "ghcr.io/${{ github.repository_owner }}/${{ matrix.image }}" | |
steps: | |
- uses: actions/checkout@v4 | |
- run: make --keep-going --jobs 16 CXXFLAGS_EXTRA="-Werror" | |
- run: make --keep-going --jobs 16 CXXFLAGS_EXTRA="-Werror" test | |
- run: make --keep-going --jobs 16 CXXFLAGS_EXTRA="-Werror" check | |
- run: make --keep-going --jobs 16 CXXFLAGS_EXTRA="-Werror" test-graphics | |
- run: make package |