We don't want to build old versions using these caches, so we don't need old entries (if header files change, there could be lots of differences that increase the cache size unnecessarily).
77 lines
2.2 KiB
YAML
77 lines
2.2 KiB
YAML
name: macOS
|
|
|
|
on: [push, pull_request]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
actions: write
|
|
|
|
env:
|
|
TESTS_REDUCED_KEYLENGTHS: yes
|
|
CCACHE_BASEDIR: ${{ github.workspace }}
|
|
CCACHE_COMPRESS: true
|
|
CCACHE_MAXSIZE: 100M
|
|
EVICT_CCACHE_AGE: 1200s
|
|
OS_NAME: macos
|
|
|
|
jobs:
|
|
pre-check:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
should_skip: ${{ steps.skip-check.outputs.should_skip }}
|
|
steps:
|
|
- id: skip-check
|
|
uses: fkirc/skip-duplicate-actions@master
|
|
with:
|
|
concurrent_skipping: 'same_content_newer'
|
|
|
|
macos:
|
|
strategy:
|
|
matrix:
|
|
os: [macos-latest, macos-14]
|
|
needs: pre-check
|
|
if: ${{ needs.pre-check.outputs.should_skip != 'true' }}
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 20
|
|
env:
|
|
TEST: macos
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: actions/cache/restore@v5
|
|
id: cache-restore
|
|
with:
|
|
path: ~/Library/Caches/ccache
|
|
key: ccache-${{ runner.os }}
|
|
# workaround for conflict between Python installed in the image and via brew
|
|
- run: find /usr/local/bin -lname '*/Library/Frameworks/Python.framework/*' -delete -print
|
|
- run: |
|
|
brew install ccache
|
|
echo "PATH=$(brew --prefix)/opt/ccache/libexec:$PATH" >> $GITHUB_ENV
|
|
ccache -z
|
|
- uses: ./.github/actions/default
|
|
- run: ccache -sv
|
|
- if: github.event_name == 'push'
|
|
run: |
|
|
ccache --evict-older-than ${{ env.EVICT_CCACHE_AGE }}
|
|
ccache -sv
|
|
# delete old cache entry as we currently can't update it any other way
|
|
- env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
if: github.event_name == 'push' && steps.cache-restore.outputs.cache-hit
|
|
continue-on-error: true
|
|
run: gh cache delete -r ${{ github.ref }} ${{ steps.cache-restore.outputs.cache-primary-key }}
|
|
- if: github.event_name == 'push'
|
|
uses: actions/cache/save@v5
|
|
with:
|
|
path: ~/Library/Caches/ccache
|
|
key: ${{ steps.cache-restore.outputs.cache-primary-key }}
|
|
- if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v6
|
|
with:
|
|
name: Logs ${{ github.job }}
|
|
path: config.log
|
|
retention-days: 5
|