Repository navigation
chore(deps): update semaphoreui/semaphore docker tag to v2.19.16 - #32
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
December 17, 2025 20:43
561f75a to
2ad191f
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
January 7, 2026 17:47
2ad191f to
5129cd5
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
January 8, 2026 09:54
5129cd5 to
831a038
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
2 times, most recently
from
January 12, 2026 17:49
d359633 to
1a511da
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
February 21, 2026 14:31
1a511da to
e5afcd7
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
February 28, 2026 00:53
e5afcd7 to
4729410
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
February 28, 2026 21:41
4729410 to
ccdce65
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
March 9, 2026 01:49
ccdce65 to
8d9d3df
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
March 9, 2026 08:36
8d9d3df to
4cffe2e
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
March 9, 2026 15:40
4cffe2e to
7098eeb
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
March 12, 2026 18:41
7098eeb to
aed213c
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
March 13, 2026 20:42
aed213c to
17d0099
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
March 16, 2026 00:39
17d0099 to
b692c63
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
March 31, 2026 22:11
df18d90 to
bfa2aaf
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
April 1, 2026 18:03
bfa2aaf to
647bcd1
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
April 9, 2026 01:05
647bcd1 to
b30045b
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
April 9, 2026 18:00
b30045b to
6285a42
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
April 12, 2026 12:39
6285a42 to
262f103
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
April 17, 2026 11:48
262f103 to
7bf989a
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
April 21, 2026 22:42
7bf989a to
c1f066c
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
April 29, 2026 21:38
c1f066c to
a4848f3
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
May 5, 2026 00:42
a4848f3 to
dbf178e
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
May 7, 2026 13:36
dbf178e to
33f66eb
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
May 12, 2026 18:59
33f66eb to
77ff5d9
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
May 18, 2026 22:00
77ff5d9 to
990c9b8
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
May 23, 2026 17:44
990c9b8 to
4afdb9d
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
June 2, 2026 23:10
4afdb9d to
83914db
Compare
renovate
Bot
force-pushed
the
renovate/semaphoreui-semaphore-2.x
branch
from
June 3, 2026 15:04
83914db to
b358161
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v2.16.45→v2.19.16Release Notes
semaphoreui/semaphore (semaphoreui/semaphore)
v2.19.16Compare Source
Configurable runner check interval
Runners can now be told how often to ask the server for new jobs. Until now the interval was hard-coded to 1 second, which on installations with many runners produced a noticeable amount of request traffic.
New option in the runner section of the runner config:
Or via environment variable:
Default: 1 second, so existing installations behave exactly as before. Values of 0, negative values, or values too large to represent as a duration fall back to the default.
What changes and what does not. Only the check for new jobs honours the configured interval. The runner's progress report, which also serves as its heartbeat, keeps running once per second. Raising the check interval therefore does not affect when the server marks a runner offline. Jobs will start up to check_interval_seconds later than before, so pick a value that matches how quickly you need new tasks to be picked up.
Affected components: runner (semaphore runner start), config schema. No database migration, no changes to the server or the web interface.
v2.19.15Compare Source
v2.19.14Compare Source
v2.19.12Compare Source
Bogfixes
v2.19.11Compare Source
Changelog
0c3f373test(db): add tests for db migrationv2.19.10Compare Source
v2.19.9Compare Source
v2.19.8Compare Source
Bugfixes
v2.19.7Compare Source
Semaphore UI v2.19
Highlights
Workflows
A workflow is a graph of task templates that run as one unit.
/workflows/newand/workflows/:id/edit(Drawflow-based), with palettedrag-and-drop, edge condition selectors, live cycle/self-edge guards, a validation problems panel,
and auto-layout for position-less workflows. Node positions are persisted.
note (free-form annotation, never executed).
task_params_idon workflow nodes)./project/{id}/workflows(CRUD),/{workflow_id}/run,/runs,/runs/{run_id}/{stop,artifacts,approvals},POST /runs/{run_id}/approvals/{node_id}.Executors: Docker and Kubernetes (Pro/Enterprise)
Runners can now execute tasks in a container or a pod instead of directly on the runner host.
runner.executor.k8s):kubeconfig,namespace(defaultsemaphore),image,helper_image,service_account,pull_secrets,poll_interval_seconds,cleanup_grace_seconds.runner.executor.docker):host,tls_verify,cert_path,image,helper_image,network,pull_policy,cpu_limit,memory_limit,privileged(off by default), poll/cleanuptimings.
SEMAPHORE_RUNNER_K8S_*/SEMAPHORE_RUNNER_DOCKER_*environment variable.semaphoreui/jobandsemaphoreui/helperimages are built and published by CI; the job imageships Terraform/OpenTofu/Terragrunt and
paramiko.(
project__template.executor_image).Task JWT / OIDC ID tokens
Semaphore can now act as an OIDC provider for running tasks, so jobs authenticate to external systems
without long-lived credentials.
GET /.well-known/jwks.json.carry IDs only.
jwt:enabled,issuer,default_ttl(1h),max_ttl(24h), withSEMAPHORE_JWT_*env vars.
project__template.jwt_params.Secrets & encryption
encryptionconfig block with a labelled keyring: inlinekeys(value or file), or a
keys_folderwhere each file is a key named by its filename, plusactive.secret_key/active.option_keypointers. Ciphertext now carries a key ID, so keys can berotated without a big-bang re-encrypt.
keys_file+keys_poll_interval(default15s) allow hotreload. The legacy flat
access_key_encryptionstill works and is used whenencryptionis unset.option_encryption— separate key for encrypting DB-stored options.secretvaluelived only in the memory of the node that accepted the task, so it arrived empty on remote runners
and was lost across restarts. Secrets are now persisted as task-bound access keys
(
access_key.task_id,access_key.expire_at, cascade-deleted with the task); TTL is derived fromMaxTaskDurationSec(+1h queue allowance, 24h when unlimited).Runners
runners are always dispatch candidates).
X-Runner-Started-At, stored inrunner.started_at), which lets the server detect a runner that restarted and silently lost itsin-memory job pool.
startingtasks are reassigned to a healthy runner;runningtasks get arecovery window and are then failed with a clear message. Tunables in the new
runnersconfigblock:
offline_timeout_sec(120),task_fail_timeout_sec(420),reconcile_interval_sec(30).removes ~380 lines of key-exchange code from the runner protocol.
rejected with
400, and token prefixes are validated.runnersconfig struct (old flat options still read).activeflag was dropped from runner registration; only registered runners are used.Performance & scale
through them client-side. The backend now returns one page at a time via a
beforecursor +count(legacylimitstill accepted), with noCOUNT(*)and noOFFSET— so page depth nolonger degrades on projects with millions of tasks. Applies to project history, template task lists
(
/templates/{id}/tasks,/tasks/last,/stats) and the dashboard.KeyLock). Templates withAllowParallelTasks=trueshared one working copy, and concurrentgit pull+git checkoutcouldcorrupt it.
updateRepository()+checkoutRepository()is now one critical section, covering bothlocal and runner execution. Inventory repo operations are serialized the same way.
permanent-connection flag is gone.
Templates, tasks & UI
(
GET /repositories/{repository_id}/playbooks) instead of requiring a hand-typed path. Playbooksreset when the branch changes, and branch-load failures no longer block the playbook list.
(
target: "env") instead of the app-specific CLI way (--extra-vars/-var/ CLI arg). The envvar name is the variable name verbatim, so
TF_VAR_fooworks. Stored in the existingsurvey_varsJSON — no migration.
int,text(multiline), and restyledenum.int).requirement installation.
DropdownCard/HighlightedCardcomponents.padding fixed.
Observability
metricsconfig block (enabled,username,password, plusSEMAPHORE_METRICS_*) exposing/api/metricswith Go/process collectors,semaphore_tasks_running(gauge) andsemaphore_tasks_total{status}(counter). The endpoint is offby default and can be protected with basic auth.
debug-style filter via--debug-filter/SEMAPHORE_DEBUG_FILTERlets you turn on verbose tracing for one subsystem (runners, LDAP,schedules, git) without the noise from everything else. Applies to syslog hooks too.
SEMAPHORE_LOG_LEVEL/--log-levelbehave exactly as before.ssh.known_hosts_file,ssh.config_path,ssh.strict_host_key_checking(no/yes/accept-new). With no known-hosts file configured,Semaphore uses a persistent trust-on-first-use file under
TmpPath— first connection pinned, laterhost-key changes rejected.
Security
unverified password change).
Secureover HTTPS.AllowOverrideBranchInTask.--end-of-optionspassed to git so a crafted ref cannot be read as a flag;commit hashes format-checked; branches validated before repository browsing; playbook paths
validated.
appvalidated.template_idverified onvault update.
SECURITY.md; release artifacts signed with thesecurity@semaphoreui.comGPG key.Upgrade notes
Breaking / behavioural changes
MySQL/Postgres) before upgrading.
boltis no longer a validdialect.no longer exists. Make sure runner↔server traffic is TLS-protected.
GET /project/{id}/tasksand the template task endpoints returnone page and take a
beforecursor pluscount.limitis still accepted for backwardcompatibility, but clients relying on getting the newest 200 tasks in one response must page.
activeflag removed from registration.restore to carry credentials.
New configuration
encryption,jwt,metrics,runners,ssh,runner.executor.{docker,k8s},ldap_tls_skip_verify,option_encryption,external_auth_email_matching.All are optional; existing configs keep working.
use_remote_runnerand the flat runner options aredeprecated in favour of
runners. The JSON schema (config.schema.yaml) and the config-optionreference docs have been regenerated.
Documentation
Docs are now a git submodule and are embedded in the binary, so they ship offline. New/updated pages:
Docker & Kubernetes executors, encryption and key rotation, JWT auth during task execution, OpenBao
secret storage, IdP-initiated OIDC, PingFederate TLS, license activation, dev setup, logging, runner
registration, and regenerated CLI reference.
Dependencies & build
Go 1.26.5; Debian 13 and Alpine 3.24 base images;
go-git5.19.2,go-oidc3.20.0,golang.org/x/crypto0.54.0,go-ldap3.4.14,modernc.org/sqlite1.54.0; frontendaxios1.19,cron-parser5.7,nanoid6,shell-quote1.10. MariaDB 12.1 migration compatibility fixed.THIRD-PARTY-LICENSES.mdregenerated.Known gaps
Two plans in
AGENTS/plans/2_19did not ship in this line and are still open:password-hash-argon2id(bcrypt → Argon2id) andrunner-token-hash(hashing the runner bearer tokenitself — only registration tokens are hashed today). The
runner-version-platform-uptimeplanshipped partially: uptime and online/offline status landed, but runner version/OS/arch columns did
not.
v2.19.6Compare Source
v2.18.31Compare Source
Configurable runner check interval
Runners can now be told how often to ask the server for new jobs. Until now the interval was hard-coded to 1 second, which on installations with many runners produced a noticeable amount of request traffic.
New option in the runner section of the runner config:
Or via environment variable:
Default: 1 second, so existing installations behave exactly as before. Values of 0, negative values, or values too large to represent as a duration fall back to the default.
What changes and what does not. Only the check for new jobs honours the configured interval. The runner's progress report, which also serves as its heartbeat, keeps running once per second. Raising the check interval therefore does not affect when the server marks a runner offline. Jobs will start up to check_interval_seconds later than before, so pick a value that matches how quickly you need new tasks to be picked up.
Affected components: runner (semaphore runner start), config schema. No database migration, no changes to the server or the web interface.
v2.18.30Compare Source
Bogfixes
v2.18.29Compare Source
Changelog
91719b9fix(secrets): do not remove synchronized fields and readonly secretsv2.18.28Compare Source
Bugfixes
v2.18.27Compare Source
Changelog
240e595fix(templates): validate appv2.18.26Compare Source
Changelog
ee781a0feat(auth): verify current password to fix CWE-620v2.18.25Compare Source
Changelog
7c3789cfix(runners): close connectionsv2.18.24Compare Source
v2.18.23Compare Source
Changelog
74d8dd5feat(ui): placeholder for enterprise storagesv2.18.22Compare Source
Changelog
debf7a0feat(ui): return extra vars for secretsv2.18.21Compare Source
Changelog
2d6e2e3feat: secure flag for session when https enabledv2.18.20Compare Source
Bugfixes
v2.18.19Compare Source
v2.18.19 Release Summary
This patch release includes several important security and validation fixes.
Security fixes
--end-of-optionsto Git commands to make repository URL and branch handling safer.Reliability and tests
v2.18.18Compare Source
v2.18.17Compare Source
v2.18.16Compare Source
Bugfixes
v2.18.15Compare Source
v2.18.14Compare Source
v2.18.12Compare Source
Features
v2.18.10Compare Source
v2.18.9Compare Source
Changelog
0a37ea2feat(cli): allow create tokenv2.18.8Compare Source
Changelog
459cceeci: fix branchv2.18.5Compare Source
v2.18.4Compare Source
Changelog
7ca373dfix(docker): check reg token fileWhat's Changed
New Contributors
Full Changelog: semaphoreui/semaphore@v2.18.2...v2.18.4
v2.18.3Compare Source
v2.18.2Compare Source
Bugfixes
SEMAPHORE_DB_PASS.v2.18.1Compare Source
This is a substantial beta release that pushes Semaphore meaningfully further into enterprise-grade secrets management, hardens the API token lifecycle, expands the runner scheduling model, and absorbs a flurry of security and dependency fixes — many of them caught and triaged by automated review bots (Cursor, ChatGPT Codex) before merge. It also bumps the bundled Ansible runtime by two major versions.
Below is a qualitative, themed walkthrough rather than a flat PR list.
Secret storage: two new external backends + a hard look at ownership
The headline feature of this release is first-class support for two more enterprise secret backends, joining the existing Devolutions Server (DVLS) integration:
azcore,azidentity,azsecrets). Auth follows the same DB / env-var / file pattern as AWS SM and DVLS, and the backend was refactored to consolidateSyncSecretsacross all storage types into a single function.Alongside the new backends, an unusually large cluster of secret-related security fixes landed — almost all of them automatically flagged by
cursor[bot]during review:ErrReadOnlyStoragesentinel + a silent delete error on environment secrets (the operation appeared to succeed while failing).unsetenvfor sensitive config fields after they're consumed, so they don't linger in process memory available to child processes.returnstatements after error responses in auth/env handlers (classic continue-after-error logic bug).The pattern here is notable: the new backends were merged together with a methodical sweep of the existing secret-handling code, suggesting the secrets subsystem received a deliberate audit pass.
API tokens grow up
Two complementary PRs turn API tokens from disposable opaque strings into something closer to a managed credential:
expires_at. Creation rejects non-future values; bearer-token authentication checks expiry on every request via a newIsExpiredAtmethod, so revocation-by-time is enforced before the request handler even runs. This also added rollback SQL for the migration.@setswei. Tokens get anamefield, which is the small UX touch that finally makes a token list legible when you have more than two of them.Together with [#3785](#3785) (a nil pointer dereference fix in TOTP session verification), the auth surface in this release is meaningfully more robust.
Runners: tags become a first-class scheduling primitive
[#3804](#3804) is the largest single feature in the release (24 commits) and is worth understanding architecturally rather than as a list of bullets:
runner__tagjoin table replaces the previous single-stringtagcolumn, so a runner can carry multiple tags.RunnerTagFilterModeenum (CompleteMatch,HasNoTags,IsDefault,IgnoreTags,HasAnyTag) governs how tasks pick runners.The PR is also a fascinating case study in automated code review actually working:
cursor[bot]repeatedly flagged an inverted condition inservices/tasks/RemoteJob.gowheretagFilterModewas set backward (tagged jobs would have routed to untagged runners and vice versa, breaking the isolation guarantee that's the whole point of the feature). Across roughly five review cycles the maintainer (@fiftin) iterated until the logic was right. Aboltdriver caveat —db:"-"tags causing tag persistence to silently break on Bolt deployments — was raised by the Codex reviewer; worth verifying for anyone still on Bolt.A related smaller change, [#3793](#3793), refactored the
syncflag handling, which was prerequisite plumbing.Admin observability
[#3782](#3782) adds a System Information dialog for admins — a new admin-only
GET /admin/infoendpoint backing a UI dialog that surfaces:tmp_path,home_dir_modeThis is genuinely useful for support triage — the kind of "what version of everything is this server running?" question that previously required SSH access. The endpoint is correctly gated by
adminMiddlewareserver-side, with the UI also guarding render withv-if="user && user.admin". Notably, several of these values were already exposed to all authenticated users via/api/info; the new endpoint is more restrictive than what existed before.Ansible jumps two major versions
[#3736](#3736) (first contribution from
@sevencastles) bumps the bundled Ansible from 11.1.0 → 13.5.0 (ansible-core 2.20.4). This is a non-trivial jump for anyone running Ansible workloads against the Semaphore image — playbooks that relied on collections or behavior from Ansible 11 should be re-tested. There are no notes about pinned-version overrides, so the upgrade is mandatory for users on the official image.Terraform: stop logic finally works
[#3694](#3694) — a long-standing bug from
@JulianKap: stopping a Terraform task while it sat inwaiting_confirmation(the human-approval gate between plan and apply) didn't actually stop it. Now it does. For anyone using Terraform integration, this closes one of the more annoying state machine quirks.Quality-of-life and infrastructure
A few smaller items worth flagging:
@lawrence3699) — CLI command strings are no longer translated. Translatingansible-playbookinto other languages was, predictably, breaking command execution.chownis now scoped to directories the process actually has access to, instead of attempting it everywhere and erroring noisily.@gaetan-steininger) — updated to recommend SQLite over Bolt, which is now deprecated. Worth noting alongside the Bolt-driver concern raised on #3804: Bolt's days are numbered, and new features may not get the same testing coverage on it.Dependency churn
This release pulled in a high volume of dependency bumps. The notable security-relevant ones:
go-git/go-git/v5→ v5.17.2 ([#3732](#3732), [#3751](#3751)) — security advisory fix.go-jose/go-jose/v4→ v4.1.4 ([#3745](#3745)) — patches CVE-2026-34986 (DoS via JWE decryption panic), which is in Semaphore's path because it's transitively used by the OIDC login flow.axios→ v1.15.0/v1.15.2 ([#3756](#3756), [#3800](#3800)) — security advisory.node-forge→ 1.4.0 ([#3728](#3728))go-ldap/ldap/v3→ v3.4.13 ([#3767](#3767))Azure/go-ntlmssp→ v0.1.1 ([#3794](#3794)) — also feeds into the Azure work.Plus routine bumps of
lodash,picomatch,flatted,follow-redirects,prettier,core-js,dotenv,openai, andactions/checkout.A small style/config cleanup (
[588b369d](https://redirect.github.com/semaphoreui/semaphore/commit/588b369d)) removes some extra config validation.New contributors
Four first-time contributors landed code this release:
@gaetan-steininger,@lawrence3699,@sevencastles, and@setswei. The community continues to broaden.Headline takeaways for upgraders
expires_atandnamefields; they're optional but the inflection point to start using them is now.v2.17.39Compare Source
Bugfixes
v2.17.38Compare Source
Changes
v2.17.37Compare Source
v2.17.36Compare Source
Changelog
07b5c05fix(subscr): show correct message6b5a4aeMerge pull request #3754 from semaphoreui/fix/ldap_filter_injectionv2.17.35Compare Source
v2.17.34Compare Source
v2.17.33Compare Source
Changelog
629fc09fix(repo): use *_internal directory to store requirements hash filev2.17.32Compare Source
Semaphore UI v2.17.32 – Release Summary
This release focuses on runner reliability, security improvements, and overall stability, along with several bug fixes and translation updates.
🚀 Improvements
Runners are now selected randomly, improving load balancing and avoiding uneven task distribution across runners.
🔐 Security & Safety
The
access_key_encryptionsetting is now validated during startup to prevent misconfiguration issues early.Restoring projects from backup now requires admin permissions, improving security around sensitive operations.
🐛 Bug Fixes
🌍 Localization
What's Changed
New Contributors
Full Changelog: semaphoreui/semaphore@v2.17.31...v2.17.32
v2.17.31Compare Source
Changelog
v2.17.30Compare Source
Changelog
3f8c2b9fix(env): allow empty secret prefixWhat's Changed
Full Changelog: semaphoreui/semaphore@v2.17.28...v2.17.30
v2.17.29Compare Source
v2.17.28Compare Source
Release v2.17.28
This release improves runner-to-task tracking and fixes task status handling in the runner update flow.
A new
runner_idfield was added to tasks in the database, which makes it possible to persist the association between a task and the runner executing it. This improves internal task tracking and lays the groundwork for more reliable runner state handling.This release also fixes a bug in the runner update logic where the current task state was checked using the wrong field. In
api/runners/runners.go, the status check was corrected fromjob.Status.IsFinished()totsk.Task.Status.IsFinished(), ensuring the system evaluates the actual stored task state before applying runner updates. This makes task state transitions more accurate during runner execution.What's changed
runner_idto the task record in the database for better runner-to-task association. (#3712)Full Changelog
semaphoreui/semaphore@v2.17.27...v2.17.28
v2.17.27Compare Source
Bugfixes
Fixed bug with running Terragrunt
v2.17.26Compare Source
Changelog
3b278d1fix(secrets): null pointerFull Changelog: semaphoreui/semaphore@v2.17.24...v2.17.26
v2.17.25Compare Source
v2.17.24Compare Source
Changelog
b9cb5befix(secrets): provide source storage type in var groupsWhat's Changed
New Contributors
Full Changelog: semaphoreui/semaphore@v2.17.22...v2.17.24
v2.17.23Compare Source
v2.17.22Compare Source
This patch release includes a small fix related to integrations permissions.
Fixes
Full Changelog: semaphoreui/semaphore@v2.17.21...v2.17.22
v2.17.21Compare Source
Changelog
3a04fdaMerge branch '2-17-stable' into developFull Changelog: semaphoreui/semaphore@v2.17.17...v2.17.21
v2.17.20Compare Source
v2.17.19Compare Source
v2.17.18Compare Source
v2.17.17Compare Source
Changelog
9c82d18Merge pull request #3689 from semaphoreui/load_secretsWhat's Changed
Full Changelog: semaphoreui/semaphore@v2.17.16...v2.17.17
v2.17.16Compare Source
Changelog
140584fci(docker): fix migration conditionWhat's Changed
Full Changelog: semaphoreui/semaphore@v2.17.15...v2.17.16
v2.17.15Compare Source
Here’s a clean release summary you can use:
Semaphore UI v2.17.15
Overview
This release improves secret management flexibility and includes minor internal cleanup and dependency updates.
✨ Highlights
🔐 Read Secrets from Raw Files
You can now load secrets directly from a raw file. This makes it easier to integrate with:
This enhancement simplifies secure automation workflows and improves compatibility with production setups.
What's Changed
Full Changelog: semaphoreui/semaphore@v2.17.14...v2.17.15
v2.17.14Compare Source
Changelog
v2.17.12Compare Source
🚀 Release Summary
This release introduces improved task control, an important database migration capability, and multiple dependency updates for stability and security.
✨ Highlights
BoltDB → SQL migration tool (major step forward)
This is a key improvement for scalability and aligns with the future removal of BoltDB support.
🔧 Maintenance & Security
🙌 Community
Changelog
3e5e0deci(github): return GH_TOKEN for dockerWhat's Changed
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.