neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 9d8dbd9846e79c110481847dcd98c94fb2d2d3dd
parent 89374da798ff29e651c47ed4159aa89e3395af9f
Author: dundargoc <33953936+dundargoc@users.noreply.github.com>
Date:   Mon,  5 Dec 2022 11:57:52 +0100

ci: use local action to make make cache keys consistent (#20538)

The advantages of using an action is that it reduces boilerplate and
repetition from the main ci.yml workflow.
Diffstat:
A.github/actions/cache/action.yml | 22++++++++++++++++++++++
M.github/workflows/ci.yml | 27+++++----------------------
2 files changed, 27 insertions(+), 22 deletions(-)

diff --git a/.github/actions/cache/action.yml b/.github/actions/cache/action.yml @@ -0,0 +1,22 @@ +name: 'Cache' +description: "This action caches neovim dependencies" +runs: + using: "composite" + steps: + - run: echo "CACHE_KEY=${{ github.job }}-${{ github.base_ref }}" >> $GITHUB_ENV + shell: bash + + - if: ${{ matrix }} + run: echo "CACHE_KEY=$CACHE_KEY-${{ join(matrix.*, '-') }}" >> $GITHUB_ENV + shell: bash + + # Avoid using '**/CMakeLists.txt' (or any pattern starting with '**/') even + # if it makes the expression below simpler. hashFiles() has a timer that + # will fail the job if it times out, which can happen if there are too many + # files to search through. + - uses: actions/cache@v3 + with: + path: ${{ env.CACHE_NVIM_DEPS_DIR }} + key: ${{ env.CACHE_KEY }}-${{ hashFiles('cmake**', 'ci/**', + '.github/workflows/ci.yml', 'CMakeLists.txt', + 'runtime/CMakeLists.txt', 'src/nvim/**/CMakeLists.txt') }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml @@ -69,12 +69,7 @@ jobs: mkdir -p $HOME/.cache cp $build_dir/uncrustify ${{ env.CACHE_UNCRUSTIFY }} - - name: Cache artifacts - uses: actions/cache@v3 - with: - path: | - ${{ env.CACHE_NVIM_DEPS_DIR }} - key: lint-${{ hashFiles('cmake/*', '**/CMakeLists.txt', '!cmake.deps/**CMakeLists.txt') }}-${{ github.base_ref }} + - uses: ./.github/actions/cache - name: Build third-party deps run: ./ci/before_script.sh @@ -167,12 +162,7 @@ jobs: ninja-build \ pkg-config - - name: Cache artifacts - uses: actions/cache@v3 - with: - path: | - ${{ env.CACHE_NVIM_DEPS_DIR }} - key: lint-${{ hashFiles('cmake/*', '**/CMakeLists.txt', '!cmake.deps/**CMakeLists.txt') }}-${{ github.base_ref }} + - uses: ./.github/actions/cache - name: Build third-party deps run: ./ci/before_script.sh @@ -273,12 +263,7 @@ jobs: - name: Setup interpreter packages run: ./ci/install.sh - - name: Cache dependencies - uses: actions/cache@v3 - with: - path: | - ${{ env.CACHE_NVIM_DEPS_DIR }} - key: ${{ matrix.runner }}-${{ matrix.flavor }}-${{ matrix.cc }}-${{ hashFiles('cmake/*', 'cmake.deps/**', '**/CMakeLists.txt') }}-${{ github.base_ref }} + - uses: ./.github/actions/cache - name: Build third-party deps run: ./ci/before_script.sh @@ -315,15 +300,13 @@ jobs: timeout-minutes: 45 env: DEPS_BUILD_DIR: ${{ github.workspace }}/nvim-deps + CACHE_NVIM_DEPS_DIR: ${{ github.workspace }}/nvim-deps DEPS_PREFIX: ${{ github.workspace }}/nvim-deps/usr name: windows (MSVC_64) steps: - uses: actions/checkout@v3 - - uses: actions/cache@v3 - with: - path: ${{ env.DEPS_BUILD_DIR }} - key: windows-${{ hashFiles('cmake.deps/**') }} + - uses: ./.github/actions/cache - name: Set env run: ./.github/workflows/env.ps1