Compare commits

...

19 Commits

Author SHA1 Message Date
8f35dac68e streamToBuffer logging 2023-03-23 22:26:57 +05:30
938b484130 add more logs 2023-03-23 16:59:47 +05:30
eff27e646c Add paralleExecute index to logs 2023-03-23 10:23:51 +05:30
04f198bf0b Merge pull request #1132 from vorburger/bazel-example
Bazel example (Take #2️⃣)
2023-03-21 12:15:41 +05:30
bd9b49b6c3 Merge branch 'main' into bazel-example 2023-03-21 12:10:48 +05:30
ea0503788c Merge pull request #1122 from actions/pdotl-patch-1
Update Cross-OS Caching tips
2023-03-17 13:09:54 +05:30
6a1a45d49b Merge branch 'main' into pdotl-patch-1 2023-03-17 12:28:02 +05:30
9c7b3e90bd Merge pull request #1131 from actions/bishal-pdMSFT-patch-4
Change two new actions mention as quoted text
2023-03-13 19:07:22 +05:30
8f2671f18e Merge branch 'main' into bazel-example 2023-03-13 06:27:49 -07:00
6f1f1e10f3 Clarify that macos-latest image has bazelisk 2023-03-13 14:26:31 +01:00
5cb4bb86c0 Merge branch 'main' into bishal-pdMSFT-patch-4 2023-03-13 18:54:39 +05:30
84995e0d91 Updated description of the lookup-only input for main action (#1130)
* Updated description of the lookup-only input for main action

* Update README.md

Co-authored-by: Bishal Prasad <bishal-pdmsft@github.com>

* Update README.md

---------

Co-authored-by: Bishal Prasad <bishal-pdmsft@github.com>
2023-03-13 16:43:13 +05:30
bf96a3f9d8 Merge branch 'main' into bishal-pdMSFT-patch-4 2023-03-13 15:41:54 +05:30
4b8460cbff Create separate Linux/macOS examples for Bazel 2023-03-13 10:52:18 +01:00
4e7c82221f Merge branch 'main' into bishal-pdMSFT-patch-4 2023-03-13 11:01:00 +05:30
ef11f54eee Fix example for Bazel 2023-03-11 19:54:11 +01:00
4b381be638 Add example for Bazel 2023-03-11 19:21:37 +01:00
7893481812 Change two new actions mention as quoted text 2023-03-11 21:32:05 +05:30
77eb7eb198 Update Cross-OS Caching tips 2023-02-23 11:59:31 +05:30
5 changed files with 54 additions and 12 deletions

View File

@ -2,11 +2,9 @@
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)
>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)
@ -54,7 +52,7 @@ If you are using a `self-hosted` Windows runner, `GNU tar` and `zstd` are requir
* `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` - Skip downloading cache. Only check if cache entry exists. 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

13
dist/restore/index.js vendored
View File

@ -28332,6 +28332,7 @@ class Batch {
}
this.concurrency = concurrency;
this.emitter = new events.EventEmitter();
this.index = 0;
}
/**
* Add a operation into queue.
@ -28385,6 +28386,8 @@ class Batch {
*
*/
parallelExecute() {
const local_index = this.index++;
console.log(`parallelExecute ${local_index} Active count: ${this.actives} Completed count: ${this.completed} total: ${this.operations.length}`);
if (this.state === BatchStates.Error) {
return;
}
@ -28395,6 +28398,7 @@ class Batch {
while (this.actives < this.concurrency) {
const operation = this.nextOperation();
if (operation) {
console.log(`parallelExecute ${local_index} starting execution of operation ${this.offset}. Active count: ${this.actives}`);
operation();
}
else {
@ -28833,15 +28837,21 @@ async function streamToBuffer(stream, buffer, offset, end, encoding) {
let pos = 0; // Position in stream
const count = end - offset; // Total amount of data needed in stream
return new Promise((resolve, reject) => {
const timeout = setTimeout(() => reject(new Error(`The operation cannot be completed in timeout.`)), REQUEST_TIMEOUT);
const timeout = setTimeout(() => {
console.log("Timeout triggered.");
return reject(new Error(`The operation cannot be completed in timeout.`));
}, REQUEST_TIMEOUT);
stream.on("readable", () => {
console.log("Entering readable");
if (pos >= count) {
clearTimeout(timeout);
console.log("Leaving readable");
resolve();
return;
}
let chunk = stream.read();
if (!chunk) {
console.log("Leaving readable");
return;
}
if (typeof chunk === "string") {
@ -28851,6 +28861,7 @@ async function streamToBuffer(stream, buffer, offset, end, encoding) {
const chunkLength = pos + chunk.length > count ? count - pos : chunk.length;
buffer.fill(chunk.slice(0, chunkLength), offset + pos, offset + pos + chunkLength);
pos += chunkLength;
console.log("Leaving readable");
});
stream.on("end", () => {
clearTimeout(timeout);

View File

@ -39,6 +39,7 @@
- [Swift, Objective-C - CocoaPods](#swift-objective-c---cocoapods)
- [Swift - Swift Package Manager](#swift---swift-package-manager)
- [Swift - Mint](#swift---mint)
- [* - Bazel](#---bazel)
## C# - NuGet
@ -657,3 +658,35 @@ steps:
restore-keys: |
${{ runner.os }}-mint-
```
## * - Bazel
[`bazelisk`](https://github.com/bazelbuild/bazelisk) does not have be to separately downloaded and installed because it's already included in GitHub's `ubuntu-latest` and `macos-latest` base images.
### Linux
```yaml
- name: Cache Bazel
uses: actions/cache@v3
with:
path: |
~/.cache/bazel
key: ${{ runner.os }}-bazel-${{ hashFiles('.bazelversion', '.bazelrc', 'WORKSPACE', 'WORKSPACE.bazel', 'MODULE.bazel') }}
restore-keys: |
${{ runner.os }}-bazel-
- run: bazelisk test //...
```
### macOS
```yaml
- name: Cache Bazel
uses: actions/cache@v3
with:
path: |
/private/var/tmp/_bazel_runner/
key: ${{ runner.os }}-bazel-${{ hashFiles('.bazelversion', '.bazelrc', 'WORKSPACE', 'WORKSPACE.bazel', 'MODULE.bazel') }}
restore-keys: |
${{ runner.os }}-bazel-
- run: bazelisk test //...
```

View File

@ -10,7 +10,7 @@ The restore action restores a cache. It works similarly to the `cache` action ex
* `path` - A list of files, directories, and wildcard patterns to 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.
* `fail-on-cache-miss` - Fail the workflow if cache entry is not found. Default: `false`
* `lookup-only` - Check if a cache entry exists for the given input(s) (key, restore-keys) without downloading the cache. Default: `false`
* `lookup-only` - If true, only checks if cache entry exists and skips download. Default: `false`
### Outputs

View File

@ -30,10 +30,10 @@ Reusing cache across feature branches is not allowed today to provide cache [iso
From `v3.2.3` cache is cross-os compatible when `enableCrossOsArchive` input is passed as true. This means that a cache created on `ubuntu-latest` or `mac-latest` can be used by `windows-latest` and vice versa, provided the workflow which runs on `windows-latest` have input `enableCrossOsArchive` as true. This is useful to cache dependencies which are independent of the runner platform. This will help reduce the consumption of the cache quota and help build for multiple platforms from the same cache. Things to keep in mind while using this feature:
- Only cache those files which are compatible across OSs.
- Caching symlinks might cause issues while restoration as they work differently on different OSs.
- Only cache files from within your github workspace directory.
- Avoid using directory pointers such as `${{ github.workspace }}` or `~` (home) which eventually evaluate to an absolute path and will not match across OSs.
- Only cache files that are compatible across OSs.
- Caching symlinks might cause issues while restoring them as they behave differently on different OSs.
- Be mindful when caching files from outside your github workspace directory as the directory is located at different places across OS.
- Avoid using directory pointers such as `${{ github.workspace }}` or `~` (home) which eventually evaluate to an absolute path that does not match across OSs.
## Force deletion of caches overriding default cache eviction policy