Zum Inhalt springen

Installation

Keine Installation nötig. Zieh das offizielle Image und führe dann Folgendes aus:

Terminal-Fenster
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

Die alpine-Variante bringt git und ca-certificates mit — alles, was semrel braucht. Sieh in der Docker-Anleitung nach, wenn du mehr über Image-Varianten und darüber erfahren willst, wie du Versionen pinnst.

Terminal-Fenster
semrel --version

Erwartete Ausgabe:

semrel version v0.9.0

Der einfachste Ansatz — verwende semrel als Docker-Container-Action. Keine Go-Toolchain erforderlich, nur ein Checkout und der semrel-Schritt:

.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-action
with:
args: release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Das spezielle -action-Image läuft als root, weil GitHub dies für den Zugriff einer Docker-Container-Action auf den Runner-Workspace voraussetzt. Die regulären Images bleiben Nicht-root-Images für docker run und Container-Jobs.

Oder führe semrel in einem container job aus (praktisch, wenn spätere Schritte es ebenfalls brauchen):

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 }}

Wenn ein Plugin per Namen referenziert wird und lokal keine passende Binärdatei verfügbar ist, kann semrel es über die SemRels Plugin Registry auflösen.

Der Ablauf sieht so aus:

  1. semrel prüft zuerst das lokale Plugin-Verzeichnis.
  2. Wenn die Binärdatei fehlt, holt semrel Registry-Metadaten von registry.semrel.io.
  3. Es lädt das plattformspezifische Release-Asset für das aktuelle Betriebssystem und die aktuelle Architektur herunter.
  4. Es verifiziert die heruntergeladene Datei gegen die veröffentlichte SHA-256-Prüfsumme.
  5. Es cached die Registry-Metadaten und die Binärdatei zur Wiederverwendung in späteren Läufen.

Standardmäßig liegt der Cache für Registry-Metadaten unter .semrel/registry-cache, während heruntergeladene Binärdateien aus dem lokalen .semrel/-Cache-Layout wiederverwendet werden. Lokale Binärdateien haben weiterhin Vorrang. Das hält CI vorhersehbar und erlaubt Offline-Wiederverwendung nach dem ersten erfolgreichen Download.

Wenn du .semrel.lock committest, führe regelmäßig semrel plugin update --check aus und nutze semrel plugin update, wenn du gepinnte Plugin-Versionen aktualisieren möchtest.

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

Mehr Details findest du in der Plugin Registry-Übersicht und im Plugin-Publishing-Anleitung.

Auto-Completion-Skripte lassen sich für bash, zsh, fish und PowerShell erzeugen:

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