diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ae9bd3f..f3214c3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -561,6 +561,42 @@ jobs: env: CACHE_HIT: ${{ steps.restore.outputs.cache-hit }} + test-setup-cache-save-cache-env: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + persist-credentials: false + - name: Setup with cache + uses: ./ + with: + enable-cache: true + cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-save-cache-env + - run: uv sync + working-directory: __tests__/fixtures/uv-project + shell: bash + - run: echo "SETUP_UV_SAVE_CACHE=false" >> $GITHUB_ENV + test-restore-cache-save-cache-env: + runs-on: ubuntu-latest + needs: test-setup-cache-save-cache-env + steps: + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + persist-credentials: false + - name: Restore with cache + id: restore + uses: ./ + with: + enable-cache: true + cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-save-cache-env + - name: Cache was not hit + run: | + if [ "$CACHE_HIT" == "true" ]; then + exit 1 + fi + env: + CACHE_HIT: ${{ steps.restore.outputs.cache-hit }} + test-setup-cache-restore-cache-false: runs-on: ubuntu-latest steps: @@ -823,6 +859,8 @@ jobs: - test-restore-cache-save-cache-false - test-setup-cache-restore-cache-false - test-restore-cache-restore-cache-false + - test-setup-cache-save-cache-env + - test-restore-cache-save-cache-env - test-setup-cache-local - test-restore-cache-local - test-tilde-expansion-cache-local-path diff --git a/dist/save-cache/index.js b/dist/save-cache/index.js index 84b6bed..4fae6c3 100644 --- a/dist/save-cache/index.js +++ b/dist/save-cache/index.js @@ -90021,21 +90021,25 @@ const exec = __importStar(__nccwpck_require__(5236)); const restore_cache_1 = __nccwpck_require__(5391); const inputs_1 = __nccwpck_require__(9612); async function run() { + if (!inputs_1.enableCache) { + return; + } + if (!inputs_1.saveCache) { + core.info("save-cache is false. Skipping save cache step."); + return; + } + if (process.env.SETUP_UV_SAVE_CACHE === "false") { + core.info("Environment variable SETUP_UV_SAVE_CACHE is set to false. Skipping save cache step."); + return; + } try { - if (inputs_1.enableCache) { - if (inputs_1.saveCache) { - await saveCache(); - } - else { - core.info("save-cache is false. Skipping save cache step."); - } - // node will stay alive if any promises are not resolved, - // which is a possibility if HTTP requests are dangling - // due to retries or timeouts. We know that if we got here - // that all promises that we care about have successfully - // resolved, so simply exit with success. - process.exit(0); - } + await saveCache(); + // node will stay alive if any promises are not resolved, + // which is a possibility if HTTP requests are dangling + // due to retries or timeouts. We know that if we got here + // that all promises that we care about have successfully + // resolved, so simply exit with success. + process.exit(0); } catch (error) { const err = error; diff --git a/src/save-cache.ts b/src/save-cache.ts index d5b0ad5..bbf3263 100644 --- a/src/save-cache.ts +++ b/src/save-cache.ts @@ -15,20 +15,27 @@ import { } from "./utils/inputs"; export async function run(): Promise { + if (!enableCache) { + return; + } + if (!shouldSaveCache) { + core.info("save-cache is false. Skipping save cache step."); + return; + } + if (process.env.SETUP_UV_SAVE_CACHE === "false") { + core.info( + "Environment variable SETUP_UV_SAVE_CACHE is set to false. Skipping save cache step.", + ); + return; + } try { - if (enableCache) { - if (shouldSaveCache) { - await saveCache(); - } else { - core.info("save-cache is false. Skipping save cache step."); - } - // node will stay alive if any promises are not resolved, - // which is a possibility if HTTP requests are dangling - // due to retries or timeouts. We know that if we got here - // that all promises that we care about have successfully - // resolved, so simply exit with success. - process.exit(0); - } + await saveCache(); + // node will stay alive if any promises are not resolved, + // which is a possibility if HTTP requests are dangling + // due to retries or timeouts. We know that if we got here + // that all promises that we care about have successfully + // resolved, so simply exit with success. + process.exit(0); } catch (error) { const err = error as Error; core.setFailed(err.message);