mirror of
https://github.com/DeterminateSystems/magic-nix-cache-action.git
synced 2024-12-23 13:32:03 +01:00
Merge pull request #4 from DeterminateSystems/grahamc-patch-1
README updates
This commit is contained in:
commit
53b6b26c21
1 changed files with 61 additions and 18 deletions
79
README.md
79
README.md
|
@ -1,35 +1,78 @@
|
||||||
# The Magic Nix Cache Action
|
# Magic Nix Cache
|
||||||
|
|
||||||
Cut CI time by 50% or more by caching to GitHub Actions' cache, for free. No configuration required.
|
Save 30-50%+ of CI time without any effort or cost.
|
||||||
|
Use Magic Nix Cache, a totally free and zero-configuration binary cache for Nix on GitHub Actions.
|
||||||
|
|
||||||
<!--
|
Add our [GitHub Action][action] after installing Nix, in your workflow, like this:
|
||||||
cat action.yml| nix run nixpkgs#yq-go -- '[[ "Parameter", "Description", "Required", "Default" ], ["-", "-", "-", "-"]] + [.inputs | to_entries | sort_by(.key) | .[] | ["`" + .key + "`", .value.description, .value.required // "", .value.default // ""]] | map(join(" | ")) | .[] | "| " + . + " |"' -r
|
|
||||||
-->
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
name: Flake Check
|
- uses: DeterminateSystems/magic-nix-cache-action@main
|
||||||
|
```
|
||||||
|
|
||||||
|
See [Usage](#usage) for a detailed example.
|
||||||
|
|
||||||
|
## Why use the Magic Nix Cache?
|
||||||
|
|
||||||
|
Magic Nix Cache uses the GitHub Actions [built-in cache][ghacache] to share builds between Workflow runs, and has many advantages over alternatives.
|
||||||
|
|
||||||
|
1. Totally free: backed by GitHub Actions' cache, there is no additional service to pay for.
|
||||||
|
1. Zero configuration: add our action to your workflow.
|
||||||
|
That's it.
|
||||||
|
Everything built in your workflow will be cached.
|
||||||
|
1. No secrets: Forks and pull requests benefit from the cache, too.
|
||||||
|
1. Secure: Magic Nix Cache follows the [same semantics as the GitHub Actions cache][semantics], and malicious pull requests cannot pollute your project.
|
||||||
|
1. Private: The cache is stored in the GitHub Actions cache, not with an additional third party.
|
||||||
|
|
||||||
|
> **Note:** the Magic Nix Cache doesn't offer a publicly available cache.
|
||||||
|
> This means the cache is only usable in CI.
|
||||||
|
> [Zero to Nix][z2n] has an article on binary caching if you want to [share Nix builds][z2ncache] with users outside of CI.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Add it to your Linux and macOS GitHub Actions workflows, like this:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: CI
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
|
||||||
push:
|
push:
|
||||||
branches: [main]
|
pull_request:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
flake-check:
|
check:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- uses: DeterminateSystems/flake-checker-action@v4
|
- uses: DeterminateSystems/nix-installer-action@main
|
||||||
with:
|
- uses: DeterminateSystems/magic-nix-cache-action@main
|
||||||
fail-mode: true
|
- run: nix flake check
|
||||||
- name: Install Nix
|
|
||||||
uses: DeterminateSystems/nix-installer-action@v4
|
|
||||||
- uses: DeterminateSystems/nix-installer-action-cache@focus-on-cache
|
|
||||||
|
|
||||||
- name: "Nix Flake Check"
|
|
||||||
run: nix flake check . -L
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
That's it.
|
||||||
|
Everything built in your workflow will be cached.
|
||||||
|
|
||||||
|
## Usage Notes
|
||||||
|
|
||||||
|
The GitHub Actions Cache has a rate limit on reads and writes.
|
||||||
|
Occasionally, large projects or large rebuilds may exceed those rate-limits, and you'll see evidence of that in your logs.
|
||||||
|
The error looks like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
error: unable to download 'http://127.0.0.1:37515/<...>': HTTP error 418
|
||||||
|
response body:
|
||||||
|
GitHub API error: API error (429 Too Many Requests): StructuredApiError { message: "Request was blocked due to exceeding usage of resource 'Count' in namespace ''." }
|
||||||
|
```
|
||||||
|
|
||||||
|
The caching daemon and Nix both handle this gracefully, and won't cause your CI to fail.
|
||||||
|
When the rate limit is exceeded while pulling dependencies, your workflow may perform more builds than usual.
|
||||||
|
When the rate limit is exceeded while uploading to the cache, the remainder of those store paths will be uploaded on the next run of the workflow.
|
||||||
|
|
||||||
|
|
||||||
|
# Action Options
|
||||||
|
<!--
|
||||||
|
cat action.yml| nix run nixpkgs#yq-go -- '[[ "Parameter", "Description", "Required", "Default" ], ["-", "-", "-", "-"]] + [.inputs | to_entries | sort_by(.key) | .[] | ["`" + .key + "`", .value.description, .value.required // "", .value.default // ""]] | map(join(" | ")) | .[] | "| " + . + " |"' -r
|
||||||
|
-->
|
||||||
|
|
||||||
| Parameter | Description | Required | Default |
|
| Parameter | Description | Required | Default |
|
||||||
| - | - | - | - |
|
| - | - | - | - |
|
||||||
| `diagnostic-endpoint` | Diagnostic endpoint url where diagnostics and performance data is sent. To disable set this to an empty string. | | https://install.determinate.systems/magic-nix-cache/perf |
|
| `diagnostic-endpoint` | Diagnostic endpoint url where diagnostics and performance data is sent. To disable set this to an empty string. | | https://install.determinate.systems/magic-nix-cache/perf |
|
||||||
|
|
Loading…
Reference in a new issue