mirror of
				https://gitea.com/actions/cache.git
				synced 2025-11-02 07:47:08 +00:00 
			
		
		
		
	Compare commits
	
		
			28 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					6849a64899 | ||
| 
						 | 
					5a1720c49e | ||
| 
						 | 
					d9fef48d24 | ||
| 
						 | 
					a50e8d027b | ||
| 
						 | 
					acc9ae5c14 | ||
| 
						 | 
					1ea5f18c31 | ||
| 
						 | 
					cc679ff3ba | ||
| 
						 | 
					366d43d6f8 | ||
| 
						 | 
					02bf31969b | ||
| 
						 | 
					6f6220be5a | ||
| 
						 | 
					ebdd24ede1 | ||
| 
						 | 
					255c8ff306 | ||
| 
						 | 
					010f24cd9d | ||
| 
						 | 
					d6151ba7db | ||
| 
						 | 
					4ca7071576 | ||
| 
						 | 
					5d692d65f4 | ||
| 
						 | 
					3aef79d3a3 | ||
| 
						 | 
					aa55e5f344 | ||
| 
						 | 
					772385291f | ||
| 
						 | 
					e5dc90df92 | ||
| 
						 | 
					8585f2ac5c | ||
| 
						 | 
					9803087a86 | ||
| 
						 | 
					e7e2547a88 | ||
| 
						 | 
					71d826cc33 | ||
| 
						 | 
					25942a73ac | ||
| 
						 | 
					d73025053b | ||
| 
						 | 
					8469c94c6a | ||
| 
						 | 
					3624ceb22c | 
							
								
								
									
										22
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
# To get started with Dependabot version updates, you'll need to specify which
 | 
			
		||||
# package ecosystems to update and where the package manifests are located.
 | 
			
		||||
# Please see the documentation for all configuration options:
 | 
			
		||||
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
 | 
			
		||||
 | 
			
		||||
version: 2
 | 
			
		||||
updates:
 | 
			
		||||
  - package-ecosystem: "github-actions"
 | 
			
		||||
    directory: "/"
 | 
			
		||||
    schedule:
 | 
			
		||||
      interval: "weekly"
 | 
			
		||||
    groups:
 | 
			
		||||
      minor-actions-dependencies:
 | 
			
		||||
        update-types: [minor, patch]
 | 
			
		||||
  
 | 
			
		||||
  - package-ecosystem: "npm"
 | 
			
		||||
    directory: "/"
 | 
			
		||||
    schedule:
 | 
			
		||||
      interval: "daily" 
 | 
			
		||||
    allow:
 | 
			
		||||
    - dependency-type: direct
 | 
			
		||||
    - dependency-type: production
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/workflows/close-inactive-issues.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/close-inactive-issues.yml
									
									
									
									
										vendored
									
									
								
							@@ -10,7 +10,7 @@ jobs:
 | 
			
		||||
      issues: write
 | 
			
		||||
      pull-requests: write
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/stale@v3
 | 
			
		||||
      - uses: actions/stale@v9
 | 
			
		||||
        with:
 | 
			
		||||
          days-before-issue-stale: 200
 | 
			
		||||
          days-before-issue-close: 5
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							@@ -17,11 +17,11 @@ jobs:
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
    - name: Checkout repository
 | 
			
		||||
      uses: actions/checkout@v3
 | 
			
		||||
      uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
    # Initializes the CodeQL tools for scanning.
 | 
			
		||||
    - name: Initialize CodeQL
 | 
			
		||||
      uses: github/codeql-action/init@v2
 | 
			
		||||
      uses: github/codeql-action/init@v3
 | 
			
		||||
      # Override language selection by uncommenting this and choosing your languages
 | 
			
		||||
      # with:
 | 
			
		||||
      #   languages: go, javascript, csharp, python, cpp, java, ruby
 | 
			
		||||
@@ -29,7 +29,7 @@ jobs:
 | 
			
		||||
    # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
 | 
			
		||||
    # If this step fails, then you should remove it and run the build manually (see below).
 | 
			
		||||
    - name: Autobuild
 | 
			
		||||
      uses: github/codeql-action/autobuild@v2
 | 
			
		||||
      uses: github/codeql-action/autobuild@v3
 | 
			
		||||
 | 
			
		||||
    # ℹ️ Command-line programs to run using the OS shell.
 | 
			
		||||
    # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
 | 
			
		||||
@@ -43,4 +43,4 @@ jobs:
 | 
			
		||||
    #     make release
 | 
			
		||||
 | 
			
		||||
    - name: Perform CodeQL Analysis
 | 
			
		||||
      uses: github/codeql-action/analyze@v2
 | 
			
		||||
      uses: github/codeql-action/analyze@v3
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							@@ -20,9 +20,9 @@ jobs:
 | 
			
		||||
    runs-on: ${{ matrix.os }}
 | 
			
		||||
    steps:
 | 
			
		||||
    - name: Checkout
 | 
			
		||||
      uses: actions/checkout@v3
 | 
			
		||||
      uses: actions/checkout@v4
 | 
			
		||||
    - name: Setup Node.js 20.x
 | 
			
		||||
      uses: actions/setup-node@v3
 | 
			
		||||
      uses: actions/setup-node@v4
 | 
			
		||||
      with:
 | 
			
		||||
        node-version: 20.x
 | 
			
		||||
        cache: npm
 | 
			
		||||
@@ -43,7 +43,7 @@ jobs:
 | 
			
		||||
    runs-on: ${{ matrix.os }}
 | 
			
		||||
    steps:
 | 
			
		||||
    - name: Checkout
 | 
			
		||||
      uses: actions/checkout@v3
 | 
			
		||||
      uses: actions/checkout@v4
 | 
			
		||||
    - name: Generate files in working directory
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: __tests__/create-cache-files.sh ${{ runner.os }} test-cache
 | 
			
		||||
@@ -66,7 +66,7 @@ jobs:
 | 
			
		||||
    runs-on: ${{ matrix.os }}
 | 
			
		||||
    steps:
 | 
			
		||||
    - name: Checkout
 | 
			
		||||
      uses: actions/checkout@v3
 | 
			
		||||
      uses: actions/checkout@v4
 | 
			
		||||
    - name: Restore cache
 | 
			
		||||
      uses: ./
 | 
			
		||||
      with:
 | 
			
		||||
@@ -96,7 +96,7 @@ jobs:
 | 
			
		||||
      https_proxy: http://squid-proxy:3128
 | 
			
		||||
    steps:
 | 
			
		||||
    - name: Checkout
 | 
			
		||||
      uses: actions/checkout@v3
 | 
			
		||||
      uses: actions/checkout@v4
 | 
			
		||||
    - name: Generate files
 | 
			
		||||
      run: __tests__/create-cache-files.sh proxy test-cache
 | 
			
		||||
    - name: Save cache
 | 
			
		||||
@@ -119,7 +119,7 @@ jobs:
 | 
			
		||||
      https_proxy: http://squid-proxy:3128
 | 
			
		||||
    steps:
 | 
			
		||||
    - name: Checkout
 | 
			
		||||
      uses: actions/checkout@v3
 | 
			
		||||
      uses: actions/checkout@v4
 | 
			
		||||
    - name: Restore cache
 | 
			
		||||
      uses: ./
 | 
			
		||||
      with:
 | 
			
		||||
 
 | 
			
		||||
@@ -64,9 +64,9 @@ If you are using a `self-hosted` Windows runner, `GNU tar` and `zstd` are requir
 | 
			
		||||
 | 
			
		||||
### 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`.
 | 
			
		||||
* `cache-hit` - A string value to indicate an exact match was found for the key.
 | 
			
		||||
  * If there's a cache hit, this will be 'true' or 'false' to indicate if there's an exact match for `key`.
 | 
			
		||||
  * If there's a cache miss, this will be an empty string.
 | 
			
		||||
 | 
			
		||||
See [Skipping steps based on cache-hit](#skipping-steps-based-on-cache-hit) for info on using this output
 | 
			
		||||
 | 
			
		||||
@@ -157,6 +157,7 @@ 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:
 | 
			
		||||
 | 
			
		||||
* [Bun](./examples.md#bun)
 | 
			
		||||
* [C# - NuGet](./examples.md#c---nuget)
 | 
			
		||||
* [Clojure - Lein Deps](./examples.md#clojure---lein-deps)
 | 
			
		||||
* [D - DUB](./examples.md#d---dub)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								RELEASES.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								RELEASES.md
									
									
									
									
									
								
							@@ -1,6 +1,16 @@
 | 
			
		||||
# Releases
 | 
			
		||||
 | 
			
		||||
### 4.1.2
 | 
			
		||||
 | 
			
		||||
- Add GitHub Enterprise Cloud instances hostname filters to inform API endpoint choices - [#1474](https://github.com/actions/cache/pull/1474)
 | 
			
		||||
- Security fix: Bump braces from 3.0.2 to 3.0.3 - [#1475](https://github.com/actions/cache/pull/1475)
 | 
			
		||||
 | 
			
		||||
### 4.1.1
 | 
			
		||||
 | 
			
		||||
- Restore original behavior of `cache-hit` output - [#1467](https://github.com/actions/cache/pull/1467)
 | 
			
		||||
 | 
			
		||||
### 4.1.0
 | 
			
		||||
 | 
			
		||||
- Ensure `cache-hit` output is set when a cache is missed - [#1404](https://github.com/actions/cache/pull/1404)
 | 
			
		||||
- Deprecate `save-always` input - [#1452](https://github.com/actions/cache/pull/1452)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,17 +8,26 @@ import * as testUtils from "../src/utils/testUtils";
 | 
			
		||||
jest.mock("@actions/core");
 | 
			
		||||
jest.mock("@actions/cache");
 | 
			
		||||
 | 
			
		||||
let pristineEnv: NodeJS.ProcessEnv;
 | 
			
		||||
 | 
			
		||||
beforeAll(() => {
 | 
			
		||||
    pristineEnv = process.env;
 | 
			
		||||
    jest.spyOn(core, "getInput").mockImplementation((name, options) => {
 | 
			
		||||
        return jest.requireActual("@actions/core").getInput(name, options);
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
afterEach(() => {
 | 
			
		||||
beforeEach(() => {
 | 
			
		||||
    jest.resetModules();
 | 
			
		||||
    process.env = pristineEnv;
 | 
			
		||||
    delete process.env[Events.Key];
 | 
			
		||||
    delete process.env[RefKey];
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
afterAll(() => {
 | 
			
		||||
    process.env = pristineEnv;
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test("isGhes returns true if server url is not github.com", () => {
 | 
			
		||||
    try {
 | 
			
		||||
        process.env["GITHUB_SERVER_URL"] = "http://example.com";
 | 
			
		||||
@@ -231,3 +240,28 @@ test("isCacheFeatureAvailable for ac disabled on dotcom", () => {
 | 
			
		||||
        delete process.env["GITHUB_SERVER_URL"];
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test("isGhes returns false when the GITHUB_SERVER_URL environment variable is not defined", async () => {
 | 
			
		||||
    delete process.env["GITHUB_SERVER_URL"];
 | 
			
		||||
    expect(actionUtils.isGhes()).toBeFalsy();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test("isGhes returns false when the GITHUB_SERVER_URL environment variable is set to github.com", async () => {
 | 
			
		||||
    process.env["GITHUB_SERVER_URL"] = "https://github.com";
 | 
			
		||||
    expect(actionUtils.isGhes()).toBeFalsy();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test("isGhes returns false when the GITHUB_SERVER_URL environment variable is set to a GitHub Enterprise Cloud-style URL", async () => {
 | 
			
		||||
    process.env["GITHUB_SERVER_URL"] = "https://contoso.ghe.com";
 | 
			
		||||
    expect(actionUtils.isGhes()).toBeFalsy();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test("isGhes returns false when the GITHUB_SERVER_URL environment variable has a .localhost suffix", async () => {
 | 
			
		||||
    process.env["GITHUB_SERVER_URL"] = "https://mock-github.localhost";
 | 
			
		||||
    expect(actionUtils.isGhes()).toBeFalsy();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test("isGhes returns true when the GITHUB_SERVER_URL environment variable is set to some other URL", async () => {
 | 
			
		||||
    process.env["GITHUB_SERVER_URL"] = "https://src.onpremise.fabrikam.com";
 | 
			
		||||
    expect(actionUtils.isGhes()).toBeTruthy();
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -260,7 +260,7 @@ test("Fail restore when fail on cache miss is enabled and primary + restore keys
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
 | 
			
		||||
    expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
 | 
			
		||||
    expect(setCacheHitOutputMock).toHaveBeenCalledTimes(0);
 | 
			
		||||
 | 
			
		||||
    expect(failedMock).toHaveBeenCalledWith(
 | 
			
		||||
        `Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${key}`
 | 
			
		||||
 
 | 
			
		||||
@@ -86,8 +86,7 @@ test("restore with no cache found", async () => {
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    expect(outputMock).toHaveBeenCalledWith("cache-primary-key", key);
 | 
			
		||||
    expect(outputMock).toHaveBeenCalledWith("cache-hit", "false");
 | 
			
		||||
    expect(outputMock).toHaveBeenCalledTimes(2);
 | 
			
		||||
    expect(outputMock).toHaveBeenCalledTimes(1);
 | 
			
		||||
    expect(failedMock).toHaveBeenCalledTimes(0);
 | 
			
		||||
 | 
			
		||||
    expect(infoMock).toHaveBeenCalledWith(
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								dist/restore-only/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								dist/restore-only/index.js
									
									
									
									
										vendored
									
									
								
							@@ -59415,7 +59415,8 @@ function restoreImpl(stateProvider, earlyExit) {
 | 
			
		||||
            const lookupOnly = utils.getInputAsBool(constants_1.Inputs.LookupOnly);
 | 
			
		||||
            const cacheKey = yield cache.restoreCache(cachePaths, primaryKey, restoreKeys, { lookupOnly: lookupOnly }, enableCrossOsArchive);
 | 
			
		||||
            if (!cacheKey) {
 | 
			
		||||
                core.setOutput(constants_1.Outputs.CacheHit, false.toString());
 | 
			
		||||
                // `cache-hit` is intentionally not set to `false` here to preserve existing behavior
 | 
			
		||||
                // See https://github.com/actions/cache/issues/1466
 | 
			
		||||
                if (failOnCacheMiss) {
 | 
			
		||||
                    throw new Error(`Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`);
 | 
			
		||||
                }
 | 
			
		||||
@@ -59585,7 +59586,11 @@ const core = __importStar(__nccwpck_require__(2186));
 | 
			
		||||
const constants_1 = __nccwpck_require__(9042);
 | 
			
		||||
function isGhes() {
 | 
			
		||||
    const ghUrl = new URL(process.env["GITHUB_SERVER_URL"] || "https://github.com");
 | 
			
		||||
    return ghUrl.hostname.toUpperCase() !== "GITHUB.COM";
 | 
			
		||||
    const hostname = ghUrl.hostname.trimEnd().toUpperCase();
 | 
			
		||||
    const isGitHubHost = hostname === "GITHUB.COM";
 | 
			
		||||
    const isGitHubEnterpriseCloudHost = hostname.endsWith(".GHE.COM");
 | 
			
		||||
    const isLocalHost = hostname.endsWith(".LOCALHOST");
 | 
			
		||||
    return !isGitHubHost && !isGitHubEnterpriseCloudHost && !isLocalHost;
 | 
			
		||||
}
 | 
			
		||||
exports.isGhes = isGhes;
 | 
			
		||||
function isExactKeyMatch(key, cacheKey) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								dist/restore/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								dist/restore/index.js
									
									
									
									
										vendored
									
									
								
							@@ -59415,7 +59415,8 @@ function restoreImpl(stateProvider, earlyExit) {
 | 
			
		||||
            const lookupOnly = utils.getInputAsBool(constants_1.Inputs.LookupOnly);
 | 
			
		||||
            const cacheKey = yield cache.restoreCache(cachePaths, primaryKey, restoreKeys, { lookupOnly: lookupOnly }, enableCrossOsArchive);
 | 
			
		||||
            if (!cacheKey) {
 | 
			
		||||
                core.setOutput(constants_1.Outputs.CacheHit, false.toString());
 | 
			
		||||
                // `cache-hit` is intentionally not set to `false` here to preserve existing behavior
 | 
			
		||||
                // See https://github.com/actions/cache/issues/1466
 | 
			
		||||
                if (failOnCacheMiss) {
 | 
			
		||||
                    throw new Error(`Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`);
 | 
			
		||||
                }
 | 
			
		||||
@@ -59585,7 +59586,11 @@ const core = __importStar(__nccwpck_require__(2186));
 | 
			
		||||
const constants_1 = __nccwpck_require__(9042);
 | 
			
		||||
function isGhes() {
 | 
			
		||||
    const ghUrl = new URL(process.env["GITHUB_SERVER_URL"] || "https://github.com");
 | 
			
		||||
    return ghUrl.hostname.toUpperCase() !== "GITHUB.COM";
 | 
			
		||||
    const hostname = ghUrl.hostname.trimEnd().toUpperCase();
 | 
			
		||||
    const isGitHubHost = hostname === "GITHUB.COM";
 | 
			
		||||
    const isGitHubEnterpriseCloudHost = hostname.endsWith(".GHE.COM");
 | 
			
		||||
    const isLocalHost = hostname.endsWith(".LOCALHOST");
 | 
			
		||||
    return !isGitHubHost && !isGitHubEnterpriseCloudHost && !isLocalHost;
 | 
			
		||||
}
 | 
			
		||||
exports.isGhes = isGhes;
 | 
			
		||||
function isExactKeyMatch(key, cacheKey) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								dist/save-only/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								dist/save-only/index.js
									
									
									
									
										vendored
									
									
								
							@@ -59599,7 +59599,11 @@ const core = __importStar(__nccwpck_require__(2186));
 | 
			
		||||
const constants_1 = __nccwpck_require__(9042);
 | 
			
		||||
function isGhes() {
 | 
			
		||||
    const ghUrl = new URL(process.env["GITHUB_SERVER_URL"] || "https://github.com");
 | 
			
		||||
    return ghUrl.hostname.toUpperCase() !== "GITHUB.COM";
 | 
			
		||||
    const hostname = ghUrl.hostname.trimEnd().toUpperCase();
 | 
			
		||||
    const isGitHubHost = hostname === "GITHUB.COM";
 | 
			
		||||
    const isGitHubEnterpriseCloudHost = hostname.endsWith(".GHE.COM");
 | 
			
		||||
    const isLocalHost = hostname.endsWith(".LOCALHOST");
 | 
			
		||||
    return !isGitHubHost && !isGitHubEnterpriseCloudHost && !isLocalHost;
 | 
			
		||||
}
 | 
			
		||||
exports.isGhes = isGhes;
 | 
			
		||||
function isExactKeyMatch(key, cacheKey) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								dist/save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								dist/save/index.js
									
									
									
									
										vendored
									
									
								
							@@ -59599,7 +59599,11 @@ const core = __importStar(__nccwpck_require__(2186));
 | 
			
		||||
const constants_1 = __nccwpck_require__(9042);
 | 
			
		||||
function isGhes() {
 | 
			
		||||
    const ghUrl = new URL(process.env["GITHUB_SERVER_URL"] || "https://github.com");
 | 
			
		||||
    return ghUrl.hostname.toUpperCase() !== "GITHUB.COM";
 | 
			
		||||
    const hostname = ghUrl.hostname.trimEnd().toUpperCase();
 | 
			
		||||
    const isGitHubHost = hostname === "GITHUB.COM";
 | 
			
		||||
    const isGitHubEnterpriseCloudHost = hostname.endsWith(".GHE.COM");
 | 
			
		||||
    const isLocalHost = hostname.endsWith(".LOCALHOST");
 | 
			
		||||
    return !isGitHubHost && !isGitHubEnterpriseCloudHost && !isLocalHost;
 | 
			
		||||
}
 | 
			
		||||
exports.isGhes = isGhes;
 | 
			
		||||
function isExactKeyMatch(key, cacheKey) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										21
									
								
								examples.md
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								examples.md
									
									
									
									
									
								
							@@ -1,5 +1,6 @@
 | 
			
		||||
# Examples
 | 
			
		||||
 | 
			
		||||
- [Bun](#bun)
 | 
			
		||||
- [C# - NuGet](#c---nuget)
 | 
			
		||||
- [Clojure - Lein Deps](#clojure---lein-deps)
 | 
			
		||||
- [D - DUB](#d---dub)
 | 
			
		||||
@@ -41,6 +42,26 @@
 | 
			
		||||
- [Swift - Mint](#swift---mint)
 | 
			
		||||
- [* - Bazel](#---bazel)
 | 
			
		||||
 | 
			
		||||
## Bun
 | 
			
		||||
 | 
			
		||||
```yaml
 | 
			
		||||
- uses: actions/cache@v4
 | 
			
		||||
  with:
 | 
			
		||||
    path: |
 | 
			
		||||
      ~/.bun/install/cache
 | 
			
		||||
    key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Windows
 | 
			
		||||
 | 
			
		||||
```yaml
 | 
			
		||||
- uses: actions/cache@v4
 | 
			
		||||
  with:
 | 
			
		||||
    path: |
 | 
			
		||||
      ~\.bun
 | 
			
		||||
    key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## C# - NuGet
 | 
			
		||||
 | 
			
		||||
Using [NuGet lock files](https://docs.microsoft.com/nuget/consume-packages/package-references-in-project-files#locking-dependencies):
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										32
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										32
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -1,12 +1,12 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "cache",
 | 
			
		||||
  "version": "4.1.0",
 | 
			
		||||
  "version": "4.1.1",
 | 
			
		||||
  "lockfileVersion": 2,
 | 
			
		||||
  "requires": true,
 | 
			
		||||
  "packages": {
 | 
			
		||||
    "": {
 | 
			
		||||
      "name": "cache",
 | 
			
		||||
      "version": "4.1.0",
 | 
			
		||||
      "version": "4.1.1",
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@actions/cache": "^3.2.3",
 | 
			
		||||
@@ -3521,12 +3521,12 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/braces": {
 | 
			
		||||
      "version": "3.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
 | 
			
		||||
      "version": "3.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "fill-range": "^7.0.1"
 | 
			
		||||
        "fill-range": "^7.1.1"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=8"
 | 
			
		||||
@@ -4622,9 +4622,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/fill-range": {
 | 
			
		||||
      "version": "7.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
 | 
			
		||||
      "version": "7.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "to-regex-range": "^5.0.1"
 | 
			
		||||
@@ -12302,12 +12302,12 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "braces": {
 | 
			
		||||
      "version": "3.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
 | 
			
		||||
      "version": "3.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "fill-range": "^7.0.1"
 | 
			
		||||
        "fill-range": "^7.1.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "browserslist": {
 | 
			
		||||
@@ -13127,9 +13127,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "fill-range": {
 | 
			
		||||
      "version": "7.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
 | 
			
		||||
      "version": "7.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "to-regex-range": "^5.0.1"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "cache",
 | 
			
		||||
  "version": "4.1.0",
 | 
			
		||||
  "version": "4.1.2",
 | 
			
		||||
  "private": true,
 | 
			
		||||
  "description": "Cache dependencies and build outputs",
 | 
			
		||||
  "main": "dist/restore/index.js",
 | 
			
		||||
@@ -48,4 +48,4 @@
 | 
			
		||||
    "ts-jest": "^28.0.8",
 | 
			
		||||
    "typescript": "^4.9.3"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
@@ -51,7 +51,9 @@ export async function restoreImpl(
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        if (!cacheKey) {
 | 
			
		||||
            core.setOutput(Outputs.CacheHit, false.toString());
 | 
			
		||||
            // `cache-hit` is intentionally not set to `false` here to preserve existing behavior
 | 
			
		||||
            // See https://github.com/actions/cache/issues/1466
 | 
			
		||||
 | 
			
		||||
            if (failOnCacheMiss) {
 | 
			
		||||
                throw new Error(
 | 
			
		||||
                    `Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,13 @@ export function isGhes(): boolean {
 | 
			
		||||
    const ghUrl = new URL(
 | 
			
		||||
        process.env["GITHUB_SERVER_URL"] || "https://github.com"
 | 
			
		||||
    );
 | 
			
		||||
    return ghUrl.hostname.toUpperCase() !== "GITHUB.COM";
 | 
			
		||||
 | 
			
		||||
    const hostname = ghUrl.hostname.trimEnd().toUpperCase();
 | 
			
		||||
    const isGitHubHost = hostname === "GITHUB.COM";
 | 
			
		||||
    const isGitHubEnterpriseCloudHost = hostname.endsWith(".GHE.COM");
 | 
			
		||||
    const isLocalHost = hostname.endsWith(".LOCALHOST");
 | 
			
		||||
 | 
			
		||||
    return !isGitHubHost && !isGitHubEnterpriseCloudHost && !isLocalHost;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function isExactKeyMatch(key: string, cacheKey?: string): boolean {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user