1
0
Fork 0
mirror of https://code.forgejo.org/actions/cache.git synced 2024-11-24 12:39:16 +01:00

Merge branch 'main' into dependabot/npm_and_yarn/lodash-4.17.21

This commit is contained in:
thesbv 2021-09-22 17:44:42 +02:00
commit ce4cef9db8
12 changed files with 182 additions and 75 deletions

52
.github/workflows/check-dist.yml vendored Normal file
View file

@ -0,0 +1,52 @@
# `dist/index.js` is a special file in Actions.
# When you reference an action with `uses:` in a workflow,
# `index.js` is the code that will run.
# For our project, we generate this file through a build process
# from other source files.
# We need to make sure the checked-in `index.js` actually matches what we expect it to be.
name: Check dist/
on:
push:
branches:
- main
paths-ignore:
- '**.md'
pull_request:
paths-ignore:
- '**.md'
workflow_dispatch:
jobs:
check-dist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set Node.js 12.x
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Install dependencies
run: npm ci
- name: Rebuild the dist/ directory
run: npm run build
- name: Compare the expected and actual dist/ directories
run: |
if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then
echo "Detected uncommitted changes after build. See status below:"
git diff
exit 1
fi
id: diff
# If index.js was different than expected, upload the expected version as an artifact
- uses: actions/upload-artifact@v2
if: ${{ failure() && steps.diff.conclusion == 'failure' }}
with:
name: dist
path: dist/

View file

@ -1,8 +1,12 @@
name: Licensed name: Licensed
on: on:
push: {branches: main} push:
pull_request: {branches: main} branches:
- main
pull_request:
branches:
- main
jobs: jobs:
test: test:

View file

@ -47,17 +47,6 @@ jobs:
run: npm run lint run: npm run lint
- name: Build & Test - name: Build & Test
run: npm run test run: npm run test
- name: Ensure dist/ folder is up-to-date
if: ${{ runner.os == 'Linux' }}
shell: bash
run: |
npm run build
if [ "$(git diff --ignore-space-at-eol | wc -l)" -gt "0" ]; then
echo "Detected uncommitted changes after build. See status below:"
git diff
exit 1
fi
# End to end save and restore # End to end save and restore
test-save: test-save:

View file

@ -68,7 +68,7 @@ test("restore on GHES should no-op", async () => {
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1); expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
expect(setCacheHitOutputMock).toHaveBeenCalledWith(false); expect(setCacheHitOutputMock).toHaveBeenCalledWith(false);
expect(logWarningMock).toHaveBeenCalledWith( expect(logWarningMock).toHaveBeenCalledWith(
"Cache action is not supported on GHES" "Cache action is not supported on GHES. See https://github.com/actions/cache/issues/505 for more details"
); );
}); });

View file

@ -111,7 +111,7 @@ test("save on GHES should no-op", async () => {
expect(saveCacheMock).toHaveBeenCalledTimes(0); expect(saveCacheMock).toHaveBeenCalledTimes(0);
expect(logWarningMock).toHaveBeenCalledWith( expect(logWarningMock).toHaveBeenCalledWith(
"Cache action is not supported on GHES" "Cache action is not supported on GHES. See https://github.com/actions/cache/issues/505 for more details"
); );
}); });

View file

@ -49218,7 +49218,7 @@ function run() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
try { try {
if (utils.isGhes()) { if (utils.isGhes()) {
utils.logWarning("Cache action is not supported on GHES"); utils.logWarning("Cache action is not supported on GHES. See https://github.com/actions/cache/issues/505 for more details");
utils.setCacheHitOutput(false); utils.setCacheHitOutput(false);
return; return;
} }

6
dist/save/index.js vendored
View file

@ -47154,11 +47154,15 @@ const cache = __importStar(__webpack_require__(692));
const core = __importStar(__webpack_require__(470)); const core = __importStar(__webpack_require__(470));
const constants_1 = __webpack_require__(196); const constants_1 = __webpack_require__(196);
const utils = __importStar(__webpack_require__(443)); const utils = __importStar(__webpack_require__(443));
// Catch and log any unhandled exceptions. These exceptions can leak out of the uploadChunk method in
// @actions/toolkit when a failed upload closes the file descriptor causing any in-process reads to
// throw an uncaught exception. Instead of failing this action, just warn.
process.on("uncaughtException", e => utils.logWarning(e.message));
function run() { function run() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
try { try {
if (utils.isGhes()) { if (utils.isGhes()) {
utils.logWarning("Cache action is not supported on GHES"); utils.logWarning("Cache action is not supported on GHES. See https://github.com/actions/cache/issues/505 for more details");
return; return;
} }
if (!utils.isValidEvent()) { if (!utils.isValidEvent()) {

View file

@ -1,16 +1,20 @@
# Examples # Examples
- [Examples](#examples)
- [C# - NuGet](#c---nuget) - [C# - NuGet](#c---nuget)
- [D - DUB](#d---dub) - [D - DUB](#d---dub)
- [POSIX](#posix)
- [Windows](#windows)
- [Elixir - Mix](#elixir---mix) - [Elixir - Mix](#elixir---mix)
- [Go - Modules](#go---modules) - [Go - Modules](#go---modules)
- [Linux](#linux)
- [macOS](#macos)
- [Windows](#windows-1)
- [Haskell - Cabal](#haskell---cabal) - [Haskell - Cabal](#haskell---cabal)
- [Java - Gradle](#java---gradle) - [Java - Gradle](#java---gradle)
- [Java - Maven](#java---maven) - [Java - Maven](#java---maven)
- [Node - npm](#node---npm) - [Node - npm](#node---npm)
- [macOS and Ubuntu](#macos-and-ubuntu) - [macOS and Ubuntu](#macos-and-ubuntu)
- [Windows](#windows) - [Windows](#windows-2)
- [Using multiple systems and `npm config`](#using-multiple-systems-and-npm-config) - [Using multiple systems and `npm config`](#using-multiple-systems-and-npm-config)
- [Node - Lerna](#node---lerna) - [Node - Lerna](#node---lerna)
- [Node - Yarn](#node---yarn) - [Node - Yarn](#node---yarn)
@ -19,13 +23,13 @@
- [PHP - Composer](#php---composer) - [PHP - Composer](#php---composer)
- [Python - pip](#python---pip) - [Python - pip](#python---pip)
- [Simple example](#simple-example) - [Simple example](#simple-example)
- [Multiple OSes in a workflow](#multiple-oss-in-a-workflow) - [Multiple OS's in a workflow](#multiple-oss-in-a-workflow)
- [Multiple OS's in a workflow with a matrix](#multiple-oss-in-a-workflow-with-a-matrix)
- [Using pip to get cache location](#using-pip-to-get-cache-location) - [Using pip to get cache location](#using-pip-to-get-cache-location)
- [Using a script to get cache location](#using-a-script-to-get-cache-location)
- [Python - pipenv](#python---pipenv) - [Python - pipenv](#python---pipenv)
- [R - renv](#r---renv) - [R - renv](#r---renv)
- [Simple example](#simple-example-1) - [Simple example](#simple-example-1)
- [Multiple OSes in a workflow](#multiple-oss-in-a-workflow-1) - [Multiple OS's in a workflow](#multiple-oss-in-a-workflow-1)
- [Ruby - Bundler](#ruby---bundler) - [Ruby - Bundler](#ruby---bundler)
- [Rust - Cargo](#rust---cargo) - [Rust - Cargo](#rust---cargo)
- [Scala - SBT](#scala---sbt) - [Scala - SBT](#scala---sbt)
@ -34,6 +38,7 @@
- [Swift - Swift Package Manager](#swift---swift-package-manager) - [Swift - Swift Package Manager](#swift---swift-package-manager)
## C# - NuGet ## C# - NuGet
Using [NuGet lock files](https://docs.microsoft.com/nuget/consume-packages/package-references-in-project-files#locking-dependencies): Using [NuGet lock files](https://docs.microsoft.com/nuget/consume-packages/package-references-in-project-files#locking-dependencies):
```yaml ```yaml
@ -47,6 +52,7 @@ Using [NuGet lock files](https://docs.microsoft.com/nuget/consume-packages/packa
Depending on the environment, huge packages might be pre-installed in the global cache folder. Depending on the environment, huge packages might be pre-installed in the global cache folder.
With `actions/cache@v2` you can now exclude unwanted packages with [exclude pattern](https://github.com/actions/toolkit/tree/main/packages/glob#exclude-patterns) With `actions/cache@v2` you can now exclude unwanted packages with [exclude pattern](https://github.com/actions/toolkit/tree/main/packages/glob#exclude-patterns)
```yaml ```yaml
- uses: actions/cache@v2 - uses: actions/cache@v2
with: with:
@ -111,10 +117,40 @@ steps:
## Go - Modules ## Go - Modules
### Linux
```yaml ```yaml
- uses: actions/cache@v2 - uses: actions/cache@v2
with: with:
path: ~/go/pkg/mod path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
```
### macOS
```yaml
- uses: actions/cache@v2
with:
path: |
~/Library/Caches/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
```
### Windows
```yaml
- uses: actions/cache@v2
with:
path: |
%LocalAppData%\go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: | restore-keys: |
${{ runner.os }}-go- ${{ runner.os }}-go-
@ -137,6 +173,8 @@ We cache the elements of the Cabal store separately, as the entirety of `~/.caba
## Java - Gradle ## Java - Gradle
>Note: Ensure no Gradle daemons are running anymore when your workflow completes. Creating the cache package might fail due to locks being held by Gradle. Refer to the [Gradle Daemon documentation](https://docs.gradle.org/current/userguide/gradle_daemon.html) on how to disable or stop the Gradle Daemons.
```yaml ```yaml
- uses: actions/cache@v2 - uses: actions/cache@v2
with: with:
@ -239,8 +277,8 @@ The yarn cache directory will depend on your operating system and version of `ya
${{ runner.os }}-yarn- ${{ runner.os }}-yarn-
``` ```
## Node - Yarn 2 ## Node - Yarn 2
The yarn 2 cache directory will depend on your config. See https://yarnpkg.com/configuration/yarnrc#cacheFolder for more info. The yarn 2 cache directory will depend on your config. See https://yarnpkg.com/configuration/yarnrc#cacheFolder for more info.
```yaml ```yaml
@ -258,6 +296,7 @@ The yarn 2 cache directory will depend on your config. See https://yarnpkg.com/c
``` ```
## OCaml/Reason - esy ## OCaml/Reason - esy
Esy allows you to export built dependencies and import pre-built dependencies. Esy allows you to export built dependencies and import pre-built dependencies.
```yaml ```yaml
- name: Restore Cache - name: Restore Cache
@ -284,7 +323,6 @@ Esy allows you to export built dependencies and import pre-built dependencies.
if: steps.restore-cache.outputs.cache-hit != 'true' if: steps.restore-cache.outputs.cache-hit != 'true'
``` ```
## PHP - Composer ## PHP - Composer
```yaml ```yaml
@ -305,11 +343,13 @@ Esy allows you to export built dependencies and import pre-built dependencies.
For pip, the cache directory will vary by OS. See https://pip.pypa.io/en/stable/reference/pip_install/#caching For pip, the cache directory will vary by OS. See https://pip.pypa.io/en/stable/reference/pip_install/#caching
Locations: Locations:
- Ubuntu: `~/.cache/pip` - Ubuntu: `~/.cache/pip`
- Windows: `~\AppData\Local\pip\Cache` - Windows: `~\AppData\Local\pip\Cache`
- macOS: `~/Library/Caches/pip` - macOS: `~/Library/Caches/pip`
### Simple example ### Simple example
```yaml ```yaml
- uses: actions/cache@v2 - uses: actions/cache@v2
with: with:
@ -395,12 +435,17 @@ jobs:
## Python - pipenv ## Python - pipenv
```yaml ```yaml
- name: Set up Python
# The actions/cache step below uses this id to get the exact python version
id: setup-python
uses: actions/setup-python@v2
- uses: actions/cache@v2 - uses: actions/cache@v2
with: with:
path: ~/.local/share/virtualenvs path: ~/.local/share/virtualenvs
key: ${{ runner.os }}-pipenv-${{ hashFiles('Pipfile.lock') }} key: ${{ runner.os }}-python-${{ steps.setup-python.outputs.python-version }}-pipenv-${{ hashFiles('Pipfile.lock') }}
restore-keys: |
${{ runner.os }}-pipenv-
``` ```
## R - renv ## R - renv
@ -408,11 +453,13 @@ jobs:
For renv, the cache directory will vary by OS. Look at https://rstudio.github.io/renv/articles/renv.html#cache For renv, the cache directory will vary by OS. Look at https://rstudio.github.io/renv/articles/renv.html#cache
Locations: Locations:
- Ubuntu: `~/.local/share/renv` - Ubuntu: `~/.local/share/renv`
- macOS: `~/Library/Application Support/renv` - macOS: `~/Library/Application Support/renv`
- Windows: `%LOCALAPPDATA%/renv` - Windows: `%LOCALAPPDATA%/renv`
### Simple example ### Simple example
```yaml ```yaml
- uses: actions/cache@v2 - uses: actions/cache@v2
with: with:
@ -474,9 +521,11 @@ whenever possible:
- uses: actions/cache@v2 - uses: actions/cache@v2
with: with:
path: | path: |
~/.cargo/registry ~/.cargo/bin/
~/.cargo/git ~/.cargo/registry/index/
target ~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
``` ```

8
package-lock.json generated
View file

@ -1,6 +1,6 @@
{ {
"name": "cache", "name": "cache",
"version": "2.1.5", "version": "2.1.6",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -6473,9 +6473,9 @@
} }
}, },
"ws": { "ws": {
"version": "5.2.2", "version": "5.2.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz",
"integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==",
"dev": true, "dev": true,
"requires": { "requires": {
"async-limiter": "~1.0.0" "async-limiter": "~1.0.0"

View file

@ -1,6 +1,6 @@
{ {
"name": "cache", "name": "cache",
"version": "2.1.5", "version": "2.1.6",
"private": true, "private": true,
"description": "Cache dependencies and build outputs", "description": "Cache dependencies and build outputs",
"main": "dist/restore/index.js", "main": "dist/restore/index.js",

View file

@ -7,7 +7,9 @@ import * as utils from "./utils/actionUtils";
async function run(): Promise<void> { async function run(): Promise<void> {
try { try {
if (utils.isGhes()) { if (utils.isGhes()) {
utils.logWarning("Cache action is not supported on GHES"); utils.logWarning(
"Cache action is not supported on GHES. See https://github.com/actions/cache/issues/505 for more details"
);
utils.setCacheHitOutput(false); utils.setCacheHitOutput(false);
return; return;
} }

View file

@ -4,10 +4,17 @@ import * as core from "@actions/core";
import { Events, Inputs, State } from "./constants"; import { Events, Inputs, State } from "./constants";
import * as utils from "./utils/actionUtils"; import * as utils from "./utils/actionUtils";
// Catch and log any unhandled exceptions. These exceptions can leak out of the uploadChunk method in
// @actions/toolkit when a failed upload closes the file descriptor causing any in-process reads to
// throw an uncaught exception. Instead of failing this action, just warn.
process.on("uncaughtException", e => utils.logWarning(e.message));
async function run(): Promise<void> { async function run(): Promise<void> {
try { try {
if (utils.isGhes()) { if (utils.isGhes()) {
utils.logWarning("Cache action is not supported on GHES"); utils.logWarning(
"Cache action is not supported on GHES. See https://github.com/actions/cache/issues/505 for more details"
);
return; return;
} }