Attachment engineering tshingombe data microsoft alu skill.docx added. None selected Skip to content Using Gmail with screen readers 27 of 4,479 [t5h2i0tadi/engineering-tshing-binair-archfile-] Run failed at startup: CodeQL - main (671f5fc) Inbox tshingombe Mar 19, 2024, 9:49 PM (15 hours ago) to t5h2i0tadi/engineering-tshing-binair-archfile-, Ci GitHub [t5h2i0tadi/engineering-tshing-binair-archfile-] CodeQL workflow run CodeQL: No jobs were run View workflow run — You are receiving this because you are subscribed to this thread. Manage your GitHub Actions notifications GitHub, Inc. ・88 Colin P Kelly Jr Street ・San Francisco, CA 94107 tshingombe fiston 12:53 PM (12 minutes ago) to t5h2i0tadi/engineering-tshing-binair-archfile- # This is a basic workflow to help you get started with Actions name: CI # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: [ "main" ] pull_request: branches: [ "main" ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 # Runs a single command using the runners shell - name: Run a one-line script run: echo Hello, world! # Runs a set of commands using the runners shell - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project. tshingombe fiston 12:54 PM (11 minutes ago) to t5h2i0tadi/engineering-tshing-binair-archfile- Skip to content tshingombe-engineering / engin-data-exam-tshingomb Settings Creating a new workflow file in engin-data-exam-tshingomb Breadcrumbs engin-data-exam-tshingomb /.github /workflows / in main Indent mode Indent sizeLine wrap mode Editing blank.yml file contents 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 Use Control + Shift + m to toggle the tab key moving focus. Alternatively, use esc then tab to move to the next interactive element on the page. Use Control + Space to trigger autocomplete in most situations. Help Panel navigation Marketplace Documentation / Cache Cache By actions v4.0.2 4.2k Cache artifacts like dependencies and build outputs to improve workflow execution time View full Marketplace listing Installation Copy and paste the following snippet into your .yml file. Version: v4.0.2 - name: Cache uses: actions/cache@v4.0.2 with: # A list of files, directories, and wildcard patterns to cache and restore path: # An explicit key for restoring and saving the cache key: # An ordered list of keys to use for restoring stale cache if no cache hit occurred for key. Note `cache-hit` returns false in this case. restore-keys: # optional # The chunk size used to split up large files during upload, in bytes upload-chunk-size: # optional # An optional boolean when enabled, allows windows runners to save or restore caches that can be restored or saved respectively on other platforms enableCrossOsArchive: # optional, default is false # Fail the workflow if cache entry is not found fail-on-cache-miss: # optional, default is false # Check if a cache entry exists for the given input(s) (key, restore-keys) without downloading the cache lookup-only: # optional, default is false # Run the post step to save the cache even if another step before fails save-always: # optional, default is false Code Issues Pull requests Actions Projects Security Insights tshingombe fiston 12:55 PM (10 minutes ago) to t5h2i0tadi/engineering-tshing-binair-archfile- Skip to content Marketplace Actions Cache GitHub Action Cache v4.0.2 Latest version Cache action This action allows caching dependencies and build outputs to improve workflow execution time. Two other actions are available in addition to the primary cache action: Restore action Save action Tests Documentation See "Caching dependencies to speed up workflows". What's New v4 Updated to node 20 Added a save-always flag to save the cache even if a prior step fails v3 Added support for caching in GHES 3.5+. Fixed download issue for files > 2GB during restore. Updated the minimum runner version support from node 12 -> node 16. Fixed avoiding empty cache save when no files are available for caching. Fixed tar creation error while trying to create tar with path as ~/ home folder on ubuntu-latest. Fixed zstd failing on amazon linux 2.0 runners. Fixed cache not working with github workspace directory or current directory. Fixed the download stuck problem by introducing a timeout of 1 hour for cache downloads. Fix zstd not working for windows on gnu tar in issues. Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable SEGMENT_DOWNLOAD_TIMEOUT_MINS. Default is 10 minutes. New actions are available for granular control over caches - restore and save. Support cross-os caching as an opt-in feature. See Cross OS caching for more info. Added option to fail job on cache miss. See Exit workflow on cache miss for more info. Fix zstd not being used after zstd version upgrade to 1.5.4 on hosted runners Added option to lookup cache without downloading it. Reduced segment size to 128MB and segment timeout to 10 minutes to fail fast in case the cache download is stuck. See the v2 README.md for older updates. Usage Pre-requisites Create a workflow .yml file in your repository's .github/workflows directory. An example workflow is available below. For more information, see the GitHub Help Documentation for Creating a workflow file. If you are using this inside a container, a POSIX-compliant tar needs to be included and accessible from the execution path. If you are using a self-hosted Windows runner, GNU tar and zstd are required for Cross-OS caching to work. They are also recommended to be installed in general so the performance is on par with hosted Windows runners. Inputs key - An explicit key for a cache entry. See creating a cache key. path - A list of files, directories, and wildcard patterns to cache and restore. See @actions/glob for supported patterns. restore-keys - An ordered list of prefix-matched keys to use for restoring stale cache if no cache hit occurred for key. enableCrossOsArchive - An optional boolean when enabled, allows Windows runners to save or restore caches that can be restored or saved respectively on other platforms. Default: false fail-on-cache-miss - Fail the workflow if cache entry is not found. Default: false lookup-only - If true, only checks if cache entry exists and skips download. Does not change save cache behavior. Default: false Environment Variables SEGMENT_DOWNLOAD_TIMEOUT_MINS - Segment download timeout (in minutes, default 10) to abort download of the segment if not completed in the defined number of minutes. Read more Outputs cache-hit - A boolean value to indicate an exact match was found for the key. Note cache-hit will only be set to true when a cache hit occurs for the exact key match. For a partial key match via restore-keys or a cache miss, it will be set to false. See Skipping steps based on cache-hit for info on using this output Cache scopes The cache is scoped to the key, version, and branch. The default branch cache is available to other branches. See Matching a cache key for more info. Example cache workflow Restoring and saving cache using a single action name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: ${{ runner.os }}-primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: /generate-primes.sh -d prime-numbers - name: Use Prime Numbers run: /primes.sh -d prime-numbers The cache action provides a cache-hit output which is set to true when the cache is restored using the primary key and false when the cache is restored using restore-keys or no cache is restored. Using a combination of restore and save actions name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore cached Primes id: cache-primes-restore uses: actions/cache/restore@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-primes . . //intermediate workflow steps . - name: Save Primes id: cache-primes-save uses: actions/cache/save@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ steps.cache-primes-restore.outputs.cache-primary-key }} Note You must use the cache or restore action in your workflow before you need to use the files that might be restored from the cache. If the provided key matches an existing cache, a new cache is not created and if the provided key doesn't match an existing cache, a new cache is automatically created provided the job completes successfully. Caching Strategies With the introduction of the restore and save actions, a lot of caching use cases can now be achieved. Please see the caching strategies document for understanding how you can use the actions strategically to achieve the desired goal. Implementation Examples Every programming language and framework has its own way of caching. See Examples for a list of actions/cache implementations for use with: C# - NuGet Clojure - Lein Deps D - DUB Deno Elixir - Mix Go - Modules Haskell - Cabal Haskell - Stack Java - Gradle Java - Maven Node - npm Node - Lerna Node - Yarn OCaml/Reason - esy PHP - Composer Python - pip Python - pipenv R - renv Ruby - Bundler Rust - Cargo Scala - SBT Swift, Objective-C - Carthage Swift, Objective-C - CocoaPods Swift - Swift Package Manager Swift - Mint Creating a cache key A cache key can include any of the contexts, functions, literals, and operators supported by GitHub Actions. For example, using the hashFiles function allows you to create a new cache when dependencies change. - uses: actions/cache@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} Additionally, you can use arbitrary command output in a cache key, such as a date or software version: # http://man7.org/linux/man-pages/man1/date.1.html - name: Get Date id: get-date run: | echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - uses: actions/cache@v4 with: path: path/to/dependencies key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} See Using contexts to create cache keys Cache Limits A repository can have up to 10GB of caches. Once the 10GB limit is reached, older caches will be evicted based on when the cache was last accessed. Caches that are not accessed within the last week will also be evicted. Skipping steps based on cache-hit Using the cache-hit output, subsequent steps (such as install or build) can be skipped when a cache hit occurs on the key. It is recommended to install missing/updated dependencies in case of a partial key match when the key is dependent on the hash of the package file. Example: steps: - uses: actions/checkout@v3 - uses: actions/cache@v4 id: cache with: path: path/to/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Install Dependencies if: steps.cache.outputs.cache-hit != 'true' run: /install.sh Note The id defined in actions/cache must match the id in the if statement (i.e. steps.[ID].outputs.cache-hit) Cache Version Cache version is a hash generated for a combination of compression tool used (Gzip, Zstd, etc. based on the runner OS) and the path of directories being cached. If two caches have different versions, they are identified as unique caches while matching. This, for example, means that a cache created on a windows-latest runner can't be restored on ubuntu-latest as cache Versions are different. Pro tip: The list caches API can be used to get the version of a cache. This can be helpful to troubleshoot cache miss due to version. Example The workflow will create 3 unique caches with same keys. Ubuntu and windows runners will use different compression technique and hence create two different caches. And `build-linux` will create two different caches as the `paths` are different. Known practices and workarounds There are a number of community practices/workarounds to fulfill specific requirements. You may choose to use them if they suit your use case. Note these are not necessarily the only solution or even a recommended solution. Cache segment restore timeout Update a cache Use cache across feature branches Cross OS cache Force deletion of caches overriding default cache eviction policy Windows environment variables Please note that Windows environment variables (like %LocalAppData%) will NOT be expanded by this action. Instead, prefer using ~ in your paths which will expand to the HOME directory. For example, instead of %LocalAppData%, use ~\AppData\Local. For a list of supported default environment variables, see the Learn GitHub Actions: Variables page. Contributing We would love for you to contribute to actions/cache. Pull requests are welcome! Please see the CONTRIBUTING.md for more information. License The scripts and documentation in this project are released under the MIT License Verified creator GitHub has verified that this action was created by actions. Learn more about verified Actions. Stars Contributors @vsvipul @kotewar @joshmgross @dhadka @lvpx @Phantsure @aiqiaoy @bishal-pdMSFT @takost @bethanyj28 @t-dedah @magnetikonline Categories Dependency management Utilities Links actions/cache Open issues 92 Pull requests 41 Report abuse Footer © 2024 GitHub, Inc. Footer navigation Terms Privacy Security Status Docs Contact tshingombe fiston 12:58 PM (7 minutes ago) to t5h2i0tadi/engineering-tshing-binair-archfile- Skip to content actions / cache Insights Owner avatar cache Public actions/cache Use this GitHub action with your project Add this Action to an existing workflow or create a new one t Add file Folders and files Name Last commit message Last commit date Latest commit bethanyj28bethanyj28 Merge pull request #1327 from cdce8p/fix-fail-on-cache-miss 0c45773 · History .devcontainer GA for granular cache (#1035) .github add release action .licenses/npm licensed cache .vscode Initial commit __tests__ Add test case for process exit dist Fix fail-on-cache-miss not working restore Update "only-" actions to node20 save Update "only-" actions to node20 src Fix fail-on-cache-miss not working .eslintrc.json Update eslint and prettier .gitattributes Fix line ending for windows test .gitignore test e2e during workflow (#185) .licensed.yml Add Licensed to attribute third party licenses .prettierrc.json Initial commit CODE_OF_CONDUCT.md Fix repo name in contact email (#41) CONTRIBUTING.md Update contributing.md LICENSE Initial commit README.md Update examples RELEASES.md Bump version action.yml Merge branch 'main' into main caching-strategies.md Fixing paths for OSes (#1101) examples.md Clarify that macos-latest image has bazelisk jest.config.js Resolve dependabot alerts package-lock.json Bump version package.json Bump version tips-and-workarounds.md Merge branch 'main' into pdotl-patch-1 tsconfig.json Initial commit Repository files navigation Security Cache action This action allows caching dependencies and build outputs to improve workflow execution time. Two other actions are available in addition to the primary cache action: Restore action Save action Tests Documentation See "Caching dependencies to speed up workflows". What's New v4 Updated to node 20 Added a save-always flag to save the cache even if a prior step fails v3 Added support for caching in GHES 3.5+. Fixed download issue for files > 2GB during restore. Updated the minimum runner version support from node 12 -> node 16. Fixed avoiding empty cache save when no files are available for caching. Fixed tar creation error while trying to create tar with path as ~/ home folder on ubuntu-latest. Fixed zstd failing on amazon linux 2.0 runners. Fixed cache not working with github workspace directory or current directory. Fixed the download stuck problem by introducing a timeout of 1 hour for cache downloads. Fix zstd not working for windows on gnu tar in issues. Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable SEGMENT_DOWNLOAD_TIMEOUT_MINS. Default is 10 minutes. New actions are available for granular control over caches - restore and save. Support cross-os caching as an opt-in feature. See Cross OS caching for more info. Added option to fail job on cache miss. See Exit workflow on cache miss for more info. Fix zstd not being used after zstd version upgrade to 1.5.4 on hosted runners Added option to lookup cache without downloading it. Reduced segment size to 128MB and segment timeout to 10 minutes to fail fast in case the cache download is stuck. See the v2 README.md for older updates. Usage Pre-requisites Create a workflow .yml file in your repository's .github/workflows directory. An example workflow is available below. For more information, see the GitHub Help Documentation for Creating a workflow file. If you are using this inside a container, a POSIX-compliant tar needs to be included and accessible from the execution path. If you are using a self-hosted Windows runner, GNU tar and zstd are required for Cross-OS caching to work. They are also recommended to be installed in general so the performance is on par with hosted Windows runners. Inputs key - An explicit key for a cache entry. See creating a cache key. path - A list of files, directories, and wildcard patterns to cache and restore. See @actions/glob for supported patterns. restore-keys - An ordered list of prefix-matched keys to use for restoring stale cache if no cache hit occurred for key. enableCrossOsArchive - An optional boolean when enabled, allows Windows runners to save or restore caches that can be restored or saved respectively on other platforms. Default: false fail-on-cache-miss - Fail the workflow if cache entry is not found. Default: false lookup-only - If true, only checks if cache entry exists and skips download. Does not change save cache behavior. Default: false Environment Variables SEGMENT_DOWNLOAD_TIMEOUT_MINS - Segment download timeout (in minutes, default 10) to abort download of the segment if not completed in the defined number of minutes. Read more Outputs cache-hit - A boolean value to indicate an exact match was found for the key. Note cache-hit will only be set to true when a cache hit occurs for the exact key match. For a partial key match via restore-keys or a cache miss, it will be set to false. See Skipping steps based on cache-hit for info on using this output Cache scopes The cache is scoped to the key, version, and branch. The default branch cache is available to other branches. See Matching a cache key for more info. Example cache workflow Restoring and saving cache using a single action name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: ${{ runner.os }}-primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: /generate-primes.sh -d prime-numbers - name: Use Prime Numbers run: /primes.sh -d prime-numbers The cache action provides a cache-hit output which is set to true when the cache is restored using the primary key and false when the cache is restored using restore-keys or no cache is restored. Using a combination of restore and save actions name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore cached Primes id: cache-primes-restore uses: actions/cache/restore@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-primes . . //intermediate workflow steps . - name: Save Primes id: cache-primes-save uses: actions/cache/save@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ steps.cache-primes-restore.outputs.cache-primary-key }} Note You must use the cache or restore action in your workflow before you need to use the files that might be restored from the cache. If the provided key matches an existing cache, a new cache is not created and if the provided key doesn't match an existing cache, a new cache is automatically created provided the job completes successfully. Caching Strategies With the introduction of the restore and save actions, a lot of caching use cases can now be achieved. Please see the caching strategies document for understanding how you can use the actions strategically to achieve the desired goal. Implementation Examples Every programming language and framework has its own way of caching. See Examples for a list of actions/cache implementations for use with: C# - NuGet Clojure - Lein Deps D - DUB Deno Elixir - Mix Go - Modules Haskell - Cabal Haskell - Stack Java - Gradle Java - Maven Node - npm Node - Lerna Node - Yarn OCaml/Reason - esy PHP - Composer Python - pip Python - pipenv R - renv Ruby - Bundler Rust - Cargo Scala - SBT Swift, Objective-C - Carthage Swift, Objective-C - CocoaPods Swift - Swift Package Manager Swift - Mint Creating a cache key A cache key can include any of the contexts, functions, literals, and operators supported by GitHub Actions. For example, using the hashFiles function allows you to create a new cache when dependencies change. - uses: actions/cache@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} Additionally, you can use arbitrary command output in a cache key, such as a date or software version: # http://man7.org/linux/man-pages/man1/date.1.html - name: Get Date id: get-date run: | echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - uses: actions/cache@v4 with: path: path/to/dependencies key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} See Using contexts to create cache keys Cache Limits A repository can have up to 10GB of caches. Once the 10GB limit is reached, older caches will be evicted based on when the cache was last accessed. Caches that are not accessed within the last week will also be evicted. Skipping steps based on cache-hit Using the cache-hit output, subsequent steps (such as install or build) can be skipped when a cache hit occurs on the key. It is recommended to install missing/updated dependencies in case of a partial key match when the key is dependent on the hash of the package file. Example: steps: - uses: actions/checkout@v3 - uses: actions/cache@v4 id: cache with: path: path/to/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Install Dependencies if: steps.cache.outputs.cache-hit != 'true' run: /install.sh Note The id defined in actions/cache must match the id in the if statement (i.e. steps.[ID].outputs.cache-hit) Cache Version Cache version is a hash generated for a combination of compression tool used (Gzip, Zstd, etc. based on the runner OS) and the path of directories being cached. If two caches have different versions, they are identified as unique caches while matching. This, for example, means that a cache created on a windows-latest runner can't be restored on ubuntu-latest as cache Versions are different. Pro tip: The list caches API can be used to get the version of a cache. This can be helpful to troubleshoot cache miss due to version. Example The workflow will create 3 unique caches with same keys. Ubuntu and windows runners will use different compression technique and hence create two different caches. And `build-linux` will create two different caches as the `paths` are different. Known practices and workarounds There are a number of community practices/workarounds to fulfill specific requirements. You may choose to use them if they suit your use case. Note these are not necessarily the only solution or even a recommended solution. Cache segment restore timeout Update a cache Use cache across feature branches Cross OS cache Force deletion of caches overriding default cache eviction policy Windows environment variables Please note that Windows environment variables (like %LocalAppData%) will NOT be expanded by this action. Instead, prefer using ~ in your paths which will expand to the HOME directory. For example, instead of %LocalAppData%, use ~\AppData\Local. For a list of supported default environment variables, see the Learn GitHub Actions: Variables page. Contributing We would love for you to contribute to actions/cache. Pull requests are welcome! Please see the CONTRIBUTING.md for more information. License The scripts and documentation in this project are released under the MIT License About Cache dependencies and build outputs in GitHub Actions Resources Readme License MIT license Code of conduct Code of conduct Security policy Security policy Activity Custom properties Stars 4.2k stars Watchers 85 watching Forks 1.1k forks Report repository Releases 51 v4.0.2 Latest Mar 19, 2024 + 50 releases Packages No packages published Used by 905k @remomax @linhh-phv @thibs12 @NeptuneX-Aggregator @tnikFi @skyrych @VincentKobz @kanandev2024 + 905,172 Contributors 131 @vsvipul @kotewar @joshmgross @dhadka @lvpx @Phantsure @aiqiaoy @bishal-pdMSFT @takost @bethanyj28 @t-dedah @magnetikonline @ashwinsangem @konradpabjan + 117 contributors Deployments 2 releaseNewActionVersion March 19, 2024 17:55 Languages JavaScript 0.9% Footer © 2024 GitHub, Inc. Footer navigation Terms Privacy Security Status Docs Contact actions/cache: Cache dependencies and build outputs in GitHub Actions Code Issues 92 Pull requests 41 Discussions Actions Security README Code of conduct MIT license TypeScript 97.9% Shell 1.2% On Wed, Mar 20, 2024 at 12:55 PM tshingombe fiston wrote: Skip to content Marketplace Actions Cache GitHub Action Cache v4.0.2 Latest version Cache action This action allows caching dependencies and build outputs to improve workflow execution time. Two other actions are available in addition to the primary cache action: Restore action Save action Tests Documentation See "Caching dependencies to speed up workflows". What's New v4 Updated to node 20 Added a save-always flag to save the cache even if a prior step fails v3 Added support for caching in GHES 3.5+. Fixed download issue for files > 2GB during restore. Updated the minimum runner version support from node 12 -> node 16. Fixed avoiding empty cache save when no files are available for caching. Fixed tar creation error while trying to create tar with path as ~/ home folder on ubuntu-latest. Fixed zstd failing on amazon linux 2.0 runners. Fixed cache not working with github workspace directory or current directory. Fixed the download stuck problem by introducing a timeout of 1 hour for cache downloads. Fix zstd not working for windows on gnu tar in issues. Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable SEGMENT_DOWNLOAD_TIMEOUT_MINS. Default is 10 minutes. New actions are available for granular control over caches - restore and save. Support cross-os caching as an opt-in feature. See Cross OS caching for more info. Added option to fail job on cache miss. See Exit workflow on cache miss for more info. Fix zstd not being used after zstd version upgrade to 1.5.4 on hosted runners Added option to lookup cache without downloading it. Reduced segment size to 128MB and segment timeout to 10 minutes to fail fast in case the cache download is stuck. See the v2 README.md for older updates. Usage Pre-requisites Create a workflow .yml file in your repository's .github/workflows directory. An example workflow is available below. For more information, see the GitHub Help Documentation for Creating a workflow file. If you are using this inside a container, a POSIX-compliant tar needs to be included and accessible from the execution path. If you are using a self-hosted Windows runner, GNU tar and zstd are required for Cross-OS caching to work. They are also recommended to be installed in general so the performance is on par with hosted Windows runners. Inputs key - An explicit key for a cache entry. See creating a cache key. path - A list of files, directories, and wildcard patterns to cache and restore. See @actions/glob for supported patterns. restore-keys - An ordered list of prefix-matched keys to use for restoring stale cache if no cache hit occurred for key. enableCrossOsArchive - An optional boolean when enabled, allows Windows runners to save or restore caches that can be restored or saved respectively on other platforms. Default: false fail-on-cache-miss - Fail the workflow if cache entry is not found. Default: false lookup-only - If true, only checks if cache entry exists and skips download. Does not change save cache behavior. Default: false Environment Variables SEGMENT_DOWNLOAD_TIMEOUT_MINS - Segment download timeout (in minutes, default 10) to abort download of the segment if not completed in the defined number of minutes. Read more Outputs cache-hit - A boolean value to indicate an exact match was found for the key. Note cache-hit will only be set to true when a cache hit occurs for the exact key match. For a partial key match via restore-keys or a cache miss, it will be set to false. See Skipping steps based on cache-hit for info on using this output Cache scopes The cache is scoped to the key, version, and branch. The default branch cache is available to other branches. See Matching a cache key for more info. Example cache workflow Restoring and saving cache using a single action name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: ${{ runner.os }}-primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: /generate-primes.sh -d prime-numbers - name: Use Prime Numbers run: /primes.sh -d prime-numbers The cache action provides a cache-hit output which is set to true when the cache is restored using the primary key and false when the cache is restored using restore-keys or no cache is restored. Using a combination of restore and save actions name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore cached Primes id: cache-primes-restore uses: actions/cache/restore@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-primes . . //intermediate workflow steps . - name: Save Primes id: cache-primes-save uses: actions/cache/save@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ steps.cache-primes-restore.outputs.cache-primary-key }} Note You must use the cache or restore action in your workflow before you need to use the files that might be restored from the cache. If the provided key matches an existing cache, a new cache is not created and if the provided key doesn't match an existing cache, a new cache is automatically created provided the job completes successfully. Caching Strategies With the introduction of the restore and save actions, a lot of caching use cases can now be achieved. Please see the caching strategies document for understanding how you can use the actions strategically to achieve the desired goal. Implementation Examples Every programming language and framework has its own way of caching. See Examples for a list of actions/cache implementations for use with: C# - NuGet Clojure - Lein Deps D - DUB Deno Elixir - Mix Go - Modules Haskell - Cabal Haskell - Stack Java - Gradle Java - Maven Node - npm Node - Lerna Node - Yarn OCaml/Reason - esy PHP - Composer Python - pip Python - pipenv R - renv Ruby - Bundler Rust - Cargo Scala - SBT Swift, Objective-C - Carthage Swift, Objective-C - CocoaPods Swift - Swift Package Manager Swift - Mint Creating a cache key A cache key can include any of the contexts, functions, literals, and operators supported by GitHub Actions. For example, using the hashFiles function allows you to create a new cache when dependencies change. - uses: actions/cache@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} Additionally, you can use arbitrary command output in a cache key, such as a date or software version: # http://man7.org/linux/man-pages/man1/date.1.html - name: Get Date id: get-date run: | echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - uses: actions/cache@v4 with: path: path/to/dependencies key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} See Using contexts to create cache keys Cache Limits A repository can have up to 10GB of caches. Once the 10GB limit is reached, older caches will be evicted based on when the cache was last accessed. Caches that are not accessed within the last week will also be evicted. Skipping steps based on cache-hit Using the cache-hit output, subsequent steps (such as install or build) can be skipped when a cache hit occurs on the key. It is recommended to install missing/updated dependencies in case of a partial key match when the key is dependent on the hash of the package file. Example: steps: - uses: actions/checkout@v3 - uses: actions/cache@v4 id: cache with: path: path/to/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Install Dependencies if: steps.cache.outputs.cache-hit != 'true' run: /install.sh Note The id defined in actions/cache must match the id in the if statement (i.e. steps.[ID].outputs.cache-hit) Cache Version Cache version is a hash generated for a combination of compression tool used (Gzip, Zstd, etc. based on the runner OS) and the path of directories being cached. If two caches have different versions, they are identified as unique caches while matching. This, for example, means that a cache created on a windows-latest runner can't be restored on ubuntu-latest as cache Versions are different. Pro tip: The list caches API can be used to get the version of a cache. This can be helpful to troubleshoot cache miss due to version. Example The workflow will create 3 unique caches with same keys. Ubuntu and windows runners will use different compression technique and hence create two different caches. And `build-linux` will create two different caches as the `paths` are different. Known practices and workarounds There are a number of community practices/workarounds to fulfill specific requirements. You may choose to use them if they suit your use case. Note these are not necessarily the only solution or even a recommended solution. Cache segment restore timeout Update a cache Use cache across feature branches Cross OS cache Force deletion of caches overriding default cache eviction policy Windows environment variables Please note that Windows environment variables (like %LocalAppData%) will NOT be expanded by this action. Instead, prefer using ~ in your paths which will expand to the HOME directory. For example, instead of %LocalAppData%, use ~\AppData\Local. For a list of supported default environment variables, see the Learn GitHub Actions: Variables page. Contributing We would love for you to contribute to actions/cache. Pull requests are welcome! Please see the CONTRIBUTING.md for more information. License The scripts and documentation in this project are released under the MIT License Verified creator GitHub has verified that this action was created by actions. Learn more about verified Actions. Stars Contributors @vsvipul @kotewar @joshmgross @dhadka @lvpx @Phantsure @aiqiaoy @bishal-pdMSFT @takost @bethanyj28 @t-dedah @magnetikonline Categories Dependency management Utilities Links actions/cache Open issues 92 Pull requests 41 Report abuse Footer © 2024 GitHub, Inc. Footer navigation Terms Privacy Security Status Docs Contact On Wed, Mar 20, 2024 at 12:54 PM tshingombe fiston wrote: Skip to content tshingombe-engineering / engin-data-exam-tshingomb Settings Creating a new workflow file in engin-data-exam-tshingomb Breadcrumbs engin-data-exam-tshingomb /.github /workflows / in main Indent mode Indent sizeLine wrap mode Editing blank.yml file contents 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 # This is a basic workflow to help you get started with Actions name: CI # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: [ "main" ] pull_request: branches: [ "main" ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 # Runs a single command using the runners shell - name: Run a one-line script run: echo Hello, world! # Runs a set of commands using the runners shell - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project. Use Control + Shift + m to toggle the tab key moving focus. Alternatively, use esc then tab to move to the next interactive element on the page. Use Control + Space to trigger autocomplete in most situations. Help Panel navigation Marketplace Documentation / Cache Cache By actions v4.0.2 4.2k Cache artifacts like dependencies and build outputs to improve workflow execution time View full Marketplace listing Installation Copy and paste the following snippet into your .yml file. Version: v4.0.2 - name: Cache uses: actions/cache@v4.0.2 with: # A list of files, directories, and wildcard patterns to cache and restore path: # An explicit key for restoring and saving the cache key: # An ordered list of keys to use for restoring stale cache if no cache hit occurred for key. Note `cache-hit` returns false in this case. restore-keys: # optional # The chunk size used to split up large files during upload, in bytes upload-chunk-size: # optional # An optional boolean when enabled, allows windows runners to save or restore caches that can be restored or saved respectively on other platforms enableCrossOsArchive: # optional, default is false # Fail the workflow if cache entry is not found fail-on-cache-miss: # optional, default is false # Check if a cache entry exists for the given input(s) (key, restore-keys) without downloading the cache lookup-only: # optional, default is false # Run the post step to save the cache even if another step before fails save-always: # optional, default is false Code Issues Pull requests Actions Projects Security Insights On Wed, Mar 20, 2024 at 12:53 PM tshingombe fiston wrote: # This is a basic workflow to help you get started with Actions name: CI # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: [ "main" ] pull_request: branches: [ "main" ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 # Runs a single command using the runners shell - name: Run a one-line script run: echo Hello, world! # Runs a set of commands using the runners shell - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project. On Tue, Mar 19, 2024 at 9:49 PM tshingombe wrote: GitHub [t5h2i0tadi/engineering-tshing-binair-archfile-] CodeQL workflow run CodeQL: No jobs were run View workflow run — You are receiving this because you are subscribed to this thread. Manage your GitHub Actions notifications GitHub, Inc. ・88 Colin P Kelly Jr Street ・San Francisco, CA 94107 ... [Message clipped] View entire message tshingombe fiston 12:59 PM (6 minutes ago) to t5h2i0tadi/engineering-tshing-binair-archfile- # Cache action This action allows caching dependencies and build outputs to improve workflow execution time. >Two other actions are available in addition to the primary `cache` action: >* [Restore action](./restore/README.md) >* [Save action](./save/README.md) [![Tests](https://github.com/actions/cache/actions/workflows/workflow.yml/badge.svg)](https://github.com/actions/cache/actions/workflows/workflow.yml) ## Documentation See ["Caching dependencies to speed up workflows"](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows). ## What's New ### v4 * Updated to node 20 * Added a `save-always` flag to save the cache even if a prior step fails ### v3 * Added support for caching in GHES 3.5+. * Fixed download issue for files > 2GB during restore. * Updated the minimum runner version support from node 12 -> node 16. * Fixed avoiding empty cache save when no files are available for caching. * Fixed tar creation error while trying to create tar with path as `~/` home folder on `ubuntu-latest`. * Fixed zstd failing on amazon linux 2.0 runners. * Fixed cache not working with github workspace directory or current directory. * Fixed the download stuck problem by introducing a timeout of 1 hour for cache downloads. * Fix zstd not working for windows on gnu tar in issues. * Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable `SEGMENT_DOWNLOAD_TIMEOUT_MINS`. Default is 10 minutes. * New actions are available for granular control over caches - [restore](restore/action.yml) and [save](save/action.yml). * Support cross-os caching as an opt-in feature. See [Cross OS caching](./tips-and-workarounds.md#cross-os-cache) for more info. * Added option to fail job on cache miss. See [Exit workflow on cache miss](./restore/README.md#exit-workflow-on-cache-miss) for more info. * Fix zstd not being used after zstd version upgrade to 1.5.4 on hosted runners * Added option to lookup cache without downloading it. * Reduced segment size to 128MB and segment timeout to 10 minutes to fail fast in case the cache download is stuck. See the [v2 README.md](https://github.com/actions/cache/blob/v2/README.md) for older updates. ## Usage ### Pre-requisites Create a workflow `.yml` file in your repository's `.github/workflows` directory. An [example workflow](#example-cache-workflow) is available below. For more information, see the GitHub Help Documentation for [Creating a workflow file](https://help.github.com/en/articles/configuring-a-workflow#creating-a-workflow-file). If you are using this inside a container, a POSIX-compliant `tar` needs to be included and accessible from the execution path. If you are using a `self-hosted` Windows runner, `GNU tar` and `zstd` are required for [Cross-OS caching](https://github.com/actions/cache/blob/main/tips-and-workarounds.md#cross-os-cache) to work. They are also recommended to be installed in general so the performance is on par with `hosted` Windows runners. ### Inputs * `key` - An explicit key for a cache entry. See [creating a cache key](#creating-a-cache-key). * `path` - A list of files, directories, and wildcard patterns to cache and restore. See [`@actions/glob`](https://github.com/actions/toolkit/tree/main/packages/glob) for supported patterns. * `restore-keys` - An ordered list of prefix-matched keys to use for restoring stale cache if no cache hit occurred for key. * `enableCrossOsArchive` - An optional boolean when enabled, allows Windows runners to save or restore caches that can be restored or saved respectively on other platforms. Default: `false` * `fail-on-cache-miss` - Fail the workflow if cache entry is not found. Default: `false` * `lookup-only` - If true, only checks if cache entry exists and skips download. Does not change save cache behavior. Default: `false` #### Environment Variables * `SEGMENT_DOWNLOAD_TIMEOUT_MINS` - Segment download timeout (in minutes, default `10`) to abort download of the segment if not completed in the defined number of minutes. [Read more](https://github.com/actions/cache/blob/main/tips-and-workarounds.md#cache-segment-restore-timeout) ### Outputs * `cache-hit` - A boolean value to indicate an exact match was found for the key. > **Note** `cache-hit` will only be set to `true` when a cache hit occurs for the exact `key` match. For a partial key match via `restore-keys` or a cache miss, it will be set to `false`. See [Skipping steps based on cache-hit](#skipping-steps-based-on-cache-hit) for info on using this output ### Cache scopes The cache is scoped to the key, [version](#cache-version), and branch. The default branch cache is available to other branches. See [Matching a cache key](https://help.github.com/en/actions/configuring-and-managing-workflows/caching-dependencies-to-speed-up-workflows#matching-a-cache-key) for more info. ### Example cache workflow #### Restoring and saving cache using a single action ```yaml name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: ${{ runner.os }}-primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: /generate-primes.sh -d prime-numbers - name: Use Prime Numbers run: /primes.sh -d prime-numbers ``` The `cache` action provides a `cache-hit` output which is set to `true` when the cache is restored using the primary `key` and `false` when the cache is restored using `restore-keys` or no cache is restored. #### Using a combination of restore and save actions ```yaml name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore cached Primes id: cache-primes-restore uses: actions/cache/restore@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-primes . . //intermediate workflow steps . - name: Save Primes id: cache-primes-save uses: actions/cache/save@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ steps.cache-primes-restore.outputs.cache-primary-key }} ``` > **Note** > You must use the `cache` or `restore` action in your workflow before you need to use the files that might be restored from the cache. If the provided `key` matches an existing cache, a new cache is not created and if the provided `key` doesn't match an existing cache, a new cache is automatically created provided the job completes successfully. ## Caching Strategies With the introduction of the `restore` and `save` actions, a lot of caching use cases can now be achieved. Please see the [caching strategies](./caching-strategies.md) document for understanding how you can use the actions strategically to achieve the desired goal. ## Implementation Examples Every programming language and framework has its own way of caching. See [Examples](examples.md) for a list of `actions/cache` implementations for use with: * [C# - NuGet](./examples.md#c---nuget) * [Clojure - Lein Deps](./examples.md#clojure---lein-deps) * [D - DUB](./examples.md#d---dub) * [Deno](./examples.md#deno) * [Elixir - Mix](./examples.md#elixir---mix) * [Go - Modules](./examples.md#go---modules) * [Haskell - Cabal](./examples.md#haskell---cabal) * [Haskell - Stack](./examples.md#haskell---stack) * [Java - Gradle](./examples.md#java---gradle) * [Java - Maven](./examples.md#java---maven) * [Node - npm](./examples.md#node---npm) * [Node - Lerna](./examples.md#node---lerna) * [Node - Yarn](./examples.md#node---yarn) * [OCaml/Reason - esy](./examples.md#ocamlreason---esy) * [PHP - Composer](./examples.md#php---composer) * [Python - pip](./examples.md#python---pip) * [Python - pipenv](./examples.md#python---pipenv) * [R - renv](./examples.md#r---renv) * [Ruby - Bundler](./examples.md#ruby---bundler) * [Rust - Cargo](./examples.md#rust---cargo) * [Scala - SBT](./examples.md#scala---sbt) * [Swift, Objective-C - Carthage](./examples.md#swift-objective-c---carthage) * [Swift, Objective-C - CocoaPods](./examples.md#swift-objective-c---cocoapods) * [Swift - Swift Package Manager](./examples.md#swift---swift-package-manager) * [Swift - Mint](./examples.md#swift---mint) ## Creating a cache key A cache key can include any of the contexts, functions, literals, and operators supported by GitHub Actions. For example, using the [`hashFiles`](https://docs.github.com/en/actions/learn-github-actions/expressions#hashfiles) function allows you to create a new cache when dependencies change. ```yaml - uses: actions/cache@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} ``` Additionally, you can use arbitrary command output in a cache key, such as a date or software version: ```yaml # http://man7.org/linux/man-pages/man1/date.1.html - name: Get Date id: get-date run: | echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - uses: actions/cache@v4 with: path: path/to/dependencies key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} ``` See [Using contexts to create cache keys](https://help.github.com/en/actions/configuring-and-managing-workflows/caching-dependencies-to-speed-up-workflows#using-contexts-to-create-cache-keys) ## Cache Limits A repository can have up to 10GB of caches. Once the 10GB limit is reached, older caches will be evicted based on when the cache was last accessed. Caches that are not accessed within the last week will also be evicted. ## Skipping steps based on cache-hit Using the `cache-hit` output, subsequent steps (such as install or build) can be skipped when a cache hit occurs on the key. It is recommended to install missing/updated dependencies in case of a partial key match when the key is dependent on the `hash` of the package file. Example: ```yaml steps: - uses: actions/checkout@v3 - uses: actions/cache@v4 id: cache with: path: path/to/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Install Dependencies if: steps.cache.outputs.cache-hit != 'true' run: /install.sh ``` > **Note** The `id` defined in `actions/cache` must match the `id` in the `if` statement (i.e. `steps.[ID].outputs.cache-hit`) ## Cache Version Cache version is a hash [generated](https://github.com/actions/toolkit/blob/500d0b42fee2552ae9eeb5933091fe2fbf14e72d/packages/cache/src/internal/cacheHttpClient.ts#L73-L90) for a combination of compression tool used (Gzip, Zstd, etc. based on the runner OS) and the `path` of directories being cached. If two caches have different versions, they are identified as unique caches while matching. This, for example, means that a cache created on a `windows-latest` runner can't be restored on `ubuntu-latest` as cache `Version`s are different. > Pro tip: The [list caches](https://docs.github.com/en/rest/actions/cache#list-github-actions-caches-for-a-repository) API can be used to get the version of a cache. This can be helpful to troubleshoot cache miss due to version.
Example The workflow will create 3 unique caches with same keys. Ubuntu and windows runners will use different compression technique and hence create two different caches. And `build-linux` will create two different caches as the `paths` are different. ```yaml jobs: build-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: ./generate-primes.sh -d prime-numbers - name: Cache Numbers id: cache-numbers uses: actions/cache@v4 with: path: numbers key: primes - name: Generate Numbers if: steps.cache-numbers.outputs.cache-hit != 'true' run: ./generate-primes.sh -d numbers build-windows: runs-on: windows-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: ./generate-primes -d prime-numbers ```
## Known practices and workarounds There are a number of community practices/workarounds to fulfill specific requirements. You may choose to use them if they suit your use case. Note these are not necessarily the only solution or even a recommended solution. * [Cache segment restore timeout](./tips-and-workarounds.md#cache-segment-restore-timeout) * [Update a cache](./tips-and-workarounds.md#update-a-cache) * [Use cache across feature branches](./tips-and-workarounds.md#use-cache-across-feature-branches) * [Cross OS cache](./tips-and-workarounds.md#cross-os-cache) * [Force deletion of caches overriding default cache eviction policy](./tips-and-workarounds.md#force-deletion-of-caches-overriding-default-cache-eviction-policy) ### Windows environment variables Please note that Windows environment variables (like `%LocalAppData%`) will NOT be expanded by this action. Instead, prefer using `~` in your paths which will expand to the HOME directory. For example, instead of `%LocalAppData%`, use `~\AppData\Local`. For a list of supported default environment variables, see the [Learn GitHub Actions: Variables](https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables) page. ## Contributing We would love for you to contribute to `actions/cache`. Pull requests are welcome! Please see the [CONTRIBUTING.md](CONTRIBUTING.md) for more information. ## License The scripts and documentation in this project are released under the [MIT License](LICENSE) On Wed, Mar 20, 2024 at 12:58 PM tshingombe fiston wrote: Skip to content actions / cache Insights Owner avatar cache Public actions/cache Use this GitHub action with your project Add this Action to an existing workflow or create a new one t Add file Folders and files Name Last commit message Last commit date Latest commit bethanyj28bethanyj28 Merge pull request #1327 from cdce8p/fix-fail-on-cache-miss 0c45773 · History .devcontainer GA for granular cache (#1035) .github add release action .licenses/npm licensed cache .vscode Initial commit __tests__ Add test case for process exit dist Fix fail-on-cache-miss not working restore Update "only-" actions to node20 save Update "only-" actions to node20 src Fix fail-on-cache-miss not working .eslintrc.json Update eslint and prettier .gitattributes Fix line ending for windows test .gitignore test e2e during workflow (#185) .licensed.yml Add Licensed to attribute third party licenses .prettierrc.json Initial commit CODE_OF_CONDUCT.md Fix repo name in contact email (#41) CONTRIBUTING.md Update contributing.md LICENSE Initial commit README.md Update examples RELEASES.md Bump version action.yml Merge branch 'main' into main caching-strategies.md Fixing paths for OSes (#1101) examples.md Clarify that macos-latest image has bazelisk jest.config.js Resolve dependabot alerts package-lock.json Bump version package.json Bump version tips-and-workarounds.md Merge branch 'main' into pdotl-patch-1 tsconfig.json Initial commit Repository files navigation Security Cache action This action allows caching dependencies and build outputs to improve workflow execution time. Two other actions are available in addition to the primary cache action: Restore action Save action Tests Documentation See "Caching dependencies to speed up workflows". What's New v4 Updated to node 20 Added a save-always flag to save the cache even if a prior step fails v3 Added support for caching in GHES 3.5+. Fixed download issue for files > 2GB during restore. Updated the minimum runner version support from node 12 -> node 16. Fixed avoiding empty cache save when no files are available for caching. Fixed tar creation error while trying to create tar with path as ~/ home folder on ubuntu-latest. Fixed zstd failing on amazon linux 2.0 runners. Fixed cache not working with github workspace directory or current directory. Fixed the download stuck problem by introducing a timeout of 1 hour for cache downloads. Fix zstd not working for windows on gnu tar in issues. Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable SEGMENT_DOWNLOAD_TIMEOUT_MINS. Default is 10 minutes. New actions are available for granular control over caches - restore and save. Support cross-os caching as an opt-in feature. See Cross OS caching for more info. Added option to fail job on cache miss. See Exit workflow on cache miss for more info. Fix zstd not being used after zstd version upgrade to 1.5.4 on hosted runners Added option to lookup cache without downloading it. Reduced segment size to 128MB and segment timeout to 10 minutes to fail fast in case the cache download is stuck. See the v2 README.md for older updates. Usage Pre-requisites Create a workflow .yml file in your repository's .github/workflows directory. An example workflow is available below. For more information, see the GitHub Help Documentation for Creating a workflow file. If you are using this inside a container, a POSIX-compliant tar needs to be included and accessible from the execution path. If you are using a self-hosted Windows runner, GNU tar and zstd are required for Cross-OS caching to work. They are also recommended to be installed in general so the performance is on par with hosted Windows runners. Inputs key - An explicit key for a cache entry. See creating a cache key. path - A list of files, directories, and wildcard patterns to cache and restore. See @actions/glob for supported patterns. restore-keys - An ordered list of prefix-matched keys to use for restoring stale cache if no cache hit occurred for key. enableCrossOsArchive - An optional boolean when enabled, allows Windows runners to save or restore caches that can be restored or saved respectively on other platforms. Default: false fail-on-cache-miss - Fail the workflow if cache entry is not found. Default: false lookup-only - If true, only checks if cache entry exists and skips download. Does not change save cache behavior. Default: false Environment Variables SEGMENT_DOWNLOAD_TIMEOUT_MINS - Segment download timeout (in minutes, default 10) to abort download of the segment if not completed in the defined number of minutes. Read more Outputs cache-hit - A boolean value to indicate an exact match was found for the key. Note cache-hit will only be set to true when a cache hit occurs for the exact key match. For a partial key match via restore-keys or a cache miss, it will be set to false. See Skipping steps based on cache-hit for info on using this output Cache scopes The cache is scoped to the key, version, and branch. The default branch cache is available to other branches. See Matching a cache key for more info. Example cache workflow Restoring and saving cache using a single action name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: ${{ runner.os }}-primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: /generate-primes.sh -d prime-numbers - name: Use Prime Numbers run: /primes.sh -d prime-numbers The cache action provides a cache-hit output which is set to true when the cache is restored using the primary key and false when the cache is restored using restore-keys or no cache is restored. Using a combination of restore and save actions name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore cached Primes id: cache-primes-restore uses: actions/cache/restore@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-primes . . //intermediate workflow steps . - name: Save Primes id: cache-primes-save uses: actions/cache/save@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ steps.cache-primes-restore.outputs.cache-primary-key }} Note You must use the cache or restore action in your workflow before you need to use the files that might be restored from the cache. If the provided key matches an existing cache, a new cache is not created and if the provided key doesn't match an existing cache, a new cache is automatically created provided the job completes successfully. Caching Strategies With the introduction of the restore and save actions, a lot of caching use cases can now be achieved. Please see the caching strategies document for understanding how you can use the actions strategically to achieve the desired goal. Implementation Examples Every programming language and framework has its own way of caching. See Examples for a list of actions/cache implementations for use with: C# - NuGet Clojure - Lein Deps D - DUB Deno Elixir - Mix Go - Modules Haskell - Cabal Haskell - Stack Java - Gradle Java - Maven Node - npm Node - Lerna Node - Yarn OCaml/Reason - esy PHP - Composer Python - pip Python - pipenv R - renv Ruby - Bundler Rust - Cargo Scala - SBT Swift, Objective-C - Carthage Swift, Objective-C - CocoaPods Swift - Swift Package Manager Swift - Mint Creating a cache key A cache key can include any of the contexts, functions, literals, and operators supported by GitHub Actions. For example, using the hashFiles function allows you to create a new cache when dependencies change. - uses: actions/cache@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} Additionally, you can use arbitrary command output in a cache key, such as a date or software version: # http://man7.org/linux/man-pages/man1/date.1.html - name: Get Date id: get-date run: | echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - uses: actions/cache@v4 with: path: path/to/dependencies key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} See Using contexts to create cache keys Cache Limits A repository can have up to 10GB of caches. Once the 10GB limit is reached, older caches will be evicted based on when the cache was last accessed. Caches that are not accessed within the last week will also be evicted. Skipping steps based on cache-hit Using the cache-hit output, subsequent steps (such as install or build) can be skipped when a cache hit occurs on the key. It is recommended to install missing/updated dependencies in case of a partial key match when the key is dependent on the hash of the package file. Example: steps: - uses: actions/checkout@v3 - uses: actions/cache@v4 id: cache with: path: path/to/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Install Dependencies if: steps.cache.outputs.cache-hit != 'true' run: /install.sh Note The id defined in actions/cache must match the id in the if statement (i.e. steps.[ID].outputs.cache-hit) Cache Version Cache version is a hash generated for a combination of compression tool used (Gzip, Zstd, etc. based on the runner OS) and the path of directories being cached. If two caches have different versions, they are identified as unique caches while matching. This, for example, means that a cache created on a windows-latest runner can't be restored on ubuntu-latest as cache Versions are different. Pro tip: The list caches API can be used to get the version of a cache. This can be helpful to troubleshoot cache miss due to version. Example The workflow will create 3 unique caches with same keys. Ubuntu and windows runners will use different compression technique and hence create two different caches. And `build-linux` will create two different caches as the `paths` are different. Known practices and workarounds There are a number of community practices/workarounds to fulfill specific requirements. You may choose to use them if they suit your use case. Note these are not necessarily the only solution or even a recommended solution. Cache segment restore timeout Update a cache Use cache across feature branches Cross OS cache Force deletion of caches overriding default cache eviction policy Windows environment variables Please note that Windows environment variables (like %LocalAppData%) will NOT be expanded by this action. Instead, prefer using ~ in your paths which will expand to the HOME directory. For example, instead of %LocalAppData%, use ~\AppData\Local. For a list of supported default environment variables, see the Learn GitHub Actions: Variables page. Contributing We would love for you to contribute to actions/cache. Pull requests are welcome! Please see the CONTRIBUTING.md for more information. License The scripts and documentation in this project are released under the MIT License About Cache dependencies and build outputs in GitHub Actions Resources Readme License MIT license Code of conduct Code of conduct Security policy Security policy Activity Custom properties Stars 4.2k stars Watchers 85 watching Forks 1.1k forks Report repository Releases 51 v4.0.2 Latest Mar 19, 2024 + 50 releases Packages No packages published Used by 905k @remomax @linhh-phv @thibs12 @NeptuneX-Aggregator @tnikFi @skyrych @VincentKobz @kanandev2024 + 905,172 Contributors 131 @vsvipul @kotewar @joshmgross @dhadka @lvpx @Phantsure @aiqiaoy @bishal-pdMSFT @takost @bethanyj28 @t-dedah @magnetikonline @ashwinsangem @konradpabjan + 117 contributors Deployments 2 releaseNewActionVersion March 19, 2024 17:55 Languages JavaScript 0.9% Footer © 2024 GitHub, Inc. Footer navigation Terms Privacy Security Status Docs Contact actions/cache: Cache dependencies and build outputs in GitHub Actions Code Issues 92 Pull requests 41 Discussions Actions Security README Code of conduct MIT license TypeScript 97.9% Shell 1.2% On Wed, Mar 20, 2024 at 12:55 PM tshingombe fiston wrote: Skip to content Marketplace Actions Cache GitHub Action Cache v4.0.2 Latest version Cache action This action allows caching dependencies and build outputs to improve workflow execution time. Two other actions are available in addition to the primary cache action: Restore action Save action Tests Documentation See "Caching dependencies to speed up workflows". What's New v4 Updated to node 20 Added a save-always flag to save the cache even if a prior step fails v3 Added support for caching in GHES 3.5+. Fixed download issue for files > 2GB during restore. Updated the minimum runner version support from node 12 -> node 16. Fixed avoiding empty cache save when no files are available for caching. Fixed tar creation error while trying to create tar with path as ~/ home folder on ubuntu-latest. Fixed zstd failing on amazon linux 2.0 runners. Fixed cache not working with github workspace directory or current directory. Fixed the download stuck problem by introducing a timeout of 1 hour for cache downloads. Fix zstd not working for windows on gnu tar in issues. Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable SEGMENT_DOWNLOAD_TIMEOUT_MINS. Default is 10 minutes. New actions are available for granular control over caches - restore and save. Support cross-os caching as an opt-in feature. See Cross OS caching for more info. Added option to fail job on cache miss. See Exit workflow on cache miss for more info. Fix zstd not being used after zstd version upgrade to 1.5.4 on hosted runners Added option to lookup cache without downloading it. Reduced segment size to 128MB and segment timeout to 10 minutes to fail fast in case the cache download is stuck. See the v2 README.md for older updates. Usage Pre-requisites Create a workflow .yml file in your repository's .github/workflows directory. An example workflow is available below. For more information, see the GitHub Help Documentation for Creating a workflow file. If you are using this inside a container, a POSIX-compliant tar needs to be included and accessible from the execution path. If you are using a self-hosted Windows runner, GNU tar and zstd are required for Cross-OS caching to work. They are also recommended to be installed in general so the performance is on par with hosted Windows runners. Inputs key - An explicit key for a cache entry. See creating a cache key. path - A list of files, directories, and wildcard patterns to cache and restore. See @actions/glob for supported patterns. restore-keys - An ordered list of prefix-matched keys to use for restoring stale cache if no cache hit occurred for key. enableCrossOsArchive - An optional boolean when enabled, allows Windows runners to save or restore caches that can be restored or saved respectively on other platforms. Default: false fail-on-cache-miss - Fail the workflow if cache entry is not found. Default: false lookup-only - If true, only checks if cache entry exists and skips download. Does not change save cache behavior. Default: false Environment Variables SEGMENT_DOWNLOAD_TIMEOUT_MINS - Segment download timeout (in minutes, default 10) to abort download of the segment if not completed in the defined number of minutes. Read more Outputs cache-hit - A boolean value to indicate an exact match was found for the key. Note cache-hit will only be set to true when a cache hit occurs for the exact key match. For a partial key match via restore-keys or a cache miss, it will be set to false. See Skipping steps based on cache-hit for info on using this output Cache scopes The cache is scoped to the key, version, and branch. The default branch cache is available to other branches. See Matching a cache key for more info. Example cache workflow Restoring and saving cache using a single action name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: ${{ runner.os }}-primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: /generate-primes.sh -d prime-numbers - name: Use Prime Numbers run: /primes.sh -d prime-numbers The cache action provides a cache-hit output which is set to true when the cache is restored using the primary key and false when the cache is restored using restore-keys or no cache is restored. Using a combination of restore and save actions name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore cached Primes id: cache-primes-restore uses: actions/cache/restore@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-primes . . //intermediate workflow steps . - name: Save Primes id: cache-primes-save uses: actions/cache/save@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ steps.cache-primes-restore.outputs.cache-primary-key }} Note You must use the cache or restore action in your workflow before you need to use the files that might be restored from the cache. If the provided key matches an existing cache, a new cache is not created and if the provided key doesn't match an existing cache, a new cache is automatically created provided the job completes successfully. Caching Strategies With the introduction of the restore and save actions, a lot of caching use cases can now be achieved. Please see the caching strategies document for understanding how you can use the actions strategically to achieve the desired goal. Implementation Examples Every programming language and framework has its own way of caching. See Examples for a list of actions/cache implementations for use with: C# - NuGet Clojure - Lein Deps D - DUB Deno Elixir - Mix Go - Modules Haskell - Cabal Haskell - Stack Java - Gradle Java - Maven Node - npm Node - Lerna Node - Yarn OCaml/Reason - esy PHP - Composer Python - pip Python - pipenv R - renv Ruby - Bundler Rust - Cargo Scala - SBT Swift, Objective-C - Carthage Swift, Objective-C - CocoaPods Swift - Swift Package Manager Swift - Mint Creating a cache key A cache key can include any of the contexts, functions, literals, and operators supported by GitHub Actions. For example, using the hashFiles function allows you to create a new cache when dependencies change. - uses: actions/cache@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} Additionally, you can use arbitrary command output in a cache key, such as a date or software version: # http://man7.org/linux/man-pages/man1/date.1.html - name: Get Date id: get-date run: | echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - uses: actions/cache@v4 with: path: path/to/dependencies key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} See Using contexts to create cache keys Cache Limits A repository can have up to 10GB of caches. Once the 10GB limit is reached, older caches will be evicted based on when the cache was last accessed. Caches that are not accessed within the last week will also be evicted. Skipping steps based on cache-hit Using the cache-hit output, subsequent steps (such as install or build) can be skipped when a cache hit occurs on the key. It is recommended to install missing/updated dependencies in case of a partial key match when the key is dependent on the hash of the package file. Example: steps: - uses: actions/checkout@v3 - uses: actions/cache@v4 id: cache with: path: path/to/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Install Dependencies if: steps.cache.outputs.cache-hit != 'true' run: /install.sh Note The id defined in actions/cache must match the id in the if statement (i.e. steps.[ID].outputs.cache-hit) Cache Version Cache version is a hash generated for a combination of compression tool used (Gzip, Zstd, etc. based on the runner OS) and the path of directories being cached. If two caches have different versions, they are identified as unique caches while matching. This, for example, means that a cache created on a windows-latest runner can't be restored on ubuntu-latest as cache Versions are different. Pro tip: The list caches API can be used to get the version of a cache. This can be helpful to troubleshoot cache miss due to version. Example The workflow will create 3 unique caches with same keys. Ubuntu and windows runners will use different compression technique and hence create two different caches. And `build-linux` will create two different caches as the `paths` are different. Known practices and workarounds There are a number of community practices/workarounds to fulfill specific requirements. You may choose to use them if they suit your use case. Note these are not necessarily the only solution or even a recommended solution. Cache segment restore timeout Update a cache Use cache across feature branches Cross OS cache Force deletion of caches overriding default cache eviction policy Windows environment variables Please note that Windows environment variables (like %LocalAppData%) will NOT be expanded by this action. Instead, prefer using ~ in your paths which will expand to the HOME directory. For example, instead of %LocalAppData%, use ~\AppData\Local. For a list of supported default environment variables, see the Learn GitHub Actions: Variables page. Contributing We would love for you to contribute to actions/cache. Pull requests are welcome! Please see the CONTRIBUTING.md for more information. License The scripts and documentation in this project are released under the MIT License Verified creator GitHub has verified that this action was created by actions. Learn more about verified Actions. Stars Contributors @vsvipul @kotewar @joshmgross @dhadka @lvpx @Phantsure @aiqiaoy @bishal-pdMSFT @takost @bethanyj28 @t-dedah @magnetikonline Categories Dependency management Utilities Links actions/cache Open issues 92 Pull requests 41 Report abuse Footer © 2024 GitHub, Inc. Footer navigation Terms Privacy Security Status Docs Contact On Wed, Mar 20, 2024 at 12:54 PM tshingombe fiston wrote: Skip to content tshingombe-engineering / engin-data-exam-tshingomb Settings Creating a new workflow file in engin-data-exam-tshingomb Breadcrumbs engin-data-exam-tshingomb /.github /workflows / in main Indent mode Indent sizeLine wrap mode Editing blank.yml file contents 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 # This is a basic workflow to help you get started with Actions name: CI # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: [ "main" ] pull_request: branches: [ "main" ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 # Runs a single command using the runners shell - name: Run a one-line script run: echo Hello, world! # Runs a set of commands using the runners shell - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project. Use Control + Shift + m to toggle the tab key moving focus. Alternatively, use esc then tab to move to the next interactive element on the page. Use Control + Space to trigger autocomplete in most situations. Help Panel navigation Marketplace Documentation / Cache Cache By actions v4.0.2 4.2k Cache artifacts like dependencies and build outputs to improve workflow execution time View full Marketplace listing Installation Copy and paste the following snippet into your .yml file. Version: v4.0.2 - name: Cache uses: actions/cache@v4.0.2 with: # A list of files, directories, and wildcard patterns to cache and restore path: # An explicit key for restoring and saving the cache key: # An ordered list of keys to use for restoring stale cache if no cache hit occurred for key. Note `cache-hit` returns false in this case. restore-keys: # optional # The chunk size used to split up large files during upload, in bytes upload-chunk-size: # optional # An optional boolean when enabled, allows windows runners to save or restore caches that can be restored or saved respectively on other platforms enableCrossOsArchive: # optional, default is false # Fail the workflow if cache entry is not found fail-on-cache-miss: # optional, default is false # Check if a cache entry exists for the given input(s) (key, restore-keys) without downloading the cache lookup-only: # optional, default is false # Run the post step to save the cache even if another step before fails save-always: # optional, default is false Code Issues Pull requests Actions Projects Security Insights On Wed, Mar 20, 2024 at 12:53 PM tshingombe fiston wrote: # This is a basic workflow to help you get started with Actions name: CI # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: [ "main" ] pull_request: branches: [ "main" ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 # Runs a single command using the runners shell - name: Run a one-line script run: echo Hello, world! # Runs a set of commands using the runners shell - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project. On Tue, Mar 19, 2024 at 9:49 PM tshingombe wrote: GitHub [t5h2i0tadi/engineering-tshing-binair-archfile-] CodeQL workflow run CodeQL: No jobs were run View workflow run — You are receiving this because you are subscribed to this thread. Manage your GitHub Actions notifications GitHub, Inc. ・88 Colin P Kelly Jr Street ・San Francisco, CA 94107 ... [Message clipped] View entire message tshingombe fiston 1:00 PM (5 minutes ago) to t5h2i0tadi/engineering-tshing-binair-archfile- Skip to content actions / cache Insights Comparing changes Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons. ... Able to merge. These branches can be automatically merged. Discuss and review the changes in this comparison with others. Learn about pull requests 1 contributor Commits on Mar 20, 2024 Update README.md @t5h2i0tadi t5h2i0tadi committed Mar 20, 2024 Showing with 1 addition and 1 deletion. 2 changes: 1 addition & 1 deletion 2 README.md @@ -14,7 +14,7 @@ See ["Caching dependencies to speed up workflows"](https://docs.github.com/en/ac ## What's New ## What's New ### v4 ### v4 g * Updated to node 20 * Updated to node 20 * Added a `save-always` flag to save the cache even if a prior step fails * Added a `save-always` flag to save the cache even if a prior step fails Footer © 2024 GitHub, Inc. Footer navigation Terms Privacy Security Status Docs Contact Comparing actions:main...t5h2i0tadi:patch-1 · actions/cache Code Issues 92 Pull requests 41 Discussions Actions Security 1 commit 1 file changed On Wed, Mar 20, 2024 at 12:59 PM tshingombe fiston wrote: # Cache action This action allows caching dependencies and build outputs to improve workflow execution time. >Two other actions are available in addition to the primary `cache` action: >* [Restore action](./restore/README.md) >* [Save action](./save/README.md) [![Tests](https://github.com/actions/cache/actions/workflows/workflow.yml/badge.svg)](https://github.com/actions/cache/actions/workflows/workflow.yml) ## Documentation See ["Caching dependencies to speed up workflows"](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows). ## What's New ### v4 * Updated to node 20 * Added a `save-always` flag to save the cache even if a prior step fails ### v3 * Added support for caching in GHES 3.5+. * Fixed download issue for files > 2GB during restore. * Updated the minimum runner version support from node 12 -> node 16. * Fixed avoiding empty cache save when no files are available for caching. * Fixed tar creation error while trying to create tar with path as `~/` home folder on `ubuntu-latest`. * Fixed zstd failing on amazon linux 2.0 runners. * Fixed cache not working with github workspace directory or current directory. * Fixed the download stuck problem by introducing a timeout of 1 hour for cache downloads. * Fix zstd not working for windows on gnu tar in issues. * Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable `SEGMENT_DOWNLOAD_TIMEOUT_MINS`. Default is 10 minutes. * New actions are available for granular control over caches - [restore](restore/action.yml) and [save](save/action.yml). * Support cross-os caching as an opt-in feature. See [Cross OS caching](./tips-and-workarounds.md#cross-os-cache) for more info. * Added option to fail job on cache miss. See [Exit workflow on cache miss](./restore/README.md#exit-workflow-on-cache-miss) for more info. * Fix zstd not being used after zstd version upgrade to 1.5.4 on hosted runners * Added option to lookup cache without downloading it. * Reduced segment size to 128MB and segment timeout to 10 minutes to fail fast in case the cache download is stuck. See the [v2 README.md](https://github.com/actions/cache/blob/v2/README.md) for older updates. ## Usage ### Pre-requisites Create a workflow `.yml` file in your repository's `.github/workflows` directory. An [example workflow](#example-cache-workflow) is available below. For more information, see the GitHub Help Documentation for [Creating a workflow file](https://help.github.com/en/articles/configuring-a-workflow#creating-a-workflow-file). If you are using this inside a container, a POSIX-compliant `tar` needs to be included and accessible from the execution path. If you are using a `self-hosted` Windows runner, `GNU tar` and `zstd` are required for [Cross-OS caching](https://github.com/actions/cache/blob/main/tips-and-workarounds.md#cross-os-cache) to work. They are also recommended to be installed in general so the performance is on par with `hosted` Windows runners. ### Inputs * `key` - An explicit key for a cache entry. See [creating a cache key](#creating-a-cache-key). * `path` - A list of files, directories, and wildcard patterns to cache and restore. See [`@actions/glob`](https://github.com/actions/toolkit/tree/main/packages/glob) for supported patterns. * `restore-keys` - An ordered list of prefix-matched keys to use for restoring stale cache if no cache hit occurred for key. * `enableCrossOsArchive` - An optional boolean when enabled, allows Windows runners to save or restore caches that can be restored or saved respectively on other platforms. Default: `false` * `fail-on-cache-miss` - Fail the workflow if cache entry is not found. Default: `false` * `lookup-only` - If true, only checks if cache entry exists and skips download. Does not change save cache behavior. Default: `false` #### Environment Variables * `SEGMENT_DOWNLOAD_TIMEOUT_MINS` - Segment download timeout (in minutes, default `10`) to abort download of the segment if not completed in the defined number of minutes. [Read more](https://github.com/actions/cache/blob/main/tips-and-workarounds.md#cache-segment-restore-timeout) ### Outputs * `cache-hit` - A boolean value to indicate an exact match was found for the key. > **Note** `cache-hit` will only be set to `true` when a cache hit occurs for the exact `key` match. For a partial key match via `restore-keys` or a cache miss, it will be set to `false`. See [Skipping steps based on cache-hit](#skipping-steps-based-on-cache-hit) for info on using this output ### Cache scopes The cache is scoped to the key, [version](#cache-version), and branch. The default branch cache is available to other branches. See [Matching a cache key](https://help.github.com/en/actions/configuring-and-managing-workflows/caching-dependencies-to-speed-up-workflows#matching-a-cache-key) for more info. ### Example cache workflow #### Restoring and saving cache using a single action ```yaml name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: ${{ runner.os }}-primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: /generate-primes.sh -d prime-numbers - name: Use Prime Numbers run: /primes.sh -d prime-numbers ``` The `cache` action provides a `cache-hit` output which is set to `true` when the cache is restored using the primary `key` and `false` when the cache is restored using `restore-keys` or no cache is restored. #### Using a combination of restore and save actions ```yaml name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore cached Primes id: cache-primes-restore uses: actions/cache/restore@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-primes . . //intermediate workflow steps . - name: Save Primes id: cache-primes-save uses: actions/cache/save@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ steps.cache-primes-restore.outputs.cache-primary-key }} ``` > **Note** > You must use the `cache` or `restore` action in your workflow before you need to use the files that might be restored from the cache. If the provided `key` matches an existing cache, a new cache is not created and if the provided `key` doesn't match an existing cache, a new cache is automatically created provided the job completes successfully. ## Caching Strategies With the introduction of the `restore` and `save` actions, a lot of caching use cases can now be achieved. Please see the [caching strategies](./caching-strategies.md) document for understanding how you can use the actions strategically to achieve the desired goal. ## Implementation Examples Every programming language and framework has its own way of caching. See [Examples](examples.md) for a list of `actions/cache` implementations for use with: * [C# - NuGet](./examples.md#c---nuget) * [Clojure - Lein Deps](./examples.md#clojure---lein-deps) * [D - DUB](./examples.md#d---dub) * [Deno](./examples.md#deno) * [Elixir - Mix](./examples.md#elixir---mix) * [Go - Modules](./examples.md#go---modules) * [Haskell - Cabal](./examples.md#haskell---cabal) * [Haskell - Stack](./examples.md#haskell---stack) * [Java - Gradle](./examples.md#java---gradle) * [Java - Maven](./examples.md#java---maven) * [Node - npm](./examples.md#node---npm) * [Node - Lerna](./examples.md#node---lerna) * [Node - Yarn](./examples.md#node---yarn) * [OCaml/Reason - esy](./examples.md#ocamlreason---esy) * [PHP - Composer](./examples.md#php---composer) * [Python - pip](./examples.md#python---pip) * [Python - pipenv](./examples.md#python---pipenv) * [R - renv](./examples.md#r---renv) * [Ruby - Bundler](./examples.md#ruby---bundler) * [Rust - Cargo](./examples.md#rust---cargo) * [Scala - SBT](./examples.md#scala---sbt) * [Swift, Objective-C - Carthage](./examples.md#swift-objective-c---carthage) * [Swift, Objective-C - CocoaPods](./examples.md#swift-objective-c---cocoapods) * [Swift - Swift Package Manager](./examples.md#swift---swift-package-manager) * [Swift - Mint](./examples.md#swift---mint) ## Creating a cache key A cache key can include any of the contexts, functions, literals, and operators supported by GitHub Actions. For example, using the [`hashFiles`](https://docs.github.com/en/actions/learn-github-actions/expressions#hashfiles) function allows you to create a new cache when dependencies change. ```yaml - uses: actions/cache@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} ``` Additionally, you can use arbitrary command output in a cache key, such as a date or software version: ```yaml # http://man7.org/linux/man-pages/man1/date.1.html - name: Get Date id: get-date run: | echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - uses: actions/cache@v4 with: path: path/to/dependencies key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} ``` See [Using contexts to create cache keys](https://help.github.com/en/actions/configuring-and-managing-workflows/caching-dependencies-to-speed-up-workflows#using-contexts-to-create-cache-keys) ## Cache Limits A repository can have up to 10GB of caches. Once the 10GB limit is reached, older caches will be evicted based on when the cache was last accessed. Caches that are not accessed within the last week will also be evicted. ## Skipping steps based on cache-hit Using the `cache-hit` output, subsequent steps (such as install or build) can be skipped when a cache hit occurs on the key. It is recommended to install missing/updated dependencies in case of a partial key match when the key is dependent on the `hash` of the package file. Example: ```yaml steps: - uses: actions/checkout@v3 - uses: actions/cache@v4 id: cache with: path: path/to/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Install Dependencies if: steps.cache.outputs.cache-hit != 'true' run: /install.sh ``` > **Note** The `id` defined in `actions/cache` must match the `id` in the `if` statement (i.e. `steps.[ID].outputs.cache-hit`) ## Cache Version Cache version is a hash [generated](https://github.com/actions/toolkit/blob/500d0b42fee2552ae9eeb5933091fe2fbf14e72d/packages/cache/src/internal/cacheHttpClient.ts#L73-L90) for a combination of compression tool used (Gzip, Zstd, etc. based on the runner OS) and the `path` of directories being cached. If two caches have different versions, they are identified as unique caches while matching. This, for example, means that a cache created on a `windows-latest` runner can't be restored on `ubuntu-latest` as cache `Version`s are different. > Pro tip: The [list caches](https://docs.github.com/en/rest/actions/cache#list-github-actions-caches-for-a-repository) API can be used to get the version of a cache. This can be helpful to troubleshoot cache miss due to version.
Example The workflow will create 3 unique caches with same keys. Ubuntu and windows runners will use different compression technique and hence create two different caches. And `build-linux` will create two different caches as the `paths` are different. ```yaml jobs: build-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: ./generate-primes.sh -d prime-numbers - name: Cache Numbers id: cache-numbers uses: actions/cache@v4 with: path: numbers key: primes - name: Generate Numbers if: steps.cache-numbers.outputs.cache-hit != 'true' run: ./generate-primes.sh -d numbers build-windows: runs-on: windows-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: ./generate-primes -d prime-numbers ```
## Known practices and workarounds There are a number of community practices/workarounds to fulfill specific requirements. You may choose to use them if they suit your use case. Note these are not necessarily the only solution or even a recommended solution. * [Cache segment restore timeout](./tips-and-workarounds.md#cache-segment-restore-timeout) * [Update a cache](./tips-and-workarounds.md#update-a-cache) * [Use cache across feature branches](./tips-and-workarounds.md#use-cache-across-feature-branches) * [Cross OS cache](./tips-and-workarounds.md#cross-os-cache) * [Force deletion of caches overriding default cache eviction policy](./tips-and-workarounds.md#force-deletion-of-caches-overriding-default-cache-eviction-policy) ### Windows environment variables Please note that Windows environment variables (like `%LocalAppData%`) will NOT be expanded by this action. Instead, prefer using `~` in your paths which will expand to the HOME directory. For example, instead of `%LocalAppData%`, use `~\AppData\Local`. For a list of supported default environment variables, see the [Learn GitHub Actions: Variables](https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables) page. ## Contributing We would love for you to contribute to `actions/cache`. Pull requests are welcome! Please see the [CONTRIBUTING.md](CONTRIBUTING.md) for more information. ## License The scripts and documentation in this project are released under the [MIT License](LICENSE) On Wed, Mar 20, 2024 at 12:58 PM tshingombe fiston wrote: Skip to content actions / cache Insights Owner avatar cache Public actions/cache Use this GitHub action with your project Add this Action to an existing workflow or create a new one t Add file Folders and files Name Last commit message Last commit date Latest commit bethanyj28bethanyj28 Merge pull request #1327 from cdce8p/fix-fail-on-cache-miss 0c45773 · History .devcontainer GA for granular cache (#1035) .github add release action .licenses/npm licensed cache .vscode Initial commit __tests__ Add test case for process exit dist Fix fail-on-cache-miss not working restore Update "only-" actions to node20 save Update "only-" actions to node20 src Fix fail-on-cache-miss not working .eslintrc.json Update eslint and prettier .gitattributes Fix line ending for windows test .gitignore test e2e during workflow (#185) .licensed.yml Add Licensed to attribute third party licenses .prettierrc.json Initial commit CODE_OF_CONDUCT.md Fix repo name in contact email (#41) CONTRIBUTING.md Update contributing.md LICENSE Initial commit README.md Update examples RELEASES.md Bump version action.yml Merge branch 'main' into main caching-strategies.md Fixing paths for OSes (#1101) examples.md Clarify that macos-latest image has bazelisk jest.config.js Resolve dependabot alerts package-lock.json Bump version package.json Bump version tips-and-workarounds.md Merge branch 'main' into pdotl-patch-1 tsconfig.json Initial commit Repository files navigation Security Cache action This action allows caching dependencies and build outputs to improve workflow execution time. Two other actions are available in addition to the primary cache action: Restore action Save action Tests Documentation See "Caching dependencies to speed up workflows". What's New v4 Updated to node 20 Added a save-always flag to save the cache even if a prior step fails v3 Added support for caching in GHES 3.5+. Fixed download issue for files > 2GB during restore. Updated the minimum runner version support from node 12 -> node 16. Fixed avoiding empty cache save when no files are available for caching. Fixed tar creation error while trying to create tar with path as ~/ home folder on ubuntu-latest. Fixed zstd failing on amazon linux 2.0 runners. Fixed cache not working with github workspace directory or current directory. Fixed the download stuck problem by introducing a timeout of 1 hour for cache downloads. Fix zstd not working for windows on gnu tar in issues. Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable SEGMENT_DOWNLOAD_TIMEOUT_MINS. Default is 10 minutes. New actions are available for granular control over caches - restore and save. Support cross-os caching as an opt-in feature. See Cross OS caching for more info. Added option to fail job on cache miss. See Exit workflow on cache miss for more info. Fix zstd not being used after zstd version upgrade to 1.5.4 on hosted runners Added option to lookup cache without downloading it. Reduced segment size to 128MB and segment timeout to 10 minutes to fail fast in case the cache download is stuck. See the v2 README.md for older updates. Usage Pre-requisites Create a workflow .yml file in your repository's .github/workflows directory. An example workflow is available below. For more information, see the GitHub Help Documentation for Creating a workflow file. If you are using this inside a container, a POSIX-compliant tar needs to be included and accessible from the execution path. If you are using a self-hosted Windows runner, GNU tar and zstd are required for Cross-OS caching to work. They are also recommended to be installed in general so the performance is on par with hosted Windows runners. Inputs key - An explicit key for a cache entry. See creating a cache key. path - A list of files, directories, and wildcard patterns to cache and restore. See @actions/glob for supported patterns. restore-keys - An ordered list of prefix-matched keys to use for restoring stale cache if no cache hit occurred for key. enableCrossOsArchive - An optional boolean when enabled, allows Windows runners to save or restore caches that can be restored or saved respectively on other platforms. Default: false fail-on-cache-miss - Fail the workflow if cache entry is not found. Default: false lookup-only - If true, only checks if cache entry exists and skips download. Does not change save cache behavior. Default: false Environment Variables SEGMENT_DOWNLOAD_TIMEOUT_MINS - Segment download timeout (in minutes, default 10) to abort download of the segment if not completed in the defined number of minutes. Read more Outputs cache-hit - A boolean value to indicate an exact match was found for the key. Note cache-hit will only be set to true when a cache hit occurs for the exact key match. For a partial key match via restore-keys or a cache miss, it will be set to false. See Skipping steps based on cache-hit for info on using this output Cache scopes The cache is scoped to the key, version, and branch. The default branch cache is available to other branches. See Matching a cache key for more info. Example cache workflow Restoring and saving cache using a single action name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: ${{ runner.os }}-primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: /generate-primes.sh -d prime-numbers - name: Use Prime Numbers run: /primes.sh -d prime-numbers The cache action provides a cache-hit output which is set to true when the cache is restored using the primary key and false when the cache is restored using restore-keys or no cache is restored. Using a combination of restore and save actions name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore cached Primes id: cache-primes-restore uses: actions/cache/restore@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-primes . . //intermediate workflow steps . - name: Save Primes id: cache-primes-save uses: actions/cache/save@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ steps.cache-primes-restore.outputs.cache-primary-key }} Note You must use the cache or restore action in your workflow before you need to use the files that might be restored from the cache. If the provided key matches an existing cache, a new cache is not created and if the provided key doesn't match an existing cache, a new cache is automatically created provided the job completes successfully. Caching Strategies With the introduction of the restore and save actions, a lot of caching use cases can now be achieved. Please see the caching strategies document for understanding how you can use the actions strategically to achieve the desired goal. Implementation Examples Every programming language and framework has its own way of caching. See Examples for a list of actions/cache implementations for use with: C# - NuGet Clojure - Lein Deps D - DUB Deno Elixir - Mix Go - Modules Haskell - Cabal Haskell - Stack Java - Gradle Java - Maven Node - npm Node - Lerna Node - Yarn OCaml/Reason - esy PHP - Composer Python - pip Python - pipenv R - renv Ruby - Bundler Rust - Cargo Scala - SBT Swift, Objective-C - Carthage Swift, Objective-C - CocoaPods Swift - Swift Package Manager Swift - Mint Creating a cache key A cache key can include any of the contexts, functions, literals, and operators supported by GitHub Actions. For example, using the hashFiles function allows you to create a new cache when dependencies change. - uses: actions/cache@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} Additionally, you can use arbitrary command output in a cache key, such as a date or software version: # http://man7.org/linux/man-pages/man1/date.1.html - name: Get Date id: get-date run: | echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - uses: actions/cache@v4 with: path: path/to/dependencies key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} See Using contexts to create cache keys Cache Limits A repository can have up to 10GB of caches. Once the 10GB limit is reached, older caches will be evicted based on when the cache was last accessed. Caches that are not accessed within the last week will also be evicted. Skipping steps based on cache-hit Using the cache-hit output, subsequent steps (such as install or build) can be skipped when a cache hit occurs on the key. It is recommended to install missing/updated dependencies in case of a partial key match when the key is dependent on the hash of the package file. Example: steps: - uses: actions/checkout@v3 - uses: actions/cache@v4 id: cache with: path: path/to/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Install Dependencies if: steps.cache.outputs.cache-hit != 'true' run: /install.sh Note The id defined in actions/cache must match the id in the if statement (i.e. steps.[ID].outputs.cache-hit) Cache Version Cache version is a hash generated for a combination of compression tool used (Gzip, Zstd, etc. based on the runner OS) and the path of directories being cached. If two caches have different versions, they are identified as unique caches while matching. This, for example, means that a cache created on a windows-latest runner can't be restored on ubuntu-latest as cache Versions are different. Pro tip: The list caches API can be used to get the version of a cache. This can be helpful to troubleshoot cache miss due to version. Example The workflow will create 3 unique caches with same keys. Ubuntu and windows runners will use different compression technique and hence create two different caches. And `build-linux` will create two different caches as the `paths` are different. Known practices and workarounds There are a number of community practices/workarounds to fulfill specific requirements. You may choose to use them if they suit your use case. Note these are not necessarily the only solution or even a recommended solution. Cache segment restore timeout Update a cache Use cache across feature branches Cross OS cache Force deletion of caches overriding default cache eviction policy Windows environment variables Please note that Windows environment variables (like %LocalAppData%) will NOT be expanded by this action. Instead, prefer using ~ in your paths which will expand to the HOME directory. For example, instead of %LocalAppData%, use ~\AppData\Local. For a list of supported default environment variables, see the Learn GitHub Actions: Variables page. Contributing We would love for you to contribute to actions/cache. Pull requests are welcome! Please see the CONTRIBUTING.md for more information. License The scripts and documentation in this project are released under the MIT License About Cache dependencies and build outputs in GitHub Actions Resources Readme License MIT license Code of conduct Code of conduct Security policy Security policy Activity Custom properties Stars 4.2k stars Watchers 85 watching Forks 1.1k forks Report repository Releases 51 v4.0.2 Latest Mar 19, 2024 + 50 releases Packages No packages published Used by 905k @remomax @linhh-phv @thibs12 @NeptuneX-Aggregator @tnikFi @skyrych @VincentKobz @kanandev2024 + 905,172 Contributors 131 @vsvipul @kotewar @joshmgross @dhadka @lvpx @Phantsure @aiqiaoy @bishal-pdMSFT @takost @bethanyj28 @t-dedah @magnetikonline @ashwinsangem @konradpabjan + 117 contributors Deployments 2 releaseNewActionVersion March 19, 2024 17:55 Languages JavaScript 0.9% Footer © 2024 GitHub, Inc. Footer navigation Terms Privacy Security Status Docs Contact actions/cache: Cache dependencies and build outputs in GitHub Actions Code Issues 92 Pull requests 41 Discussions Actions Security README Code of conduct MIT license TypeScript 97.9% Shell 1.2% On Wed, Mar 20, 2024 at 12:55 PM tshingombe fiston wrote: Skip to content Marketplace Actions Cache GitHub Action Cache v4.0.2 Latest version Cache action This action allows caching dependencies and build outputs to improve workflow execution time. Two other actions are available in addition to the primary cache action: Restore action Save action Tests Documentation See "Caching dependencies to speed up workflows". What's New v4 Updated to node 20 Added a save-always flag to save the cache even if a prior step fails v3 Added support for caching in GHES 3.5+. Fixed download issue for files > 2GB during restore. Updated the minimum runner version support from node 12 -> node 16. Fixed avoiding empty cache save when no files are available for caching. Fixed tar creation error while trying to create tar with path as ~/ home folder on ubuntu-latest. Fixed zstd failing on amazon linux 2.0 runners. Fixed cache not working with github workspace directory or current directory. Fixed the download stuck problem by introducing a timeout of 1 hour for cache downloads. Fix zstd not working for windows on gnu tar in issues. Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable SEGMENT_DOWNLOAD_TIMEOUT_MINS. Default is 10 minutes. New actions are available for granular control over caches - restore and save. Support cross-os caching as an opt-in feature. See Cross OS caching for more info. Added option to fail job on cache miss. See Exit workflow on cache miss for more info. Fix zstd not being used after zstd version upgrade to 1.5.4 on hosted runners Added option to lookup cache without downloading it. Reduced segment size to 128MB and segment timeout to 10 minutes to fail fast in case the cache download is stuck. See the v2 README.md for older updates. Usage Pre-requisites Create a workflow .yml file in your repository's .github/workflows directory. An example workflow is available below. For more information, see the GitHub Help Documentation for Creating a workflow file. If you are using this inside a container, a POSIX-compliant tar needs to be included and accessible from the execution path. If you are using a self-hosted Windows runner, GNU tar and zstd are required for Cross-OS caching to work. They are also recommended to be installed in general so the performance is on par with hosted Windows runners. Inputs key - An explicit key for a cache entry. See creating a cache key. path - A list of files, directories, and wildcard patterns to cache and restore. See @actions/glob for supported patterns. restore-keys - An ordered list of prefix-matched keys to use for restoring stale cache if no cache hit occurred for key. enableCrossOsArchive - An optional boolean when enabled, allows Windows runners to save or restore caches that can be restored or saved respectively on other platforms. Default: false fail-on-cache-miss - Fail the workflow if cache entry is not found. Default: false lookup-only - If true, only checks if cache entry exists and skips download. Does not change save cache behavior. Default: false Environment Variables SEGMENT_DOWNLOAD_TIMEOUT_MINS - Segment download timeout (in minutes, default 10) to abort download of the segment if not completed in the defined number of minutes. Read more Outputs cache-hit - A boolean value to indicate an exact match was found for the key. Note cache-hit will only be set to true when a cache hit occurs for the exact key match. For a partial key match via restore-keys or a cache miss, it will be set to false. See Skipping steps based on cache-hit for info on using this output Cache scopes The cache is scoped to the key, version, and branch. The default branch cache is available to other branches. See Matching a cache key for more info. Example cache workflow Restoring and saving cache using a single action name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: ${{ runner.os }}-primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: /generate-primes.sh -d prime-numbers - name: Use Prime Numbers run: /primes.sh -d prime-numbers The cache action provides a cache-hit output which is set to true when the cache is restored using the primary key and false when the cache is restored using restore-keys or no cache is restored. Using a combination of restore and save actions name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore cached Primes id: cache-primes-restore uses: actions/cache/restore@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-primes . . //intermediate workflow steps . - name: Save Primes id: cache-primes-save uses: actions/cache/save@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ steps.cache-primes-restore.outputs.cache-primary-key }} Note You must use the cache or restore action in your workflow before you need to use the files that might be restored from the cache. If the provided key matches an existing cache, a new cache is not created and if the provided key doesn't match an existing cache, a new cache is automatically created provided the job completes successfully. Caching Strategies With the introduction of the restore and save actions, a lot of caching use cases can now be achieved. Please see the caching strategies document for understanding how you can use the actions strategically to achieve the desired goal. Implementation Examples Every programming language and framework has its own way of caching. See Examples for a list of actions/cache implementations for use with: C# - NuGet Clojure - Lein Deps D - DUB Deno Elixir - Mix Go - Modules Haskell - Cabal Haskell - Stack Java - Gradle Java - Maven Node - npm Node - Lerna Node - Yarn OCaml/Reason - esy PHP - Composer Python - pip Python - pipenv R - renv Ruby - Bundler Rust - Cargo Scala - SBT Swift, Objective-C - Carthage Swift, Objective-C - CocoaPods Swift - Swift Package Manager Swift - Mint Creating a cache key A cache key can include any of the contexts, functions, literals, and operators supported by GitHub Actions. For example, using the hashFiles function allows you to create a new cache when dependencies change. - uses: actions/cache@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} Additionally, you can use arbitrary command output in a cache key, such as a date or software version: # http://man7.org/linux/man-pages/man1/date.1.html - name: Get Date id: get-date run: | echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - uses: actions/cache@v4 with: path: path/to/dependencies key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} See Using contexts to create cache keys Cache Limits A repository can have up to 10GB of caches. Once the 10GB limit is reached, older caches will be evicted based on when the cache was last accessed. Caches that are not accessed within the last week will also be evicted. Skipping steps based on cache-hit Using the cache-hit output, subsequent steps (such as install or build) can be skipped when a cache hit occurs on the key. It is recommended to install missing/updated dependencies in case of a partial key match when the key is dependent on the hash of the package file. Example: steps: - uses: actions/checkout@v3 - uses: actions/cache@v4 id: cache with: path: path/to/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Install Dependencies if: steps.cache.outputs.cache-hit != 'true' run: /install.sh Note The id defined in actions/cache must match the id in the if statement (i.e. steps.[ID].outputs.cache-hit) Cache Version Cache version is a hash generated for a combination of compression tool used (Gzip, Zstd, etc. based on the runner OS) and the path of directories being cached. If two caches have different versions, they are identified as unique caches while matching. This, for example, means that a cache created on a windows-latest runner can't be restored on ubuntu-latest as cache Versions are different. Pro tip: The list caches API can be used to get the version of a cache. This can be helpful to troubleshoot cache miss due to version. Example The workflow will create 3 unique caches with same keys. Ubuntu and windows runners will use different compression technique and hence create two different caches. And `build-linux` will create two different caches as the `paths` are different. Known practices and workarounds There are a number of community practices/workarounds to fulfill specific requirements. You may choose to use them if they suit your use case. Note these are not necessarily the only solution or even a recommended solution. Cache segment restore timeout Update a cache Use cache across feature branches Cross OS cache Force deletion of caches overriding default cache eviction policy Windows environment variables Please note that Windows environment variables (like %LocalAppData%) will NOT be expanded by this action. Instead, prefer using ~ in your paths which will expand to the HOME directory. For example, instead of %LocalAppData%, use ~\AppData\Local. For a list of supported default environment variables, see the Learn GitHub Actions: Variables page. Contributing We would love for you to contribute to actions/cache. Pull requests are welcome! Please see the CONTRIBUTING.md for more information. License The scripts and documentation in this project are released under the MIT License Verified creator GitHub has verified that this action was created by actions. Learn more about verified Actions. Stars Contributors @vsvipul @kotewar @joshmgross @dhadka @lvpx @Phantsure @aiqiaoy @bishal-pdMSFT @takost @bethanyj28 @t-dedah @magnetikonline Categories Dependency management Utilities Links actions/cache Open issues 92 Pull requests 41 Report abuse Footer © 2024 GitHub, Inc. Footer navigation Terms Privacy Security Status Docs Contact On Wed, Mar 20, 2024 at 12:54 PM tshingombe fiston wrote: Skip to content tshingombe-engineering / engin-data-exam-tshingomb Settings Creating a new workflow file in engin-data-exam-tshingomb Breadcrumbs engin-data-exam-tshingomb /.github /workflows / in main Indent mode Indent sizeLine wrap mode Editing blank.yml file contents 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 # This is a basic workflow to help you get started with Actions name: CI # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: [ "main" ] pull_request: branches: [ "main" ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 # Runs a single command using the runners shell - name: Run a one-line script run: echo Hello, world! # Runs a set of commands using the runners shell - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project. Use Control + Shift + m to toggle the tab key moving focus. Alternatively, use esc then tab to move to the next interactive element on the page. Use Control + Space to trigger autocomplete in most situations. Help Panel navigation Marketplace Documentation / Cache Cache By actions v4.0.2 4.2k Cache artifacts like dependencies and build outputs to improve workflow execution time View full Marketplace listing Installation Copy and paste the following snippet into your .yml file. Version: v4.0.2 - name: Cache uses: actions/cache@v4.0.2 with: # A list of files, directories, and wildcard patterns to cache and restore path: # An explicit key for restoring and saving the cache key: # An ordered list of keys to use for restoring stale cache if no cache hit occurred for key. Note `cache-hit` returns false in this case. restore-keys: # optional # The chunk size used to split up large files during upload, in bytes upload-chunk-size: # optional # An optional boolean when enabled, allows windows runners to save or restore caches that can be restored or saved respectively on other platforms enableCrossOsArchive: # optional, default is false # Fail the workflow if cache entry is not found fail-on-cache-miss: # optional, default is false # Check if a cache entry exists for the given input(s) (key, restore-keys) without downloading the cache lookup-only: # optional, default is false # Run the post step to save the cache even if another step before fails save-always: # optional, default is false Code Issues Pull requests Actions Projects Security Insights On Wed, Mar 20, 2024 at 12:53 PM tshingombe fiston wrote: # This is a basic workflow to help you get started with Actions name: CI # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: [ "main" ] pull_request: branches: [ "main" ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 # Runs a single command using the runners shell - name: Run a one-line script run: echo Hello, world! # Runs a set of commands using the runners shell - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project. On Tue, Mar 19, 2024 at 9:49 PM tshingombe wrote: GitHub [t5h2i0tadi/engineering-tshing-binair-archfile-] CodeQL workflow run CodeQL: No jobs were run View workflow run — You are receiving this because you are subscribed to this thread. Manage your GitHub Actions notifications GitHub, Inc. ・88 Colin P Kelly Jr Street ・San Francisco, CA 94107 ... [Message clipped] View entire message tshingombe fiston 1:02 PM (4 minutes ago) to t5h2i0tadi/engineering-tshing-binair-archfile- Skip to content actions / cache Insights Actions: actions/cache Actions All workflows Showing runs from all workflows 1,190 workflow runs Close inactive issues Close inactive issues #819: Scheduled main March 20, 2024 10:30 13s cache restore on versions 3 and 4 not working Assign issue #174: Issue #1361 opened by mark-jordanovic-lewis March 19, 2024 19:19 13s v4.0.2 Release new action version #2: Release v4.0.2 released by bethanyj28 March 19, 2024 17:55 10m 24s Merge pull request #1327 from cdce8p/fix-fail-on-cache-miss Code scanning - action #1974: Commit 0c45773 pushed by bethanyj28 v4.0.2 March 19, 2024 17:55 2m 56s Merge pull request #1327 from cdce8p/fix-fail-on-cache-miss Check dist/ #509: Commit 0c45773 pushed by bethanyj28 main March 19, 2024 15:31 44s Merge pull request #1327 from cdce8p/fix-fail-on-cache-miss Licensed #908: Commit 0c45773 pushed by bethanyj28 main March 19, 2024 15:31 26s Merge pull request #1327 from cdce8p/fix-fail-on-cache-miss Tests #1219: Commit 0c45773 pushed by bethanyj28 main March 19, 2024 15:31 1m 38s Merge pull request #1327 from cdce8p/fix-fail-on-cache-miss Code scanning - action #1973: Commit 0c45773 pushed by bethanyj28 main March 19, 2024 15:31 4m 6s Close inactive issues Close inactive issues #818: Scheduled main March 19, 2024 10:30 15s Fix fail-on-cache-miss not working Check dist/ #508: Pull request #1327 synchronize by cdce8p cdce8p:fix-fail-on-cache-miss March 19, 2024 10:29 45s Fix fail-on-cache-miss not working Licensed #907: Pull request #1327 synchronize by cdce8p cdce8p:fix-fail-on-cache-miss March 19, 2024 10:29 28s Fix fail-on-cache-miss not working Tests #1218: Pull request #1327 synchronize by cdce8p cdce8p:fix-fail-on-cache-miss March 19, 2024 10:29 1m 30s Fix fail-on-cache-miss not working Code scanning - action #1972: Pull request #1327 synchronize by cdce8p cdce8p:fix-fail-on-cache-miss March 19, 2024 10:29 2m 18s Close inactive issues Close inactive issues #817: Scheduled main March 18, 2024 10:30 17s Code scanning - action Code scanning - action #1971: Scheduled main March 17, 2024 21:00 3m 12s Close inactive issues Close inactive issues #816: Scheduled main March 17, 2024 10:30 13s Close inactive issues Close inactive issues #815: Scheduled main March 16, 2024 10:30 16s Hhiih Assign issue #173: Issue #1360 opened by Ghoifuoffigccty March 16, 2024 09:16 12s Close inactive issues Close inactive issues #814: Scheduled main March 15, 2024 10:31 17s Close inactive issues Close inactive issues #813: Scheduled main March 14, 2024 10:30 17s Running actions/cache in a composite action and setting the path via input does not save the cache Assign issue #172: Issue #1359 opened by dreinhardt-terminus March 13, 2024 23:19 13s Close inactive issues Close inactive issues #812: Scheduled main March 13, 2024 10:30 12s Close inactive issues Close inactive issues #811: Scheduled main March 12, 2024 10:30 13s Cache Hit / Miss Rate Information Assign issue #171: Issue #1357 opened by edhgoose March 11, 2024 11:56 12s Close inactive issues Close inactive issues #810: Scheduled main March 11, 2024 10:30 13s Footer © 2024 GitHub, Inc. Footer navigation Terms Privacy Security Status Docs Contact Workflow runs · actions/cache Code Issues 92 Pull requests 41 Discussions Actions Security Workflows Management On Wed, Mar 20, 2024 at 1:00 PM tshingombe fiston wrote: Skip to content actions / cache Insights Comparing changes Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons. ... Able to merge. These branches can be automatically merged. Discuss and review the changes in this comparison with others. Learn about pull requests 1 contributor Commits on Mar 20, 2024 Update README.md @t5h2i0tadi t5h2i0tadi committed Mar 20, 2024 Showing with 1 addition and 1 deletion. 2 changes: 1 addition & 1 deletion 2 README.md @@ -14,7 +14,7 @@ See ["Caching dependencies to speed up workflows"](https://docs.github.com/en/ac ## What's New ## What's New ### v4 ### v4 g * Updated to node 20 * Updated to node 20 * Added a `save-always` flag to save the cache even if a prior step fails * Added a `save-always` flag to save the cache even if a prior step fails Footer © 2024 GitHub, Inc. Footer navigation Terms Privacy Security Status Docs Contact Comparing actions:main...t5h2i0tadi:patch-1 · actions/cache Code Issues 92 Pull requests 41 Discussions Actions Security 1 commit 1 file changed On Wed, Mar 20, 2024 at 12:59 PM tshingombe fiston wrote: # Cache action This action allows caching dependencies and build outputs to improve workflow execution time. >Two other actions are available in addition to the primary `cache` action: >* [Restore action](./restore/README.md) >* [Save action](./save/README.md) [![Tests](https://github.com/actions/cache/actions/workflows/workflow.yml/badge.svg)](https://github.com/actions/cache/actions/workflows/workflow.yml) ## Documentation See ["Caching dependencies to speed up workflows"](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows). ## What's New ### v4 * Updated to node 20 * Added a `save-always` flag to save the cache even if a prior step fails ### v3 * Added support for caching in GHES 3.5+. * Fixed download issue for files > 2GB during restore. * Updated the minimum runner version support from node 12 -> node 16. * Fixed avoiding empty cache save when no files are available for caching. * Fixed tar creation error while trying to create tar with path as `~/` home folder on `ubuntu-latest`. * Fixed zstd failing on amazon linux 2.0 runners. * Fixed cache not working with github workspace directory or current directory. * Fixed the download stuck problem by introducing a timeout of 1 hour for cache downloads. * Fix zstd not working for windows on gnu tar in issues. * Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable `SEGMENT_DOWNLOAD_TIMEOUT_MINS`. Default is 10 minutes. * New actions are available for granular control over caches - [restore](restore/action.yml) and [save](save/action.yml). * Support cross-os caching as an opt-in feature. See [Cross OS caching](./tips-and-workarounds.md#cross-os-cache) for more info. * Added option to fail job on cache miss. See [Exit workflow on cache miss](./restore/README.md#exit-workflow-on-cache-miss) for more info. * Fix zstd not being used after zstd version upgrade to 1.5.4 on hosted runners * Added option to lookup cache without downloading it. * Reduced segment size to 128MB and segment timeout to 10 minutes to fail fast in case the cache download is stuck. See the [v2 README.md](https://github.com/actions/cache/blob/v2/README.md) for older updates. ## Usage ### Pre-requisites Create a workflow `.yml` file in your repository's `.github/workflows` directory. An [example workflow](#example-cache-workflow) is available below. For more information, see the GitHub Help Documentation for [Creating a workflow file](https://help.github.com/en/articles/configuring-a-workflow#creating-a-workflow-file). If you are using this inside a container, a POSIX-compliant `tar` needs to be included and accessible from the execution path. If you are using a `self-hosted` Windows runner, `GNU tar` and `zstd` are required for [Cross-OS caching](https://github.com/actions/cache/blob/main/tips-and-workarounds.md#cross-os-cache) to work. They are also recommended to be installed in general so the performance is on par with `hosted` Windows runners. ### Inputs * `key` - An explicit key for a cache entry. See [creating a cache key](#creating-a-cache-key). * `path` - A list of files, directories, and wildcard patterns to cache and restore. See [`@actions/glob`](https://github.com/actions/toolkit/tree/main/packages/glob) for supported patterns. * `restore-keys` - An ordered list of prefix-matched keys to use for restoring stale cache if no cache hit occurred for key. * `enableCrossOsArchive` - An optional boolean when enabled, allows Windows runners to save or restore caches that can be restored or saved respectively on other platforms. Default: `false` * `fail-on-cache-miss` - Fail the workflow if cache entry is not found. Default: `false` * `lookup-only` - If true, only checks if cache entry exists and skips download. Does not change save cache behavior. Default: `false` #### Environment Variables * `SEGMENT_DOWNLOAD_TIMEOUT_MINS` - Segment download timeout (in minutes, default `10`) to abort download of the segment if not completed in the defined number of minutes. [Read more](https://github.com/actions/cache/blob/main/tips-and-workarounds.md#cache-segment-restore-timeout) ### Outputs * `cache-hit` - A boolean value to indicate an exact match was found for the key. > **Note** `cache-hit` will only be set to `true` when a cache hit occurs for the exact `key` match. For a partial key match via `restore-keys` or a cache miss, it will be set to `false`. See [Skipping steps based on cache-hit](#skipping-steps-based-on-cache-hit) for info on using this output ### Cache scopes The cache is scoped to the key, [version](#cache-version), and branch. The default branch cache is available to other branches. See [Matching a cache key](https://help.github.com/en/actions/configuring-and-managing-workflows/caching-dependencies-to-speed-up-workflows#matching-a-cache-key) for more info. ### Example cache workflow #### Restoring and saving cache using a single action ```yaml name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: ${{ runner.os }}-primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: /generate-primes.sh -d prime-numbers - name: Use Prime Numbers run: /primes.sh -d prime-numbers ``` The `cache` action provides a `cache-hit` output which is set to `true` when the cache is restored using the primary `key` and `false` when the cache is restored using `restore-keys` or no cache is restored. #### Using a combination of restore and save actions ```yaml name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore cached Primes id: cache-primes-restore uses: actions/cache/restore@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-primes . . //intermediate workflow steps . - name: Save Primes id: cache-primes-save uses: actions/cache/save@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ steps.cache-primes-restore.outputs.cache-primary-key }} ``` > **Note** > You must use the `cache` or `restore` action in your workflow before you need to use the files that might be restored from the cache. If the provided `key` matches an existing cache, a new cache is not created and if the provided `key` doesn't match an existing cache, a new cache is automatically created provided the job completes successfully. ## Caching Strategies With the introduction of the `restore` and `save` actions, a lot of caching use cases can now be achieved. Please see the [caching strategies](./caching-strategies.md) document for understanding how you can use the actions strategically to achieve the desired goal. ## Implementation Examples Every programming language and framework has its own way of caching. See [Examples](examples.md) for a list of `actions/cache` implementations for use with: * [C# - NuGet](./examples.md#c---nuget) * [Clojure - Lein Deps](./examples.md#clojure---lein-deps) * [D - DUB](./examples.md#d---dub) * [Deno](./examples.md#deno) * [Elixir - Mix](./examples.md#elixir---mix) * [Go - Modules](./examples.md#go---modules) * [Haskell - Cabal](./examples.md#haskell---cabal) * [Haskell - Stack](./examples.md#haskell---stack) * [Java - Gradle](./examples.md#java---gradle) * [Java - Maven](./examples.md#java---maven) * [Node - npm](./examples.md#node---npm) * [Node - Lerna](./examples.md#node---lerna) * [Node - Yarn](./examples.md#node---yarn) * [OCaml/Reason - esy](./examples.md#ocamlreason---esy) * [PHP - Composer](./examples.md#php---composer) * [Python - pip](./examples.md#python---pip) * [Python - pipenv](./examples.md#python---pipenv) * [R - renv](./examples.md#r---renv) * [Ruby - Bundler](./examples.md#ruby---bundler) * [Rust - Cargo](./examples.md#rust---cargo) * [Scala - SBT](./examples.md#scala---sbt) * [Swift, Objective-C - Carthage](./examples.md#swift-objective-c---carthage) * [Swift, Objective-C - CocoaPods](./examples.md#swift-objective-c---cocoapods) * [Swift - Swift Package Manager](./examples.md#swift---swift-package-manager) * [Swift - Mint](./examples.md#swift---mint) ## Creating a cache key A cache key can include any of the contexts, functions, literals, and operators supported by GitHub Actions. For example, using the [`hashFiles`](https://docs.github.com/en/actions/learn-github-actions/expressions#hashfiles) function allows you to create a new cache when dependencies change. ```yaml - uses: actions/cache@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} ``` Additionally, you can use arbitrary command output in a cache key, such as a date or software version: ```yaml # http://man7.org/linux/man-pages/man1/date.1.html - name: Get Date id: get-date run: | echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - uses: actions/cache@v4 with: path: path/to/dependencies key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} ``` See [Using contexts to create cache keys](https://help.github.com/en/actions/configuring-and-managing-workflows/caching-dependencies-to-speed-up-workflows#using-contexts-to-create-cache-keys) ## Cache Limits A repository can have up to 10GB of caches. Once the 10GB limit is reached, older caches will be evicted based on when the cache was last accessed. Caches that are not accessed within the last week will also be evicted. ## Skipping steps based on cache-hit Using the `cache-hit` output, subsequent steps (such as install or build) can be skipped when a cache hit occurs on the key. It is recommended to install missing/updated dependencies in case of a partial key match when the key is dependent on the `hash` of the package file. Example: ```yaml steps: - uses: actions/checkout@v3 - uses: actions/cache@v4 id: cache with: path: path/to/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Install Dependencies if: steps.cache.outputs.cache-hit != 'true' run: /install.sh ``` > **Note** The `id` defined in `actions/cache` must match the `id` in the `if` statement (i.e. `steps.[ID].outputs.cache-hit`) ## Cache Version Cache version is a hash [generated](https://github.com/actions/toolkit/blob/500d0b42fee2552ae9eeb5933091fe2fbf14e72d/packages/cache/src/internal/cacheHttpClient.ts#L73-L90) for a combination of compression tool used (Gzip, Zstd, etc. based on the runner OS) and the `path` of directories being cached. If two caches have different versions, they are identified as unique caches while matching. This, for example, means that a cache created on a `windows-latest` runner can't be restored on `ubuntu-latest` as cache `Version`s are different. > Pro tip: The [list caches](https://docs.github.com/en/rest/actions/cache#list-github-actions-caches-for-a-repository) API can be used to get the version of a cache. This can be helpful to troubleshoot cache miss due to version.
Example The workflow will create 3 unique caches with same keys. Ubuntu and windows runners will use different compression technique and hence create two different caches. And `build-linux` will create two different caches as the `paths` are different. ```yaml jobs: build-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: ./generate-primes.sh -d prime-numbers - name: Cache Numbers id: cache-numbers uses: actions/cache@v4 with: path: numbers key: primes - name: Generate Numbers if: steps.cache-numbers.outputs.cache-hit != 'true' run: ./generate-primes.sh -d numbers build-windows: runs-on: windows-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: ./generate-primes -d prime-numbers ```
## Known practices and workarounds There are a number of community practices/workarounds to fulfill specific requirements. You may choose to use them if they suit your use case. Note these are not necessarily the only solution or even a recommended solution. * [Cache segment restore timeout](./tips-and-workarounds.md#cache-segment-restore-timeout) * [Update a cache](./tips-and-workarounds.md#update-a-cache) * [Use cache across feature branches](./tips-and-workarounds.md#use-cache-across-feature-branches) * [Cross OS cache](./tips-and-workarounds.md#cross-os-cache) * [Force deletion of caches overriding default cache eviction policy](./tips-and-workarounds.md#force-deletion-of-caches-overriding-default-cache-eviction-policy) ### Windows environment variables Please note that Windows environment variables (like `%LocalAppData%`) will NOT be expanded by this action. Instead, prefer using `~` in your paths which will expand to the HOME directory. For example, instead of `%LocalAppData%`, use `~\AppData\Local`. For a list of supported default environment variables, see the [Learn GitHub Actions: Variables](https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables) page. ## Contributing We would love for you to contribute to `actions/cache`. Pull requests are welcome! Please see the [CONTRIBUTING.md](CONTRIBUTING.md) for more information. ## License The scripts and documentation in this project are released under the [MIT License](LICENSE) On Wed, Mar 20, 2024 at 12:58 PM tshingombe fiston wrote: Skip to content actions / cache Insights Owner avatar cache Public actions/cache Use this GitHub action with your project Add this Action to an existing workflow or create a new one t Add file Folders and files Name Last commit message Last commit date Latest commit bethanyj28bethanyj28 Merge pull request #1327 from cdce8p/fix-fail-on-cache-miss 0c45773 · History .devcontainer GA for granular cache (#1035) .github add release action .licenses/npm licensed cache .vscode Initial commit __tests__ Add test case for process exit dist Fix fail-on-cache-miss not working restore Update "only-" actions to node20 save Update "only-" actions to node20 src Fix fail-on-cache-miss not working .eslintrc.json Update eslint and prettier .gitattributes Fix line ending for windows test .gitignore test e2e during workflow (#185) .licensed.yml Add Licensed to attribute third party licenses .prettierrc.json Initial commit CODE_OF_CONDUCT.md Fix repo name in contact email (#41) CONTRIBUTING.md Update contributing.md LICENSE Initial commit README.md Update examples RELEASES.md Bump version action.yml Merge branch 'main' into main caching-strategies.md Fixing paths for OSes (#1101) examples.md Clarify that macos-latest image has bazelisk jest.config.js Resolve dependabot alerts package-lock.json Bump version package.json Bump version tips-and-workarounds.md Merge branch 'main' into pdotl-patch-1 tsconfig.json Initial commit Repository files navigation Security Cache action This action allows caching dependencies and build outputs to improve workflow execution time. Two other actions are available in addition to the primary cache action: Restore action Save action Tests Documentation See "Caching dependencies to speed up workflows". What's New v4 Updated to node 20 Added a save-always flag to save the cache even if a prior step fails v3 Added support for caching in GHES 3.5+. Fixed download issue for files > 2GB during restore. Updated the minimum runner version support from node 12 -> node 16. Fixed avoiding empty cache save when no files are available for caching. Fixed tar creation error while trying to create tar with path as ~/ home folder on ubuntu-latest. Fixed zstd failing on amazon linux 2.0 runners. Fixed cache not working with github workspace directory or current directory. Fixed the download stuck problem by introducing a timeout of 1 hour for cache downloads. Fix zstd not working for windows on gnu tar in issues. Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable SEGMENT_DOWNLOAD_TIMEOUT_MINS. Default is 10 minutes. New actions are available for granular control over caches - restore and save. Support cross-os caching as an opt-in feature. See Cross OS caching for more info. Added option to fail job on cache miss. See Exit workflow on cache miss for more info. Fix zstd not being used after zstd version upgrade to 1.5.4 on hosted runners Added option to lookup cache without downloading it. Reduced segment size to 128MB and segment timeout to 10 minutes to fail fast in case the cache download is stuck. See the v2 README.md for older updates. Usage Pre-requisites Create a workflow .yml file in your repository's .github/workflows directory. An example workflow is available below. For more information, see the GitHub Help Documentation for Creating a workflow file. If you are using this inside a container, a POSIX-compliant tar needs to be included and accessible from the execution path. If you are using a self-hosted Windows runner, GNU tar and zstd are required for Cross-OS caching to work. They are also recommended to be installed in general so the performance is on par with hosted Windows runners. Inputs key - An explicit key for a cache entry. See creating a cache key. path - A list of files, directories, and wildcard patterns to cache and restore. See @actions/glob for supported patterns. restore-keys - An ordered list of prefix-matched keys to use for restoring stale cache if no cache hit occurred for key. enableCrossOsArchive - An optional boolean when enabled, allows Windows runners to save or restore caches that can be restored or saved respectively on other platforms. Default: false fail-on-cache-miss - Fail the workflow if cache entry is not found. Default: false lookup-only - If true, only checks if cache entry exists and skips download. Does not change save cache behavior. Default: false Environment Variables SEGMENT_DOWNLOAD_TIMEOUT_MINS - Segment download timeout (in minutes, default 10) to abort download of the segment if not completed in the defined number of minutes. Read more Outputs cache-hit - A boolean value to indicate an exact match was found for the key. Note cache-hit will only be set to true when a cache hit occurs for the exact key match. For a partial key match via restore-keys or a cache miss, it will be set to false. See Skipping steps based on cache-hit for info on using this output Cache scopes The cache is scoped to the key, version, and branch. The default branch cache is available to other branches. See Matching a cache key for more info. Example cache workflow Restoring and saving cache using a single action name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: ${{ runner.os }}-primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: /generate-primes.sh -d prime-numbers - name: Use Prime Numbers run: /primes.sh -d prime-numbers The cache action provides a cache-hit output which is set to true when the cache is restored using the primary key and false when the cache is restored using restore-keys or no cache is restored. Using a combination of restore and save actions name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore cached Primes id: cache-primes-restore uses: actions/cache/restore@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-primes . . //intermediate workflow steps . - name: Save Primes id: cache-primes-save uses: actions/cache/save@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ steps.cache-primes-restore.outputs.cache-primary-key }} Note You must use the cache or restore action in your workflow before you need to use the files that might be restored from the cache. If the provided key matches an existing cache, a new cache is not created and if the provided key doesn't match an existing cache, a new cache is automatically created provided the job completes successfully. Caching Strategies With the introduction of the restore and save actions, a lot of caching use cases can now be achieved. Please see the caching strategies document for understanding how you can use the actions strategically to achieve the desired goal. Implementation Examples Every programming language and framework has its own way of caching. See Examples for a list of actions/cache implementations for use with: C# - NuGet Clojure - Lein Deps D - DUB Deno Elixir - Mix Go - Modules Haskell - Cabal Haskell - Stack Java - Gradle Java - Maven Node - npm Node - Lerna Node - Yarn OCaml/Reason - esy PHP - Composer Python - pip Python - pipenv R - renv Ruby - Bundler Rust - Cargo Scala - SBT Swift, Objective-C - Carthage Swift, Objective-C - CocoaPods Swift - Swift Package Manager Swift - Mint Creating a cache key A cache key can include any of the contexts, functions, literals, and operators supported by GitHub Actions. For example, using the hashFiles function allows you to create a new cache when dependencies change. - uses: actions/cache@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} Additionally, you can use arbitrary command output in a cache key, such as a date or software version: # http://man7.org/linux/man-pages/man1/date.1.html - name: Get Date id: get-date run: | echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - uses: actions/cache@v4 with: path: path/to/dependencies key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} See Using contexts to create cache keys Cache Limits A repository can have up to 10GB of caches. Once the 10GB limit is reached, older caches will be evicted based on when the cache was last accessed. Caches that are not accessed within the last week will also be evicted. Skipping steps based on cache-hit Using the cache-hit output, subsequent steps (such as install or build) can be skipped when a cache hit occurs on the key. It is recommended to install missing/updated dependencies in case of a partial key match when the key is dependent on the hash of the package file. Example: steps: - uses: actions/checkout@v3 - uses: actions/cache@v4 id: cache with: path: path/to/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Install Dependencies if: steps.cache.outputs.cache-hit != 'true' run: /install.sh Note The id defined in actions/cache must match the id in the if statement (i.e. steps.[ID].outputs.cache-hit) Cache Version Cache version is a hash generated for a combination of compression tool used (Gzip, Zstd, etc. based on the runner OS) and the path of directories being cached. If two caches have different versions, they are identified as unique caches while matching. This, for example, means that a cache created on a windows-latest runner can't be restored on ubuntu-latest as cache Versions are different. Pro tip: The list caches API can be used to get the version of a cache. This can be helpful to troubleshoot cache miss due to version. Example The workflow will create 3 unique caches with same keys. Ubuntu and windows runners will use different compression technique and hence create two different caches. And `build-linux` will create two different caches as the `paths` are different. Known practices and workarounds There are a number of community practices/workarounds to fulfill specific requirements. You may choose to use them if they suit your use case. Note these are not necessarily the only solution or even a recommended solution. Cache segment restore timeout Update a cache Use cache across feature branches Cross OS cache Force deletion of caches overriding default cache eviction policy Windows environment variables Please note that Windows environment variables (like %LocalAppData%) will NOT be expanded by this action. Instead, prefer using ~ in your paths which will expand to the HOME directory. For example, instead of %LocalAppData%, use ~\AppData\Local. For a list of supported default environment variables, see the Learn GitHub Actions: Variables page. Contributing We would love for you to contribute to actions/cache. Pull requests are welcome! Please see the CONTRIBUTING.md for more information. License The scripts and documentation in this project are released under the MIT License About Cache dependencies and build outputs in GitHub Actions Resources Readme License MIT license Code of conduct Code of conduct Security policy Security policy Activity Custom properties Stars 4.2k stars Watchers 85 watching Forks 1.1k forks Report repository Releases 51 v4.0.2 Latest Mar 19, 2024 + 50 releases Packages No packages published Used by 905k @remomax @linhh-phv @thibs12 @NeptuneX-Aggregator @tnikFi @skyrych @VincentKobz @kanandev2024 + 905,172 Contributors 131 @vsvipul @kotewar @joshmgross @dhadka @lvpx @Phantsure @aiqiaoy @bishal-pdMSFT @takost @bethanyj28 @t-dedah @magnetikonline @ashwinsangem @konradpabjan + 117 contributors Deployments 2 releaseNewActionVersion March 19, 2024 17:55 Languages JavaScript 0.9% Footer © 2024 GitHub, Inc. Footer navigation Terms Privacy Security Status Docs Contact actions/cache: Cache dependencies and build outputs in GitHub Actions Code Issues 92 Pull requests 41 Discussions Actions Security README Code of conduct MIT license TypeScript 97.9% Shell 1.2% On Wed, Mar 20, 2024 at 12:55 PM tshingombe fiston wrote: Skip to content Marketplace Actions Cache GitHub Action Cache v4.0.2 Latest version Cache action This action allows caching dependencies and build outputs to improve workflow execution time. Two other actions are available in addition to the primary cache action: Restore action Save action Tests Documentation See "Caching dependencies to speed up workflows". What's New v4 Updated to node 20 Added a save-always flag to save the cache even if a prior step fails v3 Added support for caching in GHES 3.5+. Fixed download issue for files > 2GB during restore. Updated the minimum runner version support from node 12 -> node 16. Fixed avoiding empty cache save when no files are available for caching. Fixed tar creation error while trying to create tar with path as ~/ home folder on ubuntu-latest. Fixed zstd failing on amazon linux 2.0 runners. Fixed cache not working with github workspace directory or current directory. Fixed the download stuck problem by introducing a timeout of 1 hour for cache downloads. Fix zstd not working for windows on gnu tar in issues. Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable SEGMENT_DOWNLOAD_TIMEOUT_MINS. Default is 10 minutes. New actions are available for granular control over caches - restore and save. Support cross-os caching as an opt-in feature. See Cross OS caching for more info. Added option to fail job on cache miss. See Exit workflow on cache miss for more info. Fix zstd not being used after zstd version upgrade to 1.5.4 on hosted runners Added option to lookup cache without downloading it. Reduced segment size to 128MB and segment timeout to 10 minutes to fail fast in case the cache download is stuck. See the v2 README.md for older updates. Usage Pre-requisites Create a workflow .yml file in your repository's .github/workflows directory. An example workflow is available below. For more information, see the GitHub Help Documentation for Creating a workflow file. If you are using this inside a container, a POSIX-compliant tar needs to be included and accessible from the execution path. If you are using a self-hosted Windows runner, GNU tar and zstd are required for Cross-OS caching to work. They are also recommended to be installed in general so the performance is on par with hosted Windows runners. Inputs key - An explicit key for a cache entry. See creating a cache key. path - A list of files, directories, and wildcard patterns to cache and restore. See @actions/glob for supported patterns. restore-keys - An ordered list of prefix-matched keys to use for restoring stale cache if no cache hit occurred for key. enableCrossOsArchive - An optional boolean when enabled, allows Windows runners to save or restore caches that can be restored or saved respectively on other platforms. Default: false fail-on-cache-miss - Fail the workflow if cache entry is not found. Default: false lookup-only - If true, only checks if cache entry exists and skips download. Does not change save cache behavior. Default: false Environment Variables SEGMENT_DOWNLOAD_TIMEOUT_MINS - Segment download timeout (in minutes, default 10) to abort download of the segment if not completed in the defined number of minutes. Read more Outputs cache-hit - A boolean value to indicate an exact match was found for the key. Note cache-hit will only be set to true when a cache hit occurs for the exact key match. For a partial key match via restore-keys or a cache miss, it will be set to false. See Skipping steps based on cache-hit for info on using this output Cache scopes The cache is scoped to the key, version, and branch. The default branch cache is available to other branches. See Matching a cache key for more info. Example cache workflow Restoring and saving cache using a single action name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache Primes id: cache-primes uses: actions/cache@v4 with: path: prime-numbers key: ${{ runner.os }}-primes - name: Generate Prime Numbers if: steps.cache-primes.outputs.cache-hit != 'true' run: /generate-primes.sh -d prime-numbers - name: Use Prime Numbers run: /primes.sh -d prime-numbers The cache action provides a cache-hit output which is set to true when the cache is restored using the primary key and false when the cache is restored using restore-keys or no cache is restored. Using a combination of restore and save actions name: Caching Primes on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore cached Primes id: cache-primes-restore uses: actions/cache/restore@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-primes . . //intermediate workflow steps . - name: Save Primes id: cache-primes-save uses: actions/cache/save@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ steps.cache-primes-restore.outputs.cache-primary-key }} Note You must use the cache or restore action in your workflow before you need to use the files that might be restored from the cache. If the provided key matches an existing cache, a new cache is not created and if the provided key doesn't match an existing cache, a new cache is automatically created provided the job completes successfully. Caching Strategies With the introduction of the restore and save actions, a lot of caching use cases can now be achieved. Please see the caching strategies document for understanding how you can use the actions strategically to achieve the desired goal. Implementation Examples Every programming language and framework has its own way of caching. See Examples for a list of actions/cache implementations for use with: C# - NuGet Clojure - Lein Deps D - DUB Deno Elixir - Mix Go - Modules Haskell - Cabal Haskell - Stack Java - Gradle Java - Maven Node - npm Node - Lerna Node - Yarn OCaml/Reason - esy PHP - Composer Python - pip Python - pipenv R - renv Ruby - Bundler Rust - Cargo Scala - SBT Swift, Objective-C - Carthage Swift, Objective-C - CocoaPods Swift - Swift Package Manager Swift - Mint Creating a cache key A cache key can include any of the contexts, functions, literals, and operators supported by GitHub Actions. For example, using the hashFiles function allows you to create a new cache when dependencies change. - uses: actions/cache@v4 with: path: | path/to/dependencies some/other/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} Additionally, you can use arbitrary command output in a cache key, such as a date or software version: # http://man7.org/linux/man-pages/man1/date.1.html - name: Get Date id: get-date run: | echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - uses: actions/cache@v4 with: path: path/to/dependencies key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} See Using contexts to create cache keys Cache Limits A repository can have up to 10GB of caches. Once the 10GB limit is reached, older caches will be evicted based on when the cache was last accessed. Caches that are not accessed within the last week will also be evicted. Skipping steps based on cache-hit Using the cache-hit output, subsequent steps (such as install or build) can be skipped when a cache hit occurs on the key. It is recommended to install missing/updated dependencies in case of a partial key match when the key is dependent on the hash of the package file. Example: steps: - uses: actions/checkout@v3 - uses: actions/cache@v4 id: cache with: path: path/to/dependencies key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Install Dependencies if: steps.cache.outputs.cache-hit != 'true' run: /install.sh Note The id defined in actions/cache must match the id in the if statement (i.e. steps.[ID].outputs.cache-hit) Cache Version Cache version is a hash generated for a combination of compression tool used (Gzip, Zstd, etc. based on the runner OS) and the path of directories being cached. If two caches have different versions, they are identified as unique caches while matching. This, for example, means that a cache created on a windows-latest runner can't be restored on ubuntu-latest as cache Versions are different. Pro tip: The list caches API can be used to get the version of a cache. This can be helpful to troubleshoot cache miss due to version. Example The workflow will create 3 unique caches with same keys. Ubuntu and windows runners will use different compression technique and hence create two different caches. And `build-linux` will create two different caches as the `paths` are different. Known practices and workarounds There are a number of community practices/workarounds to fulfill specific requirements. You may choose to use them if they suit your use case. Note these are not necessarily the only solution or even a recommended solution. Cache segment restore timeout Update a cache Use cache across feature branches Cross OS cache Force deletion of caches overriding default cache eviction policy Windows environment variables Please note that Windows environment variables (like %LocalAppData%) will NOT be expanded by this action. Instead, prefer using ~ in your paths which will expand to the HOME directory. For example, instead of %LocalAppData%, use ~\AppData\Local. For a list of supported default environment variables, see the Learn GitHub Actions: Variables page. Contributing We would love for you to contribute to actions/cache. Pull requests are welcome! Please see the CONTRIBUTING.md for more information. License The scripts and documentation in this project are released under the MIT License Verified creator GitHub has verified that this action was created by actions. Learn more about verified Actions. Stars Contributors @vsvipul @kotewar @joshmgross @dhadka @lvpx @Phantsure @aiqiaoy @bishal-pdMSFT @takost @bethanyj28 @t-dedah @magnetikonline Categories Dependency management Utilities Links actions/cache Open issues 92 Pull requests 41 Report abuse Footer © 2024 GitHub, Inc. Footer navigation Terms Privacy Security Status Docs Contact On Wed, Mar 20, 2024 at 12:54 PM tshingombe fiston wrote: Skip to content tshingombe-engineering / engin-data-exam-tshingomb Settings Creating a new workflow file in engin-data-exam-tshingomb Breadcrumbs engin-data-exam-tshingomb /.github /workflows / in main Indent mode Indent sizeLine wrap mode Editing blank.yml file contents 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 # This is a basic workflow to help you get started with Actions name: CI # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: [ "main" ] pull_request: branches: [ "main" ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 # Runs a single command using the runners shell - name: Run a one-line script run: echo Hello, world! # Runs a set of commands using the runners shell - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project. Use Control + Shift + m to toggle the tab key moving focus. Alternatively, use esc then tab to move to the next interactive element on the page. Use Control + Space to trigger autocomplete in most situations. Help Panel navigation Marketplace Documentation / Cache Cache By actions v4.0.2 4.2k Cache artifacts like dependencies and build outputs to improve workflow execution time View full Marketplace listing Installation Copy and paste the following snippet into your .yml file. Version: v4.0.2 - name: Cache uses: actions/cache@v4.0.2 with: # A list of files, directories, and wildcard patterns to cache and restore path: # An explicit key for restoring and saving the cache key: # An ordered list of keys to use for restoring stale cache if no cache hit occurred for key. Note `cache-hit` returns false in this case. restore-keys: # optional # The chunk size used to split up large files during upload, in bytes upload-chunk-size: # optional # An optional boolean when enabled, allows windows runners to save or restore caches that can be restored or saved respectively on other platforms enableCrossOsArchive: # optional, default is false # Fail the workflow if cache entry is not found fail-on-cache-miss: # optional, default is false # Check if a cache entry exists for the given input(s) (key, restore-keys) without downloading the cache lookup-only: # optional, default is false # Run the post step to save the cache even if another step before fails save-always: # optional, default is false Code Issues Pull requests Actions Projects Security Insights On Wed, Mar 20, 2024 at 12:53 PM tshingombe fiston wrote: # This is a basic workflow to help you get started with Actions name: CI # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: [ "main" ] pull_request: branches: [ "main" ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 # Runs a single command using the runners shell - name: Run a one-line script run: echo Hello, world! # Runs a set of commands using the runners shell - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project. On Tue, Mar 19, 2024 at 9:49 PM tshingombe wrote: GitHub [t5h2i0tadi/engineering-tshing-binair-archfile-] CodeQL workflow run CodeQL: No jobs were run View workflow run — You are receiving this because you are subscribed to this thread. Manage your GitHub Actions notifications GitHub, Inc. ・88 Colin P Kelly Jr Street ・San Francisco, CA 94107 ... [Message clipped] View entire message tshingombe fiston 1:03 PM (2 minutes ago) to t5h2i0tadi/engineering-tshing-binair-archfile- Skip to content actions / cache Insights Actions: actions/cache Actions Caches Showing caches from all workflows. Learn more about managing caches. 16 caches codeql-trap-1-2.16.4-javascript-0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 87 MB cached March 19, 2024 06:34 main Last used March 19, 2024 08:56 node-cache-Windows-npm-406f79a9138a96d98486e00bf340617c9a5915a3f7107682f8ac70d9540a19d5 29 MB cached March 19, 2024 06:33 main Last used March 19, 2024 06:33 node-cache-macOS-npm-406f79a9138a96d98486e00bf340617c9a5915a3f7107682f8ac70d9540a19d5 29 MB cached March 19, 2024 06:32 main Last used March 19, 2024 06:32 node-cache-Linux-npm-406f79a9138a96d98486e00bf340617c9a5915a3f7107682f8ac70d9540a19d5 29 MB cached March 19, 2024 06:32 main Last used March 19, 2024 06:32 test-Windows-8343936870 367 Bytes cached March 19, 2024 06:32 main Last used March 19, 2024 06:32 test-proxy-8343936870 286 Bytes cached March 19, 2024 06:32 main Last used March 19, 2024 06:32 test-macOS-8343936870 382 Bytes cached March 19, 2024 06:32 main Last used March 19, 2024 06:32 test-Linux-8343936870 368 Bytes cached March 19, 2024 06:32 main Last used March 19, 2024 06:32 node-cache-Windows-npm-406f79a9138a96d98486e00bf340617c9a5915a3f7107682f8ac70d9540a19d5 29 MB cached March 19, 2024 01:31 refs/pull/1327/merge Last used March 19, 2024 01:31 node-cache-macOS-npm-406f79a9138a96d98486e00bf340617c9a5915a3f7107682f8ac70d9540a19d5 29 MB cached March 19, 2024 01:30 refs/pull/1327/merge Last used March 19, 2024 01:30 codeql-trap-1-2.16.4-javascript-ab5e6d0c87105b4c9c2047343972218f562e4319 87 MB cached March 17, 2024 12:02 main Last used March 19, 2024 01:30 node-cache-Linux-npm-406f79a9138a96d98486e00bf340617c9a5915a3f7107682f8ac70d9540a19d5 29 MB cached March 19, 2024 01:30 refs/pull/1327/merge Last used March 19, 2024 01:30 test-Windows-8339832816 336 Bytes cached March 19, 2024 01:30 refs/pull/1327/merge Last used March 19, 2024 01:30 test-proxy-8339832816 284 Bytes cached March 19, 2024 01:30 refs/pull/1327/merge Last used March 19, 2024 01:30 test-Linux-8339832816 391 Bytes cached March 19, 2024 01:30 refs/pull/1327/merge Last used March 19, 2024 01:30 test-macOS-8339832816 415 Bytes cached March 19, 2024 01:30 refs/pull/1327/merge Last used March 19, 2024 01:30 Footer © 2024 GitHub, Inc. Footer navigation Terms Privacy Security Status Docs Contact Workflow runs · actions/cache Code Issues 92 Pull requests 41 Discussions Actions Security Workflows Management ... [Message clipped] View entire message