GitHub Actions: Install Released silk
This guide shows how to install the released Silk CLI in another GitHub Actions workflow without rebuilding the compiler from source.
:
- runner OS/arch:
linux-x86_64,macos-arm64,- source of truth: GitHub Release assets uploaded from the repo’s release distribution target,
- installed payload: the staged-prefix distribution tarball (
bin/,lib/,include/,share/).
Basic Usage#
Pin the action to a released Silk tag:
jobs:
use-silk:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oro-computer/silk@v0.1.0
with:
github-token: ${{ github.token }}
- run: silk --version
When the action ref is a v* tag and version is omitted, the action installs
that same release tag.
Select a Different Version#
If you use a floating action ref (for example @main) or want to install a
different release than the action ref, set version explicitly:
- uses: oro-computer/silk@main
with:
version: v0.1.0
github-token: ${{ github.token }}
Accepted version values:
v0.1.00.1.0(normalized tov0.1.0)latest
Inputs#
version- optional,
- release tag to install,
- defaults to the action ref when it is a
v*tag, otherwiselatest. repository- optional,
- release repository in
owner/repoform, - defaults to the action repository.
github-token- optional,
- bearer token used for the GitHub release API and asset downloads,
- recommended:
${{ github.token }}. install-dir- optional,
- installation root for the extracted staged prefix,
- default:
${RUNNER_TEMP}/silk/<tag>/<platform>, where<platform>is the current runner platform tag. add-to-path- optional,
- when
true(default), appends<install-dir>/bintoPATH.
Outputs#
version— resolved release tag that was installed.root— installed staged-prefix root.bin— installedbin/directory.silk— absolute path to the installedsilkbinary.
Example:
- id: setup-silk
uses: oro-computer/silk@v0.1.0
with:
github-token: ${{ github.token }}
- run: |
"${{ steps.setup-silk.outputs.silk }}" --version
ls "${{ steps.setup-silk.outputs.root }}/share"
Integrity and Failure Modes#
The action downloads both:
silk-<tag>-<platform>.tar.gzsilk-<tag>-<platform>.tar.gz.sha256
Where <platform> is one of:
linux-x86_64macos-arm64
It verifies the archive with sha256sum -c when available and falls back to
shasum -a 256 -c on macOS runners before extracting it.
The action fails when:
- it is run on an unsupported runner platform,
- the target release does not exist,
- the expected release assets are missing,
- or checksum verification fails.
Producing Release Assets#
Run the release distribution target on each supported native host before uploading assets to a GitHub Release:
make dist
The target builds a size-optimized staged prefix with ReleaseSmall and
stripped binaries, then writes upload-ready assets under build/release/:
silk-v<toolchain-version>-linux-x86_64.tar.gzon Linux x86_64,silk-v<toolchain-version>-macos-arm64.tar.gzon Apple Silicon macOS,- and the matching
.sha256checksum files.
For a release tag that intentionally differs from src/version.zig, override
the asset tag explicitly:
DIST_VERSION=v0.1.1 make dist
Default branch CI does not publish GitHub Release assets. Its scheduled nightly path may upload short-retention distribution artifacts for inspection, but those artifacts are separate from release publication.
The archive contains the release-required installed bin/, lib/,
include/, and share/ prefix payloads, plus a dedicated release-root Makefile
that supports make install PREFIX=/usr/local, staged
DESTDIR=/tmp/pkgroot installs, and make uninstall for the files owned by
that release archive. Its install path removes previously installed owned files
from the installed receipt before copying the new payload, so upgrades can
remove files that were owned by an older release but are no longer shipped.
Uninstall is idempotent for missing prefixes and tolerates stale or malformed
receipt entries, missing owned files, and unreadable installed receipts by
falling back to the current archive's owned file list when necessary. It also
includes curated editor/syntax files under share/silk/editor/ for Highlight.js,
Vim, Sublime Text, TextMate,
VS Code, and coc.nvim. Development-only payloads such as source tests,
intermediate object files, source-only Markdown manpage copies, editor build
metadata, cache directories, dependency build trees, node_modules, and
editor scratch files are not included.
Relationship to This Repo’s CI#
This action does not build Silk. It consumes the same staged-prefix tarball that the Silk compiler repository publishes as release assets.
The default CI workflow keeps artifact publication on the scheduled nightly
path only. Pull requests, branch pushes, tag pushes, and manual dispatches run
correctness checks without uploading staged-prefix artifacts. Release
publication should use the same make dist outputs described above and publish
them deliberately to GitHub Releases; macOS release packages are built from the
macOS-native dependency layout instead of reusing Linux dependency archives.
Source repository · Edit this page · View Markdown