Container image for semaphore-extended
2.7K
Semaphore UI with additional CLI tools for tasks. Everything else is the upstream image semaphoreui/semaphore: same entrypoint, user (UID 1001) and configuration.
This is an unofficial image, not affiliated with or supported by the Semaphore UI project. Semaphore UI is licensed under the MIT License.
| Added tool | Purpose |
|---|---|
gh | GitHub CLI |
Removed from the upstream image: terraform, tofu and terragrunt. Terraform and OpenTofu tasks do not work with this image. Removing them does not make the image smaller, they stay in an upstream layer.
Replace the upstream image, nothing else changes:
services:
semaphore:
image: ghcr.io/tuxpeople/semaphore-extended:2.19.17
Upstream uses a v prefix (v2.17.0), these tags do not.
gh authenticates with the environment variable GH_TOKEN. Set it per task via a variable group in Semaphore, not on the container, so that only tasks that need it can read it.
semaphoreui/semaphore, Alpine packages upgraded during the buildFROM tag (get-version.sh), Renovate updates itX.Y.Z, X.Y, X, latest. Pin a full version: Semaphore migrates its database on upgrades2.17.0 is rebuilt in place. Pin the digest if that matterslinux/amd64, linux/arm64Trivy reports findings in the semaphore binary and in the Ansible virtualenv that upstream ships. They can only be fixed upstream.
tools stage of the Dockerfile, with a # renovate: annotation. Everything in /out ends up in /usr/local/bintools in test.shNo Goss tests: the server does not start without configuration, and dgoss cannot pass any. test.sh starts it with a local SQLite database instead.
docker build -t semaphore-extended:test .
./test.sh semaphore-extended:test
Content type
Image
Digest
sha256:ceab8d552…
Size
356.7 MB
Last updated
1 day ago
docker pull tdeutsch/semaphore-extended