Evict old files from the cache prior to saving #398
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: Tests | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
defaults: | |
run: | |
shell: bash | |
env: | |
CCACHE_ACTION_CI: true | |
jobs: | |
build: | |
# Run npm build and check that the dist/ folder is up to date. | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build | |
run: | | |
npm install | |
git diff --exit-code | |
unit_tests: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run unit tests | |
run: | | |
npm install | |
npm test | |
test_ccache: | |
# Test that ccache/sccache are installed and configured correctly. | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
shell: [bash] | |
variant: [sccache, ccache] | |
include: | |
- { os: windows-latest, shell: powershell, variant: sccache } | |
- { os: windows-latest, shell: powershell, variant: ccache, xfail: true } | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run ccache-action | |
id: ccache | |
uses: ./ | |
with: | |
verbose: 2 | |
variant: ${{ matrix.variant }} | |
max-size: 10M | |
job-summary: 'ccache statistics' | |
key: parent | |
- name: Test ccache 1/2 | |
run: | | |
[[ ${{ steps.ccache.outputs.test-cache-hit }} = true ]] || [[ ${{ steps.ccache.outputs.test-cache-hit }} = false ]] | |
if [ ${{ matrix.variant }} = sccache ]; then | |
which sccache | |
sccache -V | |
sccache -s | |
# sccache -s | grep -E 'Max cache size.+10 MiB' | |
sccache -s | grep -E "Cache location.+${SCCACHE_DIR:-ccache-action[\\/]+\.sccache}" | |
else | |
which ccache | |
ccache -V | |
# Some versions of ccache don't have -v or -s | |
ccache -sv || ccache -s || true | |
fi | |
# Example program | |
echo "int x = $RANDOM;" > test.c | |
${{ matrix.variant }} gcc test.c -c -o test.o | |
- name: Re-compile test program in Bash | |
run: ${{ matrix.variant }} gcc test.c -c -o test.o | |
- name: Re-compile test program in Bash | |
run: ${{ matrix.variant }} gcc test.c -c -o test.o | |
if: ${{ matrix.shell == 'bash' }} | |
- name: Re-compile test program in PowerShell | |
run: | | |
${{ matrix.variant }} gcc test.c -c -o test.o | |
shell: powershell | |
if: ${{ matrix.shell == 'powershell' }} | |
- name: Test ccache 2/2 | |
run: | | |
${{ matrix.variant }} -sv || ${{ matrix.variant }} -s || true | |
${{ matrix.variant }} -s | grep -E '(Hits:.+2.+/.+3)|cache hit.+2$|Cache hits.+2$' | |
if: ${{ !matrix.xfail }} | |
test_cache_hit: | |
# Test that loading from the cache works. | |
needs: [test_ccache] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
shell: [bash] | |
variant: [sccache, ccache] | |
include: | |
- { os: windows-latest, shell: powershell, variant: sccache } | |
- { os: windows-latest, shell: powershell, variant: ccache } | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run ccache action | |
uses: ./ | |
id: output | |
with: | |
variant: ${{ matrix.variant }} | |
key: parent | |
- name: Test output true | |
run: | | |
[[ ${{ steps.output.outputs.test-cache-hit }} = true ]] | |
test_cache_miss: | |
# Test that cache misses do not break anything. | |
needs: [test_ccache] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
shell: [bash] | |
variant: [sccache, ccache] | |
include: | |
- { os: windows-latest, shell: powershell, variant: sccache } | |
- { os: windows-latest, shell: powershell, variant: ccache } | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- run: | | |
echo "RAND=$RANDOM" >> $GITHUB_ENV | |
- name: Run ccache action | |
uses: ./ | |
id: output | |
with: | |
variant: ${{ matrix.variant }} | |
key: random-key-${{ env.RAND }} | |
- name: Test output false | |
run: | | |
[[ ${{ steps.output.outputs.test-cache-hit }} = false ]] | |
test_restore_keys: | |
# Test the "restore-keys" option. | |
needs: [test_ccache] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
shell: [bash] | |
variant: [sccache, ccache] | |
include: | |
- { os: windows-latest, shell: powershell, variant: sccache } | |
- { os: windows-latest, shell: powershell, variant: ccache } | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- run: | | |
echo "RAND=$RANDOM" >> $GITHUB_ENV | |
- name: Run ccache action | |
uses: ./ | |
id: restore-keys | |
with: | |
variant: ${{ matrix.variant }} | |
key: child-${{ env.RAND }} | |
restore-keys: | | |
parent | |
- name: Test restore-keys | |
run: | | |
[[ ${{ steps.restore-keys.outputs.test-cache-hit }} = true ]] | |
test_docker_ubuntu: | |
# Test that it works in a Docker container without sudo. | |
runs-on: ubuntu-latest | |
container: ubuntu:latest | |
steps: | |
- uses: actions/checkout@v4 | |
- run: apt update | |
shell: bash | |
- name: Run ccache-action | |
uses: ./ | |
test_docker_alpine: | |
# Test that it works in Alpine Docker container with apk package manager. | |
runs-on: ubuntu-latest | |
container: alpine:latest | |
steps: | |
- uses: actions/checkout@v4 | |
- run: apk update | |
shell: sh | |
- name: Run ccache-action | |
uses: ./ | |
test_option_save: | |
# Test that the 'save' option is available. | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
save: [true, false] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run ccache-action | |
uses: ./ | |
with: | |
save: ${{ matrix.save }} | |
test_option_append_timestamp: | |
# Test that the 'append-timestamp' option is available. | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
append-timestamp: [true, false] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run ccache-action | |
uses: ./ | |
with: | |
append-timestamp: ${{ matrix.append-timestamp }} | |
test_option_create_symlink: | |
# Test that the 'create-symlink' option is available. | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
create-symlink: [true, false] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run ccache-action | |
uses: ./ | |
with: | |
create-symlink: ${{ matrix.create-symlink }} | |
- name: Test symlink | |
run: | | |
if [ ${{ matrix.create-symlink }} = true ]; then | |
ls -l $(which gcc) | grep $(which ccache) | |
else | |
ls -l $(which gcc) | grep -v $(which ccache) | |
fi | |
test_option_evict: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
evict: [true, false] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run ccache-action | |
uses: ./ | |
with: | |
evict-old-files: ${{ matrix.evict }} |