Docker
semrel ist als offizielles Docker-Image unter ghcr.io/SemRels/semrel verfügbar.
Image-Varianten
Abschnitt betitelt „Image-Varianten“| Tag | Basis | Enthält | Hinweise |
|---|---|---|---|
ghcr.io/SemRels/semrel:latest | distroless (Debian 12) | git, ca-certificates | Keine Shell, kein Paketmanager. Empfohlener Standard. |
ghcr.io/SemRels/semrel:1.0.0 | distroless (Debian 12) | git, ca-certificates | Fest gepinnte Version |
ghcr.io/SemRels/semrel:latest-alpine | Alpine 3.22 | git, ca-certificates, openssh-client, Shell | Für SSH-Remotes oder Shell-Scripting in CI |
ghcr.io/SemRels/semrel:1.0.0-alpine | Alpine 3.22 | git, ca-certificates, openssh-client, Shell | Fest gepinnte Alpine-Version |
ghcr.io/SemRels/semrel:latest-action | Alpine 3.22 | git, ca-certificates, openssh-client, Shell | Nur für GitHub-Docker-Container-Actions |
ghcr.io/SemRels/semrel:1.0.0-action | Alpine 3.22 | git, ca-certificates, openssh-client, Shell | Fest gepinntes GitHub-Actions-Image |
Schnellstart
Abschnitt betitelt „Schnellstart“docker run --rm \ -v "$(pwd):/workspace" \ -w /workspace \ -e SEMREL_PLUGIN_TOKEN="$GITHUB_TOKEN" \ ghcr.io/SemRels/semrel:latest release --dry-runGitHub Actions
Abschnitt betitelt „GitHub Actions“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.
GitLab CI
Abschnitt betitelt „GitLab CI“semrel: image: ghcr.io/SemRels/semrel:latest stage: release script: - semrel plugin restore - semrel release --gitlab-dotenv semrel.env artifacts: reports: dotenv: semrel.envGitea Actions
Abschnitt betitelt „Gitea Actions“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 }}Umgebungsvariablen
Abschnitt betitelt „Umgebungsvariablen“| Variable | Erforderlich | Beschreibung |
|---|---|---|
SEMREL_PLUGIN_TOKEN | Ja (die meisten Provider) | API-Token, der an Provider- und Hook-Plugins weitergegeben wird |
SEMREL_DRY_RUN | Nein | Auf true setzen, um den Ablauf zu simulieren |
SEMREL_REGISTRY_URL | Nein | Plugin-Registry-URL überschreiben |
Workspace einbinden
Abschnitt betitelt „Workspace einbinden“semrel arbeitet im aktuellen Arbeitsverzeichnis. Beim Einsatz mit docker run das Repository nach /workspace einbinden:
docker run --rm \ -v "$(pwd):/workspace" \ -w /workspace \ -e SEMREL_PLUGIN_TOKEN="$GITHUB_TOKEN" \ ghcr.io/SemRels/semrel:latest releaseVersionen pinnen
Abschnitt betitelt „Versionen pinnen“Für reproduzierbare Builds auf eine bestimmte Version pinnen:
ghcr.io/SemRels/semrel:1.0.0 # distrolessghcr.io/SemRels/semrel:1.0.0-alpine # AlpineSicherheitshinweise
Abschnitt betitelt „Sicherheitshinweise“- 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.22gepinnt und wird mitapk upgrade --no-cachegebaut, um alle Sicherheits-Patches einzuspielen. - Images werden mit cosign signiert und enthalten eine SBOM-Attestierung.