Zum Inhalt springen

Docker

semrel ist als offizielles Docker-Image unter ghcr.io/SemRels/semrel verfügbar.

TagBasisEnthältHinweise
ghcr.io/SemRels/semrel:latestdistroless (Debian 12)git, ca-certificatesKeine Shell, kein Paketmanager. Empfohlener Standard.
ghcr.io/SemRels/semrel:1.0.0distroless (Debian 12)git, ca-certificatesFest gepinnte Version
ghcr.io/SemRels/semrel:latest-alpineAlpine 3.22git, ca-certificates, openssh-client, ShellFür SSH-Remotes oder Shell-Scripting in CI
ghcr.io/SemRels/semrel:1.0.0-alpineAlpine 3.22git, ca-certificates, openssh-client, ShellFest gepinnte Alpine-Version
ghcr.io/SemRels/semrel:latest-actionAlpine 3.22git, ca-certificates, openssh-client, ShellNur für GitHub-Docker-Container-Actions
ghcr.io/SemRels/semrel:1.0.0-actionAlpine 3.22git, ca-certificates, openssh-client, ShellFest gepinntes GitHub-Actions-Image
Terminal-Fenster
docker run --rm \
-v "$(pwd):/workspace" \
-w /workspace \
-e SEMREL_PLUGIN_TOKEN="$GITHUB_TOKEN" \
ghcr.io/SemRels/semrel:latest release --dry-run
jobs:
release:
runs-on: ubuntu-latest
container:
image: ghcr.io/SemRels/semrel:latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: semrel-Plugins wiederherstellen
run: semrel plugin restore
- name: Release ausführen
run: semrel release
env:
SEMREL_PLUGIN_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Oder als Docker-Action-Schritt:

- name: semrel ausführen
uses: docker://ghcr.io/SemRels/semrel:latest-action
with:
args: release
env:
SEMREL_PLUGIN_TOKEN: ${{ secrets.GITHUB_TOKEN }}

GitHub bindet den Action-Workspace mit der Benutzerkennung des Runners ein und setzt für Docker-Container-Actions root voraus. Verwende den speziellen -action-Tag nur mit uses: docker://...; die regulären Images bleiben bewusst Nicht-root-Images.

semrel:
image: ghcr.io/SemRels/semrel:latest
stage: release
script:
- semrel plugin restore
- semrel release --gitlab-dotenv semrel.env
artifacts:
reports:
dotenv: semrel.env
jobs:
release:
runs-on: ubuntu-latest
container:
image: ghcr.io/SemRels/semrel:latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: semrel-Plugins wiederherstellen
run: semrel plugin restore
- name: Release ausführen
run: semrel release
env:
SEMREL_PLUGIN_TOKEN: ${{ secrets.GITEA_TOKEN }}
VariableErforderlichBeschreibung
SEMREL_PLUGIN_TOKENJa (die meisten Provider)API-Token, der an Provider- und Hook-Plugins weitergegeben wird
SEMREL_DRY_RUNNeinAuf true setzen, um den Ablauf zu simulieren
SEMREL_REGISTRY_URLNeinPlugin-Registry-URL überschreiben

semrel arbeitet im aktuellen Arbeitsverzeichnis. Beim Einsatz mit docker run das Repository nach /workspace einbinden:

Terminal-Fenster
docker run --rm \
-v "$(pwd):/workspace" \
-w /workspace \
-e SEMREL_PLUGIN_TOKEN="$GITHUB_TOKEN" \
ghcr.io/SemRels/semrel:latest release

Für reproduzierbare Builds auf eine bestimmte Version pinnen:

Terminal-Fenster
ghcr.io/SemRels/semrel:1.0.0 # distroless
ghcr.io/SemRels/semrel:1.0.0-alpine # Alpine
  • Beide regulären Images laufen standardmäßig als nicht-root-Benutzer.
  • Das optionale -action-Image läuft ausschließlich für GitHub-Docker- Container-Actions als root. Verwende es nicht für allgemeine Container-Workloads.
  • Das latest-Image (distroless) hat keine Shell und keinen Paketmanager — minimale Angriffsfläche.
  • Das Alpine-Image ist auf 3.22 gepinnt und wird mit apk upgrade --no-cache gebaut, um alle Sicherheits-Patches einzuspielen.
  • Images werden mit cosign signiert und enthalten eine SBOM-Attestierung.