forked from github/codeql
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
split saving the compilation cache into a shared workflow
- Loading branch information
1 parent
78ad9ba
commit af58329
Showing
2 changed files
with
67 additions
and
39 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
name: Cache query compilation | ||
description: Caches CodeQL compilation caches - should be run both on PRs and pushes to main. | ||
|
||
inputs: | ||
key: | ||
description: 'The cache key to use - should be unique to the workflow' | ||
required: true | ||
|
||
outputs: | ||
cache-dir: | ||
description: "The directory where the cache was stored" | ||
value: ${{ steps.fill-compilation-dir.outputs.compdir }} | ||
|
||
runs: | ||
using: composite | ||
steps: | ||
# Cache the query compilation caches. | ||
# calculate the merge-base with main, in a way that works both on PRs and pushes to main. | ||
- name: Calculate merge-base | ||
shell: bash | ||
if: ${{ github.event_name == 'pull_request' }} | ||
env: | ||
BASE_BRANCH: ${{ github.base_ref }} | ||
run: | | ||
MERGE_BASE=$(git cat-file commit $GITHUB_SHA | grep '^parent ' | head -1 | cut -f 2 -d " ") | ||
echo "merge-base=$MERGE_BASE" >> $GITHUB_ENV | ||
- name: Read CodeQL query compilation - PR | ||
if: ${{ github.event_name == 'pull_request' }} | ||
uses: actions/cache@v3 | ||
with: | ||
path: '**/.cache' | ||
key: codeql-compile-${{ inputs.key }}-pr-${{ github.sha }} # deliberately not using the `compile-compile-main` keys here. | ||
restore-keys: | | ||
codeql-compile-${{ inputs.key }}-${{ github.base_ref }}-${{ env.merge-base }} | ||
codeql-compile-${{ inputs.key }}-${{ github.base_ref }}- | ||
codeql-compile-${{ inputs.key }}-main- | ||
- name: Fill CodeQL query compilation cache - main | ||
if: ${{ github.event_name != 'pull_request' }} | ||
uses: actions/cache@v3 | ||
with: | ||
path: '**/.cache' | ||
key: codeql-compile-${{ inputs.key }}-${{ github.ref_name }}-${{ github.sha }} # just fill on main | ||
restore-keys: | # restore from another random commit, to speed up compilation. | ||
codeql-compile-${{ inputs.key }}-${{ github.ref_name }}- | ||
codeql-compile-${{ inputs.key }}-main- | ||
- name: Fill compilation cache directory | ||
id: fill-compilation-dir | ||
shell: bash | ||
run: | | ||
# Move all the existing cache into another folder, so we only preserve the cache for the current queries. | ||
mkdir -p ${COMBINED_CACHE_DIR} | ||
rm -f **/.cache/{lock,size} # -f to avoid errors if the cache is empty. | ||
# copy the contents of the .cache folders into the combined cache folder. | ||
cp -r **/.cache/* ${COMBINED_CACHE_DIR}/ || : # ignore missing files | ||
# clean up the .cache folders | ||
rm -rf **/.cache/* | ||
echo "compdir=${COMBINED_CACHE_DIR}" >> $GITHUB_OUTPUT | ||
env: | ||
COMBINED_CACHE_DIR: ${{ github.workspace }}/compilation-dir |
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