Skip to content

v0.113.0

Latest

Choose a tag to compare

@kimdre kimdre released this 28 Aug 07:01
· 1 commit to main since this release
40a32c2

This release adds multi-context support and cleans up deprecated code/features.

🚨 Breaking Changes

1. Job execution mode

The one_shot alias for one_off is no longer supported.
Use one_off instead; one_shot values are rejected.

User actions

  • Change one_shot to one_off in job definitions.

2. Auto-discovery labels

Legacy label formats are retired:

  • cd.doco.deployment.auto_discover
  • cd.doco.deployment.auto_discover.delete
  • cd.doco.deployment.auto_discovery.delete

New deployments use cd.doco.deployment.auto_discovery and the JSON configuration label cd.doco.deployment.auto_discovery.config.

Automatic migration

Existing deployments using legacy auto-discovery labels are migrated automatically:

  • Swarm service labels are converted in place without restarting tasks.
  • Legacy delete settings are preserved in the new JSON configuration label.
  • Standalone containers remain discoverable during the transition and receive the
    current labels on their next deployment.
  • No manual relabeling is required for existing auto-discovered deployments.

3. SSH private keys: Dropped support for PKCS#1 ENCRYPTED PRIVATE KEY

Support is removed because it relied on the deprecated Go x509.DecryptPEMBlock() API. Use modern OpenSSH or unencrypted PEM key formats.

User actions

  • Convert password-protected SSH keys to a supported modern format.

New label to deploy new services in created/stopped state.

Docker Compose services are started automatically after they are created or updated. To let an external tool control a service's lifecycle, set the cd.doco.deployment.autostart service label to false.

services:
  on-demand:
    image: example/on-demand:latest
    labels:
      cd.doco.deployment.autostart: "false"

The label defaults to true. When it is false:

  • A service without an existing container is created but not started.
  • A stopped service remains stopped when it is recreated or updated.
  • A running service is restarted normally when it is recreated or updated.
  • A service that remains stopped is excluded from deployment readiness checks.

More info in the wiki: https://doco.cd/latest/Deploy-Settings/#preserve-a-services-running-state

Multi-Context Support

Added multi-context support for Docker contexts to all subsystems of doco-cd:

  • Deployments (already implemented in an earlier release)
  • Reconciliation
  • Job scheduling
  • Certificate rotation (external secrets)
  • REST API
  • Observability/Prometheus metrics (added new context label)

Project, stack, and scheduled-job endpoints now accept one optional context query parameter. If it is omitted or set to default, the endpoint uses the default Docker context. Named contexts must exist in the Docker CLI context store available to doco-cd. More info in the wiki.

These endpoints return the selected external context name in the X-Doco-CD-Context response header. Their JSON response shapes do not change.


What's Changed

🚨 Breaking Changes

  • refactor!: remove deprecated one_shot alias for jobs, deprecated labels, and PKCS#1 SSH support by @kimdre in #1757

✨ Features

  • feat(docker): implement multi-context daemon support across all subsystems by @kimdre in #1744
  • feat(config): add service autostart control label by @kimdre in #1756

🌟 Improvements

  • fix(deploy): allow duplicate project names across different Docker contexts by @kimdre in #1729
  • fix(deps): replace github.com/google/uuid package with stdlib uuid by @kimdre in #1747
  • fix(migration): handle multiple migration errors and continue processing by @kimdre in #1758

📦 Dependencies

  • chore(deps): update debian:trixie-slim docker digest to d7e1218 by @renovate[bot] in #1741
  • chore(deps): update golang:1.27.0 docker digest to 0ecdc2a by @renovate[bot] in #1742
  • fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #1743
  • fix(deps): update module github.com/google/go-containerregistry to v0.22.0 by @renovate[bot] in #1749
  • chore(deps): update github/codeql-action digest to cdf488f by @renovate[bot] in #1752
  • fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #1753
  • chore(deps): update gcr.io/distroless/base-debian13 docker digest to 9ef50bc by @renovate[bot] in #1760
  • fix(deps): update module github.com/aws/aws-sdk-go-v2/service/secretsmanager to v1.45.0 by @renovate[bot] in #1761

📚 Miscellaneous

  • test: cleanup test setup by @kimdre in #1740
  • test(deploy): enhance test cases for deployment configuration discovery by @kimdre in #1745

Full Changelog: v0.112.0...v0.113.0