From e4bce056adf0db03e53be40cfad1db5a69384c1b Mon Sep 17 00:00:00 2001 From: Oleg A Date: Tue, 16 Apr 2024 13:45:47 +0300 Subject: [PATCH] Bump action version --- .github/workflows/codeql.yml | 2 +- .github/workflows/workflow.yml | 10 ++-- README.md | 10 ++-- caching-strategies.md | 32 ++++++------- examples.md | 88 +++++++++++++++++----------------- restore/README.md | 14 +++--- save/README.md | 6 +-- tips-and-workarounds.md | 4 +- 8 files changed, 83 insertions(+), 83 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f699c5f..74745e9 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 2a53c19..5af7599 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -20,7 +20,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Node.js 20.x uses: actions/setup-node@v3 with: @@ -43,7 +43,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Generate files in working directory shell: bash run: __tests__/create-cache-files.sh ${{ runner.os }} test-cache @@ -66,7 +66,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Restore cache uses: ./ with: @@ -96,7 +96,7 @@ jobs: https_proxy: http://squid-proxy:3128 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Generate files run: __tests__/create-cache-files.sh proxy test-cache - name: Save cache @@ -119,7 +119,7 @@ jobs: https_proxy: http://squid-proxy:3128 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Restore cache uses: ./ with: diff --git a/README.md b/README.md index d1d2aef..3da1ae0 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Cache Primes id: cache-primes @@ -122,7 +122,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Restore cached Primes id: cache-primes-restore @@ -229,7 +229,7 @@ Example: ```yaml steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/cache@v4 id: cache @@ -259,7 +259,7 @@ jobs: build-linux: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Cache Primes id: cache-primes @@ -286,7 +286,7 @@ jobs: build-windows: runs-on: windows-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Cache Primes id: cache-primes diff --git a/caching-strategies.md b/caching-strategies.md index 47946c3..562376d 100644 --- a/caching-strategies.md +++ b/caching-strategies.md @@ -12,7 +12,7 @@ This document lists some of the strategies (and example workflows if possible) w jobs: build: runs-on: ubuntu-latest - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: key: ${{ some-metadata }}-cache ``` @@ -24,7 +24,7 @@ In your workflows, you can use different strategies to name your key depending o One of the most common use case is to use hash for lockfile as key. This way, same cache will be restored for a lockfile until there's a change in dependencies listed in lockfile. ```yaml - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: | path/to/dependencies @@ -37,7 +37,7 @@ One of the most common use case is to use hash for lockfile as key. This way, sa If cache is not found matching the primary key, restore keys can be used to download the closest matching cache that was recently created. This ensures that the build/install step will need to additionally fetch just a handful of newer dependencies, and hence saving build time. ```yaml - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: | path/to/dependencies @@ -54,7 +54,7 @@ The restore keys can be provided as a complete name, or a prefix, read more [her In case of workflows with matrix running for multiple Operating Systems, the caches can be stored separately for each of them. This can be used in combination with hashfiles in case multiple caches are being generated per OS. ```yaml - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: | path/to/dependencies @@ -73,7 +73,7 @@ Caches scoped to the particular workflow run id or run attempt can be stored and On similar lines, commit sha can be used to create a very specialized and short lived cache. ```yaml - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: | path/to/dependencies @@ -86,7 +86,7 @@ On similar lines, commit sha can be used to create a very specialized and short Cache key can be formed by combination of more than one metadata, evaluated info. ```yaml - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: | path/to/dependencies @@ -146,9 +146,9 @@ In case you are using a centralized job to create and save your cache that can b ```yaml steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 id: cache with: path: path/to/dependencies @@ -171,9 +171,9 @@ You can use the output of this action to exit the workflow on cache miss. This w ```yaml steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 id: cache with: path: path/to/dependencies @@ -194,7 +194,7 @@ steps: If you want to avoid re-computing the cache key again in `save` action, the outputs from `restore` action can be used as input to the `save` action. ```yaml - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 id: restore-cache with: path: | @@ -219,7 +219,7 @@ On the other hand, the key can also be explicitly re-computed while executing th Let's say we have a restore step that computes key at runtime ```yaml -uses: actions/cache/restore@v3 +uses: actions/cache/restore@v4 id: restore-cache with: key: cache-${{ hashFiles('**/lockfiles') }} @@ -249,7 +249,7 @@ Similarly, `actions/cache/save` action can be conditionally used based on the ou ```yaml steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 . . // restore if need be . @@ -270,7 +270,7 @@ In case of multi-module projects, where the built artifact of one project needs ```yaml steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build run: ./build-parent-module.sh @@ -286,9 +286,9 @@ steps: ```yaml steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 id: cache with: path: path/to/dependencies diff --git a/examples.md b/examples.md index 1bcde91..238fb3e 100644 --- a/examples.md +++ b/examples.md @@ -46,7 +46,7 @@ Using [NuGet lock files](https://docs.microsoft.com/nuget/consume-packages/package-references-in-project-files#locking-dependencies): ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: ~/.nuget/packages key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} @@ -55,10 +55,10 @@ Using [NuGet lock files](https://docs.microsoft.com/nuget/consume-packages/packa ``` Depending on the environment, huge packages might be pre-installed in the global cache folder. -With `actions/cache@v3` you can now exclude unwanted packages with [exclude pattern](https://github.com/actions/toolkit/tree/main/packages/glob#exclude-patterns) +With `actions/cache@v4` you can now exclude unwanted packages with [exclude pattern](https://github.com/actions/toolkit/tree/main/packages/glob#exclude-patterns) ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: | ~/.nuget/packages @@ -75,7 +75,7 @@ Or you could move the cache folder like below. env: NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages steps: - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: ${{ github.workspace }}/.nuget/packages key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} @@ -87,7 +87,7 @@ steps: ```yaml - name: Cache lein project dependencies - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/.m2/repository key: ${{ runner.os }}-clojure-${{ hashFiles('**/project.clj') }} @@ -101,7 +101,7 @@ steps: ### POSIX ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: ~/.dub key: ${{ runner.os }}-dub-${{ hashFiles('**/dub.selections.json') }} @@ -112,7 +112,7 @@ steps: ### Windows ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: ~\AppData\Local\dub key: ${{ runner.os }}-dub-${{ hashFiles('**/dub.selections.json') }} @@ -125,7 +125,7 @@ steps: ### Linux ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: | ~/.deno @@ -136,7 +136,7 @@ steps: ### macOS ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: | ~/.deno @@ -147,7 +147,7 @@ steps: ### Windows ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: | ~\.deno @@ -158,7 +158,7 @@ steps: ## Elixir - Mix ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: | deps @@ -170,7 +170,7 @@ steps: ## Erlang - Rebar3 ```yaml -- uses: actions/cache@v2 +- uses: actions/cache@v4 with: path: | ~/.cache/rebar3 @@ -185,7 +185,7 @@ steps: ### Linux ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: | ~/.cache/go-build @@ -198,7 +198,7 @@ steps: ### macOS ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: | ~/Library/Caches/go-build @@ -211,7 +211,7 @@ steps: ### Windows ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: | ~\AppData\Local\go-build @@ -227,7 +227,7 @@ We cache the elements of the Cabal store separately, as the entirety of `~/.caba ```yaml - name: Cache ~/.cabal/packages, ~/.cabal/store and dist-newstyle - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | ~/.cabal/packages @@ -242,14 +242,14 @@ We cache the elements of the Cabal store separately, as the entirety of `~/.caba ### Linux or macOS ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 name: Cache ~/.stack with: path: ~/.stack key: ${{ runner.os }}-stack-global-${{ hashFiles('stack.yaml') }}-${{ hashFiles('package.yaml') }} restore-keys: | ${{ runner.os }}-stack-global- -- uses: actions/cache@v3 +- uses: actions/cache@v4 name: Cache .stack-work with: path: .stack-work @@ -261,7 +261,7 @@ We cache the elements of the Cabal store separately, as the entirety of `~/.caba ### Windows ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 name: Cache %APPDATA%\stack %LOCALAPPDATA%\Programs\stack with: path: | @@ -270,7 +270,7 @@ We cache the elements of the Cabal store separately, as the entirety of `~/.caba key: ${{ runner.os }}-stack-global-${{ hashFiles('stack.yaml') }}-${{ hashFiles('package.yaml') }} restore-keys: | ${{ runner.os }}-stack-global- -- uses: actions/cache@v3 +- uses: actions/cache@v4 name: Cache .stack-work with: path: .stack-work @@ -284,7 +284,7 @@ We cache the elements of the Cabal store separately, as the entirety of `~/.caba > **Note** Ensure no Gradle daemons are running anymore when your workflow completes. Creating the cache package might fail due to locks being held by Gradle. Refer to the [Gradle Daemon documentation](https://docs.gradle.org/current/userguide/gradle_daemon.html) on how to disable or stop the Gradle Daemons. ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: | ~/.gradle/caches @@ -298,7 +298,7 @@ We cache the elements of the Cabal store separately, as the entirety of `~/.caba ```yaml - name: Cache local Maven repository - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} @@ -334,7 +334,7 @@ After [deprecation](https://github.blog/changelog/2022-10-11-github-actions-depr `Get npm cache directory` step can then be used with `actions/cache` as shown below ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true' with: path: ${{ steps.npm-cache-dir.outputs.dir }} @@ -347,7 +347,7 @@ After [deprecation](https://github.blog/changelog/2022-10-11-github-actions-depr ```yaml - name: restore lerna - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: '**/node_modules' key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} @@ -361,7 +361,7 @@ The yarn cache directory will depend on your operating system and version of `ya id: yarn-cache-dir-path run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT -- uses: actions/cache@v3 +- uses: actions/cache@v4 id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} @@ -379,7 +379,7 @@ The yarn 2 cache directory will depend on your config. See https://yarnpkg.com/c id: yarn-cache-dir-path run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT -- uses: actions/cache@v3 +- uses: actions/cache@v4 id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} @@ -394,7 +394,7 @@ Esy allows you to export built dependencies and import pre-built dependencies. ```yaml - name: Restore Cache id: restore-cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: _export key: ${{ runner.os }}-esy-${{ hashFiles('esy.lock/index.json') }} @@ -423,7 +423,7 @@ Esy allows you to export built dependencies and import pre-built dependencies. id: composer-cache run: | echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} @@ -444,7 +444,7 @@ Locations: ### Simple example ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} @@ -457,7 +457,7 @@ Replace `~/.cache/pip` with the correct `path` if not using Ubuntu. ### Multiple OS's in a workflow ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 if: startsWith(runner.os, 'Linux') with: path: ~/.cache/pip @@ -465,7 +465,7 @@ Replace `~/.cache/pip` with the correct `path` if not using Ubuntu. restore-keys: | ${{ runner.os }}-pip- -- uses: actions/cache@v3 +- uses: actions/cache@v4 if: startsWith(runner.os, 'macOS') with: path: ~/Library/Caches/pip @@ -473,7 +473,7 @@ Replace `~/.cache/pip` with the correct `path` if not using Ubuntu. restore-keys: | ${{ runner.os }}-pip- -- uses: actions/cache@v3 +- uses: actions/cache@v4 if: startsWith(runner.os, 'Windows') with: path: ~\AppData\Local\pip\Cache @@ -499,7 +499,7 @@ jobs: - os: windows-latest path: ~\AppData\Local\pip\Cache steps: - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: ${{ matrix.path }} key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} @@ -517,7 +517,7 @@ jobs: echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT - name: pip cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} @@ -535,7 +535,7 @@ jobs: ⋮ -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: ~/.local/share/virtualenvs key: ${{ runner.os }}-python-${{ steps.setup-python.outputs.python-version }}-pipenv-${{ hashFiles('Pipfile.lock') }} @@ -562,7 +562,7 @@ For renv, the cache directory will vary by OS. The `RENV_PATHS_ROOT` environment cat("##[set-output name=r-version;]", R.Version()$version.string, sep = "") shell: Rscript {0} - name: Restore Renv package cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ env.RENV_PATHS_ROOT }} key: ${{ steps.get-version.outputs.os-version }}-${{ steps.get-version.outputs.r-version }}-${{ inputs.cache-version }}-${{ hashFiles('renv.lock') }} @@ -588,7 +588,7 @@ whenever possible: ## Rust - Cargo ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: | ~/.cargo/bin/ @@ -603,7 +603,7 @@ whenever possible: ```yaml - name: Cache SBT - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | ~/.ivy2/cache @@ -614,7 +614,7 @@ whenever possible: ## Swift, Objective-C - Carthage ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: Carthage key: ${{ runner.os }}-carthage-${{ hashFiles('**/Cartfile.resolved') }} @@ -625,7 +625,7 @@ whenever possible: ## Swift, Objective-C - CocoaPods ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: Pods key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }} @@ -636,7 +636,7 @@ whenever possible: ## Swift - Swift Package Manager ```yaml -- uses: actions/cache@v3 +- uses: actions/cache@v4 with: path: .build key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} @@ -651,7 +651,7 @@ env: MINT_PATH: .mint/lib MINT_LINK_PATH: .mint/bin steps: - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: .mint key: ${{ runner.os }}-mint-${{ hashFiles('**/Mintfile') }} @@ -667,7 +667,7 @@ steps: ```yaml - name: Cache Bazel - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | ~/.cache/bazel @@ -681,7 +681,7 @@ steps: ```yaml - name: Cache Bazel - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | /private/var/tmp/_bazel_runner/ diff --git a/restore/README.md b/restore/README.md index a7203e9..0693646 100644 --- a/restore/README.md +++ b/restore/README.md @@ -35,9 +35,9 @@ If you are using separate jobs to create and save your cache(s) to be reused by ```yaml steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 id: cache with: path: path/to/dependencies @@ -64,7 +64,7 @@ In case of multi-module projects, where the built artifact of one project needs ```yaml steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build run: /build-parent-module.sh @@ -80,9 +80,9 @@ steps: ```yaml steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 id: cache with: path: path/to/dependencies @@ -107,9 +107,9 @@ To fail if there is no cache hit for the primary key, leave `restore-keys` empty ```yaml steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 id: cache with: path: path/to/dependencies diff --git a/save/README.md b/save/README.md index 8ce56d2..7f79da1 100644 --- a/save/README.md +++ b/save/README.md @@ -23,7 +23,7 @@ If you are using separate jobs for generating common artifacts and sharing them ```yaml steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install Dependencies run: /install.sh @@ -47,7 +47,7 @@ Let's say we have a restore step that computes a key at runtime. #### Restore a cache ```yaml -uses: actions/cache/restore@v3 +uses: actions/cache/restore@v4 id: restore-cache with: key: cache-${{ hashFiles('**/lockfiles') }} @@ -74,7 +74,7 @@ There are instances where some flaky test cases would fail the entire workflow a ```yaml steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 . . // restore if need be . diff --git a/tips-and-workarounds.md b/tips-and-workarounds.md index 125fa5f..5708986 100644 --- a/tips-and-workarounds.md +++ b/tips-and-workarounds.md @@ -12,7 +12,7 @@ A cache today is immutable and cannot be updated. But some use cases require the ```yaml - name: update cache on every commit - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: prime-numbers key: primes-${{ runner.os }}-${{ github.run_id }} # Can use time based key as well @@ -61,7 +61,7 @@ jobs: contents: read steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Cleanup run: |