4
10
Fork
You've already forked setup-zig
2
Install a Zig compiler for usage in Forgejo Actions or GitHub Actions workflows.
JavaScript 100%
Kurt e7d1537c37 Use named capture groups for version string matching
Previously it was referencing the wrong group index (off by one), which is easy to do when relying on indices. Using capture groups here should make it less error prone (and also fixes this initial problem).
Long term a small unit test should avoid this happening / regressing.
2025年12月05日 09:29:15 +11:00
.forgejo/workflows tests: fix typo in workflow 2025年11月28日 16:01:44 +00:00
.github github: add separate README 2025年11月28日 13:04:28 +00:00
node_modules npm update 2025年11月28日 16:01:44 +00:00
action.yml set Zig cache directories to the workspace-local .zig-cache 2025年11月28日 13:04:27 +00:00
common.js Use named capture groups for version string matching 2025年12月05日 09:29:15 +11:00
LICENSE Create setup-zig 2024年06月08日 15:59:13 +01:00
main.js use hardcoded community mirror list when ziglang.org is inaccessible 2025年11月30日 09:00:01 +00:00
minisign.js minisign: replace libsodium dependency with node:crypto 2025年11月28日 16:01:44 +00:00
package-lock.json npm update 2025年11月28日 16:01:44 +00:00
package.json minisign: replace libsodium dependency with node:crypto 2025年11月28日 16:01:44 +00:00
post.js post: include run attempt in cache name 2025年06月29日 16:52:12 +01:00
README.md set Zig cache directories to the workspace-local .zig-cache 2025年11月28日 13:04:27 +00:00

setup-zig

Install the Zig compiler for use in a Forgejo Actions or GitHub Actions workflow, and preserve the Zig cache across workflow runs.

Usage

jobs:test:runs-on:ubuntu-latestname:Build and Teststeps:- uses:actions/checkout@v3- uses:https://codeberg.org/mlugg/setup-zig@v2- run:zig build test

Important

When using GitHub Actions, the setup-zig URL in the example above must be replaced with a simple repository reference, because GitHub Actions does not support Actions hosted outside of GitHub:

- uses:mlugg/setup-zig@v2

This will automatically download Zig and install it to PATH.

You can use version to set a Zig version to download. This may be a release (0.13.0), a specific nightly build (0.14.0-dev.2+0884a4341), the string master for the latest nightly build, or the string latest for the latest full release. It can also refer to a Mach nominated version, such as 202450-mach. Finally, leaving the value empty (the default) will cause the action to attempt to resolve the Zig version from the minimum_zig_version field in build.zig.zon, falling back to latest if that isn't possible.

- uses:https://codeberg.org/mlugg/setup-zig@v2with:version:0.13.0

Warning

Mirrors, including the official Zig website, may purge old nightly builds at their leisure. This means that if you target an out-of-date nightly build, such as a 0.11.0-dev build, the download may fail.

If you want to use one specific mirror, you can set it using the mirror option:

- uses:https://codeberg.org/mlugg/setup-zig@v2with:mirror:'https://pkg.machengine.org/zig'

Please don't do this unnecessarily; it's not nice to hammer one mirror. This mirror is not permitted to be https://ziglang.org/download to avoid the official website being hit with large amounts of requests. If you've experienced issues with a default mirror, please open an issue on the Zig website repository, which is where the list of mirrors is maintained.

If necessary, the caching of the global and local Zig cache directories can be disabled by setting the option use-cache: false. Don't do this without reason: preserving the Zig cache will typically speed things up and decrease the load on your Actions runners.

If you are using a matrix strategy for your workflow, you may need to populate the cache-key option with all of your matrix variables to ensure that every job is correctly cached. Unfortunately, there is no way for the Action to automatically distinguish jobs in a matrix. However, variables which select the runner platform may be omitted from the cache-key, since the runner platform is included in the cache key by default.

Zig cache directories can get incredibly large over time. By default, this Action will clear the cache directory once its size exceeds 2 GiB. This threshold can be changed by setting the cache-size-limit option to a different value (in MiB); for instance, cache-size-limit: 4096 for a 4 GiB limit. The limit can be disabled entirely by setting cache-size-limit: 0.

Details

This action attempts to download the requested Zig tarball from a set of mirrors, in a random order. As a last resort, the official Zig website is used. The tarball's minisign signature is also downloaded and verified to ensure binaries have not been tampered with. The tarball is cached between runs and workflows.

The global Zig cache directory (~/.cache/zig on Linux) is automatically cached between runs, and all local caches are redirected to the global cache directory to make optimal use of this cross-run caching.

Adding a mirror

The list of tarball mirrors is not in this repository; rather, the community mirror list from ziglang.org is used. If you are interested in hosting a mirror of your own, check out the documentation on the Zig website repository. That way, your mirror can benefit not just setup-zig, but also any other tooling which wants to fetch Zig!