Zum Inhalt springen

Installation

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

No installation needed. Pull the official image and run:

Terminal window
docker pull ghcr.io/semrels/semrel:latest-alpine
docker run --rm \
-v "$(pwd):/workspace" -w /workspace \
-e GITHUB_TOKEN="$GITHUB_TOKEN" \
ghcr.io/semrels/semrel:latest-alpine release --dry-run

The alpine variant bundles git and ca-certificates — everything semrel needs. See Docker guide for image variants and version pinning.

Terminal window
semrel --version

Expected output:

semrel version v0.2.0

The simplest approach — use semrel as a Docker container action. No Go toolchain required, just a checkout and the semrel step:

.github/workflows/release.yml
name: Release
on:
push:
branches: [main]
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run semrel
uses: docker://ghcr.io/semrels/semrel:latest-alpine
with:
args: release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Or run semrel in a container job (useful when subsequent steps also need it):

jobs:
release:
runs-on: ubuntu-latest
container:
image: ghcr.io/semrels/semrel:latest-alpine
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run semrel
run: semrel release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

When a plugin is referenced by name and no matching binary is available locally, semrel can resolve it through the SemRels Plugin Registry.

The flow looks like this:

  1. semrel checks the local plugin directory first.
  2. If the binary is missing, semrel fetches registry metadata from registry.semrel.io (MVP: GitHub Pages-backed plugins.json).
  3. It downloads the platform-specific release asset for the current OS and architecture.
  4. It verifies the downloaded file against the published SHA-256 checksum.
  5. It caches the registry metadata and binary for reuse on later runs.

By default, the registry metadata cache lives under .semrel/registry-cache, while downloaded binaries are reused from the local .semrel/ cache layout. Local binaries still take precedence, which keeps CI predictable and allows offline reuse after the first successful download.

Terminal window
# Optional registry overrides
export SEMREL_REGISTRY_URL=https://registry.semrel.io
export SEMREL_CACHE_DIR=.semrel
export SEMREL_CACHE_TTL=24h

For more detail, see the Plugin Registry overview and the Plugin Publishing Guide.

Auto-completion scripts can be generated for bash, zsh, fish, and PowerShell:

Terminal window
# bash
semrel completion bash > /etc/bash_completion.d/semrel
# zsh
semrel completion zsh > "${fpath[1]}/_semrel"
# fish
semrel completion fish | source