github.com/kimdre/doco-cd
v0.111.0
#1053 most downloaded on Go modules
kimdre/doco-cd
What this package is like to depend on
Last release today
22 Aug 2026
Ships fairly regularly
a new release about every 8 days
Rarely documented
notes for 9 of 167 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
381 releases · first in 2024
280 releases in the last 12 months
see the full history below
Release timeline
381 releases · Jul 2024 to Aug 2026Releases
latest 60 of 381-
v0.111.022 Aug 2026Release notes
Open source →What's Changed
Polling local Repositories
Some stacks cannot be deployed without a running SCM available (e.g. a self-hosted Gitea/Forgejo instance that should be deployed via doco-cd (hence a chicken-and-egg problem), or a stack that is deployed from a local Git repository that is not hosted on any remote SCM). This release adds support for polling local Git repositories to solve this problem.
Mount the directory containing your local Git repo into the doco-cd container, then use a poll config with the
url:value being the absolute path to the Git repo inside the container.More info in the wiki at Polling Local Filesystem Repositories.
Watcher for local Repositories
In addition to interval-based polling, doco-cd watches the local repository's git directory for changes and triggers a deployment check immediately when new commits land, without waiting for the next interval. This is enabled by default; set
watch: falseto disable it and rely onintervalonly. Setinterval: 0(withwatchleft enabled) to rely on the watcher exclusively, with no periodic fallback polling at all.See the
watchpoll option in the wiki.⚠️ Dotenv parsing changed
.envfiles (env_files) are now parsed withcompose-go's dotenv engine (the same one Docker Compose uses) instead ofgodotenv. Variables set in oneenv_filesentry are now correctly available for${VAR}substitution in later entries.Reference docs:
- Compose variable interpolation: https://docs.docker.com/compose/how-tos/environment-variables/variable-interpolation/
- Compose
.envsyntax (.env filesection): https://docs.docker.com/compose/how-tos/environment-variables/variable-interpolation/#env-file - Compose interpolation operators (
Interpolation syntax): https://docs.docker.com/reference/compose-file/interpolation/
Warning
No longer supported / behavior changes:
- Lowercase/mixed-case
${var}references are no longer left as literal text. Previously,godotenvonly expandedUPPERCASEvariable names and silently ignored${lowercase_var}/${MixedCase}, keeping the literal string in the value. These are now interpolated like any other variable — if unset, they resolve to an empty string instead of the original literal text.
If any of your
.envfiles intentionally relied on lowercase${...}placeholders being left untouched, rename them to avoid the$/${}pattern (e.g. escape with\$) or ensure the referenced variable is actually defined.Note
New/added support:
- Bash-style default and required-value operators now work inside
.envfiles:${VAR:-default},${VAR-default},${VAR:+alt},${VAR+alt},${VAR:?error},${VAR?error}. - Bare keys (e.g. a line with just
SOME_VAR) now inherit the value from the process environment or an earlierenv_filesentry.
✨ Features
🌟 Improvements
- feat(git): implement local filesystem watcher for repository changes by @kimdre in #1723
- fix(compose): switch to compose-go dotenv parser for improved variable resolution by @kimdre in #1724
📦 Dependencies
- chore(deps): update gcr.io/distroless/base-debian13 docker digest to 20dc7ed by @renovate[bot] in #1719
- chore(deps): update docker/github-builder digest to 58cb9f5 by @renovate[bot] in #1718
- chore(deps): update github/codeql-action digest to db488dd by @renovate[bot] in #1720
- chore(deps): update dependency zensical to v0.0.57 by @renovate[bot] in #1721
Full Changelog: v0.110.1...v0.111.0
-
v0.110.2-0.20260822070440-43fb6be5678522 Aug 2026 pre-releaseNothing published for this version
-
v0.110.2-0.20260821093657-5a9b88dc22cf21 Aug 2026 pre-releaseNothing published for this version
-
v0.110.121 Aug 2026Release notes
Open source →What's Changed
Fixed a bug that caused the job API to not return the
last_run_atfield anymore.🐛 Bug Fixes
📦 Dependencies
Full Changelog: v0.110.0...v0.110.1
-
v0.110.020 Aug 2026Release notes
Open source →What's Changed
Direct TLS/SSL Support for web server
Set the new environment variables
HTTP_TLS_CERT_FILEandHTTP_TLS_KEY_FILEto enable HTTPS for the API and metrics server, and healthcheck.OpenBao pki/cert rotartion
Added automatic OpenBao certificate rotation, see the wiki for more info.
Examples
Set these env vars for doco-cd to enable and configure the cert rotation watcher:
CERT_ROTATION_ENABLED=true CERT_ROTATION_THRESHOLD=72h CERT_ROTATION_CHECK_INTERVAL=1h
Use
pki-role:external_secrets: CERT: "pki-role:pki:my-role:app.example.com"
pki-role:certs:myapp-role:myapp.example.com-> Issues a new certificate for the common namemyapp.example.comusing themyapp-rolePKI role in thecertssecret engine in therootnamespace.pki-role:my-namespace:certs:myapp-role:myapp.example.com-> Same as above but in themy-namespacenamespace.
pki-role:issues a fresh certificate and matching private key on deploy. When rotation is enabled, doco-cd will watch the deployed cert’s expiry and redeploy the affected service before it expires.Use
CERTfor the certificate andCERT_KEYfor the private key in your compose file.See the OpenBao Provider documentation in the PR.
✨ Features
- feat(external-secrets): implement automatic certificate rotation for deployments by @kimdre in #1690
- feat(api): add HTTPS support with TLS certificate configuration by @kimdre in #1704
🌟 Improvements
- feat(docker): normalize env vars for stable project hash during certificate rotation by @kimdre in #1697
- feat(notification): report image digest drifted services in ChangedServices by @dennislapchenko in #1692
- fix(commit-status): add support for GitHub Apps to report commit statuses by @kimdre in #1707
- fix(ssh-agent): simplify error handling in ServeAgent function by @kimdre in #1714
- fix(docker): reload registry auth from docker config on every lookup by @dennislapchenko in #1709
🐛 Bug Fixes
- fix(compose): fail start wait on crashlooping services by @dennislapchenko in #1695
📦 Dependencies
- fix(deps): update module github.com/moby/buildkit to v0.32.2 by @renovate[bot] in #1685
- fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #1688
- chore(deps): update dependency zensical to v0.0.54 by @renovate[bot] in #1687
- chore(deps): update module golang.org/x/tools to v0.49.0 by @renovate[bot] in #1686
- chore(deps): update golang:1.26.6 docker digest to 0d1d3a7 by @renovate[bot] in #1693
- chore(deps): update dependency zensical to v0.0.55 by @renovate[bot] in #1694
- chore(deps): update codespell-project/actions-codespell digest to 8f01853 by @renovate[bot] in #1698
- fix(deps): update module github.com/docker/compose/v5 to v5.5.0 by @renovate[bot] in #1699
- chore(deps): update dependency zensical to v0.0.56 by @renovate[bot] in #1708
- chore(deps): update docker/setup-buildx-action digest to 37fe631 by @renovate[bot] in #1712
📚 Miscellaneous
- fix(notification): stop repeating and duplicating failure notifications by @dennislapchenko in #1700
Full Changelog: v0.109.2...v0.110.0
-
v0.110.0-rc.116 Aug 2026 pre-releaseRelease notes
Open source →What's Changed
Added automatic OpenBao certificate rotation
To test the new feature, switch your OpenBao secret reference from
pki:topki-role:and enable the rotation watcher:external_secrets: CERT: "pki-role:pki:my-role:app.example.com"
Examples:
pki-role:certs:myapp-role:myapp.example.com-> Issues a new certificate for the common namemyapp.example.comusing themyapp-rolePKI role in thecertssecret engine in therootnamespace.pki-role:my-namespace:certs:myapp-role:myapp.example.com-> Same as above but in themy-namespacenamespace.
Then set these env vars for doco-cd:
CERT_ROTATION_ENABLED=true CERT_ROTATION_THRESHOLD=72h CERT_ROTATION_CHECK_INTERVAL=1h
pki-role:issues a fresh certificate and matching private key on deploy. When rotation is enabled, doco-cd will watch the deployed cert’s expiry and redeploy the affected service before it expires.
UseCERTfor the certificate andCERT_KEYfor the private key in your compose file.See the OpenBao Provider documentation in the PR.
✨ Features
- feat(external-secrets): implement automatic certificate rotation for deployments by @kimdre in #1690
📦 Dependencies
- fix(deps): update module github.com/moby/buildkit to v0.32.2 by @renovate[bot] in #1685
- fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #1688
- chore(deps): update dependency zensical to v0.0.54 by @renovate[bot] in #1687
- chore(deps): update module golang.org/x/tools to v0.49.0 by @renovate[bot] in #1686
Full Changelog: v0.109.2...v0.110.0
What's Changed
📦 Dependencies
- fix(deps): update module github.com/moby/buildkit to v0.32.2 by @renovate[bot] in #1685
- fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #1688
- chore(deps): update dependency zensical to v0.0.54 by @renovate[bot] in #1687
- chore(deps): update module golang.org/x/tools to v0.49.0 by @renovate[bot] in #1686
Full Changelog: v0.109.2...v0.110.0-rc.1
-
v0.109.3-0.20260817015452-50ed28ccec4917 Aug 2026 pre-releaseNothing published for this version
-
v0.109.3-0.20260814220554-cbce06fea1ce14 Aug 2026 pre-releaseNothing published for this version
-
v0.109.214 Aug 2026Release notes
Open source →What's Changed
Added
TRUSTED_PROXY_NETWORKSandTRUSTED_PROXY_HEADERenv vars to configure trusted proxies for real client ip logging in API logs.✨ Features
🌟 Improvements
🐛 Bug Fixes
📚 Miscellaneous
Full Changelog: v0.109.1...v0.109.2
-
v0.109.2-0.20260814155856-af22e5cf85e914 Aug 2026 pre-releaseNothing published for this version
-
v0.109.114 Aug 2026Release notes
Open source →What's Changed
A change in release v0.107.0 broke variable interpolation with values in
environmentin the deployment configuration. This release fixes this.One-off job containers now also have the default docker compose labels, for example:
com.docker.compose.projectcom.docker.compose.servicecom.docker.compose.project.working_dir
🌟 Improvements
- fix(scheduler): add compose labels to one-off job containers by @kimdre in #1677
- fix(api): improve logging for manually triggered scheduled job runs by @kimdre in #1678
🐛 Bug Fixes
📦 Dependencies
- chore(deps): update github/codeql-action digest to ff2f1c6 by @renovate[bot] in #1671
- chore(deps): update dependency golang to v1.26.6 by @renovate[bot] in #1672
Full Changelog: v0.109.0...v0.109.1
-
v0.109.013 Aug 2026Release notes
Open source →What's Changed
If a docker config is provided/mounted inside the container, doco-cd will now verify the configuration and throw errors if the config is invalid or requires a credential helper binary, that is not available in
$PATH.🌟 Improvements
- fix(oci): reject absolute paths and directory traversal attempts in target path construction by @kimdre in #1658
- fix(docker): check docker config file is readable and valid by @kimdre in #1660
- fix(docker): add check for missing credential helper binaries in config by @kimdre in #1661
- fix(docker): improve handling of missing credential helper binaries in config validation by @kimdre in #1665
- fix(autodiscovery): do not force recreate on inert config label drift by @dennislapchenko in #1670
📦 Dependencies
- chore(deps): update docker/dockerfile:1 docker digest to ecfaec9 by @renovate[bot] in #1663
- chore(deps): update golang:1.26.5 docker digest to 5822931 by @renovate[bot] in #1664
- fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #1666
- fix(deps): update module golang.org/x/crypto to v0.55.0 by @renovate[bot] in #1669
- fix(deps): update module github.com/docker/cli to v29.7.2+incompatible by @renovate[bot] in #1667
- fix(deps): update module github.com/docker/compose/v5 to v5.4.0 by @renovate[bot] in #1668
📚 Miscellaneous
- docs: add Renovate setup guide and configuration examples by @kimdre in #1654
- docs: rename page "Private Container Registries" to "Container Registry Authentication" by @kimdre in #1662
Full Changelog: v0.108.0...v0.109.0
-
v0.108.1-0.20260811214450-0d04c76723ec11 Aug 2026 pre-releaseNothing published for this version
-
v0.108.1-0.20260811151202-cc8cf4d72b3011 Aug 2026 pre-releaseNothing published for this version
-
v0.108.011 Aug 2026Release notes
Open source →What's Changed
This release adds support for including Git repos and OCI artifacts in Docker Compose's
includetop-level section as described in their documentation:includeallows you to reference Compose files from remote sources, such as OCI artifacts or Git repositories.
Here serviceB is defined in a Compose file stored on Docker Hub.include: - oci://docker.io/username/my-compose-app:latest # use a Compose file stored as an OCI artifact services: serviceA: build: . depends_on: - serviceB
Use the new
OCI_INSECURE_REGISTRIESenvironment variable to set a comma-seperated allowlist of OCI registries to treat as insecure (HTTP or self-signed certs). Entries are deduplicated and normalized to lowercase. Each entry must be a hostname with optional port (no URL schemes allowed).Example:
registry.example:5000,localhost:5000To use includes:
- Add
include:section to a Compose file:include: - path: https://github.com/user/repo.git#main:docker-compose.yml # use a relative path if the compose file is in a subdirectory: docker/compose.yml - path: oci://docker.io/namespace/config:latest
- If using private Git repos, ensure
GIT_ACCESS_TOKENor domain-scoped credentials are configured (see wiki). - If pulling from self-signed OCI registries, set
OCI_INSECURE_REGISTRIES.
🌟 Improvements
Full Changelog: v0.107.0...v0.108.0
- Add
-
v0.107.009 Aug 2026Release notes
Open source →What's Changed
New configuration options:
DATA_HOST_PATH: Optional source path of the deployment data mount as seen by the target Docker daemon (See Remote Docker daemons). Automatically detected by default.- Added configurable retention for rotated Docker Swarm configs and secrets, including an option to disable automatic pruning. See Docker Settings and Deploy Settings in the wiki.
Improvements, fixes and changes
- (Swarm) Rollbacks are detected and reported correctly now.
- (Swarm) Fixed a bug that caused all tasks/services of a stack to be recreated on every deployment. This fix required some bigger changes under the hood, that requires users to take action (see the boxes below).
Important
The default value of the
auto_discovery.deleteoption changed tofalse. Users, that want to auto-remove obsolete projects/stacks, need to explicitly setauto_discovery.delete: truein their deployment config now.Note
- The first deployment after upgrading doco-cd will trigger a recreation of all tasks/containers in the stack to set the correct doco-cd metadata.
- The REST API response shape for the Stack endpoints changed
- Compose secrets and configs and external secrets are now supported in scheduled jobs.
- A message gets send when a deployment starts and
APPRISE_NOTIFY_LEVELis set toinfo. - Diagnostics and troubleshooting for registry authentication has been improved. See Private Container Registries in the wiki.
- doco-cd is now able to recover from missing deployed commits (e.g. after a force push)
- Added more granular labeling for Prometheus metrics by allowing deployment metric labels (e.g. errors and durations) to be tracked per repository and deployment.
✨ Features
- feat: support explicit data host path by @nosovk in #1639
- feat(swarm): add configuration options for config and secret revisions retention by @kimdre in #1652
🌟 Improvements
- feat(notification): notify on started deployment by @kimdre in #1633
- fix(notification): log Apprise response body on notification request failures by @kimdre in #1634
- fix(autodiscovery): change default value of delete option to false by @kimdre in #1637
- fix(scheduler): support Compose secrets and configs in scheduled jobs by @kimdre in #1640
- fix(metrics): include deployment names in repository metrics labels by @kimdre in #1643
- fix(docker): detect Swarm rollbacks as deployment failures by @kimdre in #1644
- fix(docker): improve registry auth diagnostics by @kimdre in #1647
- feat(git): recover gracefuly from missing deployed commits after force push by @kimdre in #1650
- refactor(git): replace ZeroSHA with plumbing.ZeroHash in payload handling by @kimdre in #1651
🐛 Bug Fixes
📦 Dependencies
- chore(deps): update docker/github-builder digest to a492c6d by @renovate[bot] in #1630
- chore(deps): update golang:1.26.5 docker digest to 2005724 by @renovate[bot] in #1631
- fix(deps): update module github.com/google/go-containerregistry to v0.21.9 by @renovate[bot] in #1642
- fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #1641
- fix(deps): update module github.com/compose-spec/compose-go/v2 to v2.14.0 by @renovate[bot] in #1646
- fix(deps): update module github.com/sigstore/cosign/v3 to v3.1.3 by @renovate[bot] in #1645
📚 Miscellaneous
- fix: do not require a C compiler for the test-nobitwarden target by @nosovk in #1627
- docs: document the Docker API permissions required for each feature by @nosovk in #1626
- fix(swarm): stop recreating all tasks of a stack on every deployment by @nosovk in #1629
- test(swarm): update container name retrieval to use stack name prefix by @kimdre in #1648
- test(docker): improve log retrieval timing in Compose signal tests by @kimdre in #1649
New Contributors
Full Changelog: v0.106.0...v0.107.0
-
v0.106.005 Aug 2026Release notes
Open source →What's Changed
This release adds an option to rewrite source URLs for deployments.
SOURCE_URL_REWRITES(andSOURCE_URL_REWRITES_FILE) let you rewrite git source URLs before doco-cd clones them. Rules apply to both webhook- and poll-triggered deployments.This is useful when your Git provider advertises a public URL (in webhook payloads or poll configs) but doco-cd should clone through an internal network path instead — for example when your Forgejo instance is behind a reverse proxy with a public domain, but is reachable directly over a Docker network.
More info in the wiki:
✨ Features
📦 Dependencies
- chore(deps): update github/codeql-action digest to 5595cca by @renovate[bot] in #1610
- chore(deps): update dependency zensical to v0.0.53 by @renovate[bot] in #1611
- chore(deps): update docker/buildx-bin docker tag to v0.36.1 by @renovate[bot] in #1613
- chore(deps): update debian:trixie-slim docker digest to 3a39a05 by @renovate[bot] in #1612
📚 Miscellaneous
Full Changelog: v0.105.2...v0.106.0
-
v0.106.0-rc.104 Aug 2026 pre-releaseNothing published for this version
-
v0.105.204 Aug 2026Nothing published for this version
-
v0.105.103 Aug 2026Nothing published for this version
-
v0.105.1-0.20260802170902-0bc03ce363c902 Aug 2026 pre-releaseNothing published for this version
-
v0.105.001 Aug 2026Nothing published for this version
-
v0.104.031 Jul 2026Nothing published for this version
-
v0.104.0-rc.1.0.20260730173829-ae806c11287430 Jul 2026 pre-releaseNothing published for this version
-
v0.104.0-rc.130 Jul 2026 pre-releaseNothing published for this version
-
v0.103.028 Jul 2026Nothing published for this version
-
v0.102.026 Jul 2026Nothing published for this version
-
v0.102.0-rc.124 Jul 2026 pre-releaseNothing published for this version
-
v0.101.2-0.20260725022236-3843778a06d625 Jul 2026 pre-releaseNothing published for this version
-
v0.101.124 Jul 2026Nothing published for this version
-
v0.101.023 Jul 2026Nothing published for this version
-
v0.100.022 Jul 2026Nothing published for this version
-
v0.99.2-0.20260722170919-5cefa8e5314c22 Jul 2026 pre-releaseNothing published for this version
-
v0.99.121 Jul 2026Nothing published for this version
-
v0.99.020 Jul 2026Nothing published for this version
-
v0.98.1-0.20260719224839-8aaca4b97b3f19 Jul 2026 pre-releaseNothing published for this version
-
v0.98.019 Jul 2026Nothing published for this version
-
v0.97.1-0.20260719111645-667a107c2ad319 Jul 2026 pre-releaseNothing published for this version
-
v0.97.019 Jul 2026Nothing published for this version
-
v0.97.0-rc.1.0.20260718193626-c6301089e44718 Jul 2026 pre-releaseNothing published for this version
-
v0.97.0-rc.118 Jul 2026 pre-releaseNothing published for this version
-
v0.96.018 Jul 2026Nothing published for this version
-
v0.96.0-rc.2.0.20260718011053-d55f51a33b3818 Jul 2026 pre-releaseNothing published for this version
-
v0.96.0-rc.217 Jul 2026 pre-releaseNothing published for this version
-
v0.96.0-rc.117 Jul 2026 pre-releaseNothing published for this version
-
v0.95.1-0.20260717110251-f5633894cc3017 Jul 2026 pre-releaseNothing published for this version
-
v0.95.017 Jul 2026Nothing published for this version
-
v0.94.017 Jun 2026Nothing published for this version
-
v0.93.117 Jun 2026Nothing published for this version
-
v0.93.014 Jun 2026Nothing published for this version
-
v0.92.114 Jun 2026Nothing published for this version
-
v0.92.013 Jun 2026Nothing published for this version
-
v0.92.0-rc.110 Jun 2026 pre-releaseNothing published for this version
-
v0.91.1-0.20260611030714-b3da5fb923e611 Jun 2026 pre-releaseNothing published for this version
-
v0.91.1-0.20260607062105-48848065e31307 Jun 2026 pre-releaseNothing published for this version
-
v0.91.006 Jun 2026Nothing published for this version
-
v0.91.0-rc.104 Jun 2026 pre-releaseNothing published for this version
-
v0.90.103 Jun 2026Nothing published for this version
-
v0.90.001 Jun 2026Nothing published for this version
-
v0.89.230 May 2026Nothing published for this version