Installation
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Git ≥ 2.30
- Ein Repository, das Conventional Commits verwendet
Installation
Abschnitt betitelt „Installation“Keine Installation nötig. Zieh das offizielle Image und führe dann Folgendes aus:
docker pull ghcr.io/semrels/semrel:latest-alpinedocker run --rm \ -v "$(pwd):/workspace" -w /workspace \ -e GITHUB_TOKEN="$GITHUB_TOKEN" \ ghcr.io/semrels/semrel:latest-alpine release --dry-runDie 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.
go install github.com/SemRels/semrel/cmd/semrel@latestErfordert Go ≥ 1.22. Die Binärdatei wird in $GOPATH/bin abgelegt (normalerweise ~/go/bin).
Lade die vorgebaute Binärdatei für deine Plattform aus GitHub Releases herunter und lege sie an einen Ort in deinem $PATH:
# Linux / macOS — check the releases page for the current versioncurl -L https://github.com/SemRels/semrel/releases/latest/download/semrel_linux_amd64.tar.gz \ | tar xz semrelmv semrel /usr/local/bin/git clone https://github.com/SemRels/semrel.gitcd semrelgo build -o semrel ./cmd/semrelmv semrel /usr/local/bin/Überprüfen
Abschnitt betitelt „Überprüfen“semrel --versionErwartete Ausgabe:
semrel version v0.9.0CI / CD
Abschnitt betitelt „CI / CD“Der einfachste Ansatz — verwende semrel als Docker-Container-Action. Keine Go-Toolchain erforderlich, nur ein Checkout und der semrel-Schritt:
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 }}Setze das semrel-Image in deinem Release-Job — GitLab CI führt es dann als Container aus:
semrel: image: ghcr.io/semrels/semrel:latest-alpine stage: release rules: - if: $CI_COMMIT_BRANCH == "main" script: - semrel release --gitlab-dotenv semrel.env artifacts: reports: dotenv: semrel.envDas dotenv-Artefakt stellt SEMREL_VERSION, SEMREL_TAG und SEMREL_CHANGELOG für Folgejobs automatisch bereit. Mehr Details findest du im CI-Outputs-Anleitung.
Installiere semrel über die Go-Toolchain, wenn du ein Setup ohne Docker bevorzugst:
- uses: actions/setup-go@v5 with: go-version: '1.22'
- name: Install semrel run: go install github.com/SemRels/semrel/cmd/semrel@latest
- name: Run semrel run: semrel release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}Verwende das alpine-Image als Executor:
version: 2.1jobs: release: docker: - image: ghcr.io/semrels/semrel:latest-alpine steps: - checkout - run: name: Run semrel command: semrel releaseworkflows: release: jobs: - release: filters: branches: only: mainVerwende das alpine-Image in einer deklarativen Pipeline:
// Jenkinsfilepipeline { agent { docker { image 'ghcr.io/semrels/semrel:latest-alpine' args '-v $HOME/.gitconfig:/root/.gitconfig:ro' } } stages { stage('Release') { when { branch 'main' } steps { sh 'semrel release' } } }}Plugins aus der Registry installieren
Abschnitt betitelt „Plugins aus der Registry installieren“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:
- semrel prüft zuerst das lokale Plugin-Verzeichnis.
- Wenn die Binärdatei fehlt, holt semrel Registry-Metadaten von
registry.semrel.io. - Es lädt das plattformspezifische Release-Asset für das aktuelle Betriebssystem und die aktuelle Architektur herunter.
- Es verifiziert die heruntergeladene Datei gegen die veröffentlichte SHA-256-Prüfsumme.
- 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.
# Optional registry overridesexport SEMREL_REGISTRY_URL=https://registry.semrel.ioexport SEMREL_CACHE_DIR=.semrelexport SEMREL_CACHE_TTL=24hMehr Details findest du in der Plugin Registry-Übersicht und im Plugin-Publishing-Anleitung.
Shell-Completion
Abschnitt betitelt „Shell-Completion“Auto-Completion-Skripte lassen sich für bash, zsh, fish und PowerShell erzeugen:
# bashsemrel completion bash > /etc/bash_completion.d/semrel
# zshsemrel completion zsh > "${fpath[1]}/_semrel"
# fishsemrel completion fish | source