Skip to content

Releases: kimdre/doco-cd

v0.51.0

21 Nov 17:38
88bc044

Choose a tag to compare

What's Changed

This release adds a new app setting/env var valled DEPLOY_CONFIG_BASE_DIR, which lets you set the relative path to the directory that contains the doco-cd deploy configs (globally for all repositories). By default this is still the root directory (/) of the repository.

Note

This does not affect/alter the working_dir path in the deploy configs. It must still be relative to the repository root.

See the wiki: https://github.com/kimdre/doco-cd/wiki/App-Settings

Also doco-cd now follows symlinks during the SOPS decryption.

✨ Features

  • feat: Allow specifying DEPLOY_CONFIG_BASE_DIR by @bjw-s in #794

🌟 Improvements

  • fix: improve Dockerfile by @kimdre in #792
  • fix(decrypt): add support for following symlinks during decryption by @kimdre in #801

📦 Dependencies

  • chore(deps): update github/codeql-action digest to e12f017 by @renovate[bot] in #784
  • chore(deps): update actions/checkout digest to 93cb6ef by @renovate[bot] in #783
  • chore(deps): update actions/checkout action to v5.0.1 by @renovate[bot] in #787
  • chore(deps): update golang:1.25.4 docker digest to f60eaa8 by @renovate[bot] in #786
  • fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #789
  • fix(deps): update module github.com/infisical/go-sdk to v0.6.0 by @renovate[bot] in #790
  • fix(deps): update module github.com/infisical/go-sdk to v0.6.1 by @renovate[bot] in #791
  • chore(deps): update actions/setup-go action to v6.1.0 by @renovate[bot] in #795
  • fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #796

📚 Miscellaneous

  • chore: add Codecov configuration for coverage reporting by @kimdre in #797

New Contributors

Full Changelog: v0.50.0...v0.51.0

v0.50.0

17 Nov 20:13
eec137c

Choose a tag to compare

What's Changed

This release adds two new features/improvements:

Deployment Auto Discovery

You can use the new auto-discovery feature to automatically deploy your stacks/projects from a directory structure.
Enable it with auto_discover: true, you can specify the directory to be scanned with the working_dir setting.
Doco-CD will then scan the directory for sub-directories that contain docker-compose.y(a)ml or compose.y(a)ml files and use the name of the sub-directory as the stack name (similiar to the name deploy setting).

See the wiki for more information: https://github.com/kimdre/doco-cd/wiki/Deploy-Settings#auto-discover-settings

For example with a file structure like this

.doco-cd.yml
apps/
├── wordpress/
│   ├── docker-compose.yml
│   └── .env
├── nginx/
│   ├── docker-compose.yaml
│   └── configs/
│       └── nginx.conf
└── misc/
    └── image.png

and a .doco-cd.yml with the following content:

working_dir: apps/
auto_discover: true

doco-cd would deploy 2 stacks to the docker host:

  • wordpress
  • nginx

Remote env files when deploying from a remote repository

A new syntax has been added to the env_files deploy setting.
If repository_url is set to deploy from a different repo, you can use the remote:<filepath> syntax to specify, that the dotenv file is located in the remote repository and should be loaded from there. Entries/Keys, that appear in multiple files, get overwritten by the next occurrence and remote dotenv files have higher priority than local ones.

See the wiki for more information: https://github.com/kimdre/doco-cd/wiki/Deploy-Settings#from-remote-repository

For example:

# base.env
TEST=base
HELLO=world
# test.env in remote repository
TEST=changed
repository_url: <url to repo>
env_files:
  - base.env
  - remote:test.env

Would result in

TEST=changed
HELLO=world

✨ Features

  • feat(config): add autodiscovery support for deployment configurations by @kimdre in #766

🌟 Improvements

  • fix(secret-provider): improve 1Password client handling by @kimdre in #773
  • feat(config): allow propagation of local env files when using a remote repository by @kimdre in #777

📦 Dependencies

  • chore(deps): update golang:1.25.4 docker digest to e68f6a0 by @renovate[bot] in #763
  • fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #764
  • fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #768
  • fix(deps): update module golang.org/x/net to v0.47.0 by @renovate[bot] in #769
  • chore(deps): pin codespell-project/actions-codespell action to 406322e by @renovate[bot] in #771
  • chore(deps): update github/codeql-action digest to 014f16e by @renovate[bot] in #774
  • chore(deps): update module golang.org/x/tools to v0.39.0 by @renovate[bot] in #775

📚 Miscellaneous

  • ci: move spelling errors check job to test.yaml by @kimdre in #765
  • ci: improve spelling errors job by @kimdre in #767

Full Changelog: v0.49.0...v0.50.0

v0.50.0-rc.2

14 Nov 09:50
b488843

Choose a tag to compare

v0.50.0-rc.2 Pre-release
Pre-release

What's Changed

What's Changed

This adds a new auto_discover boolean option to the deploy config. If set to true, doco-cd will try to autodiscover projects/stacks to deploy by searching for docker-compose.y(a)ml or compose.y(a)ml files in subdirectories in the working directory (working_dir). Doco-cd will internally generate new deploy configs based on the directory name and inherits all other settings from the base deploy config inside the .doco-cd.yml file or inline deployment config in poll configs.
When a app is no longer available in the working_dir (e.g. deleted or moved to another directory outside the working dir), doco-cd will automatically remove the deployed project/stack from the docker host.

Available settings:

auto_discover: (bool) true  # enables autodiscovery of services to deploy in the working directory by checking for subdirectories with docker-compose files
auto_discover_opts:   # options for the autodiscovery feature
  depth: (int) 0  # maximum depth of subdirectories to scan for docker-compose files, set to 0 for no limit
  delete: (bool) true  # auto-remove obsolete auto-discovered deployments that are no longer present in the repository 

For example with a structure like this

.doco-cd.yml
apps/
  wordpress/
    docker-compose.yml
    .env
  nginx/
    docker-compose.yaml
    configs/
      nginx.conf
  misc/
    image.png

and a .doco-cd.yml with the following content:

working_dir: apps/
auto_discover: true

doco-cd would deploy 2 stacks to the docker host:

  • wordpress
  • nginx

✨ Features

  • feat(config): add autodiscovery support for deployment configurations by @kimdre in #766

🌟 Improvements

  • fix(secret-provider): improve 1Password client handling by @kimdre in #773

📦 Dependencies

  • fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #768
  • fix(deps): update module golang.org/x/net to v0.47.0 by @renovate[bot] in #769
  • chore(deps): pin codespell-project/actions-codespell action to 406322e by @renovate[bot] in #771
  • chore(deps): update github/codeql-action digest to 014f16e by @renovate[bot] in #774
  • chore(deps): update module golang.org/x/tools to v0.39.0 by @renovate[bot] in #775

📚 Miscellaneous

Full Changelog: v0.50.0-rc.1...v0.50.0-rc.2

v0.50.0-rc.1

13 Nov 07:25
810c47f

Choose a tag to compare

v0.50.0-rc.1 Pre-release
Pre-release

What's Changed

This adds a new auto_discover boolean option to the deploy config. If set to true, doco-cd will try to autodiscover projects/stacks to deploy by searching for docker-compose.y(a)ml or compose.y(a)ml files in subdirectories in the working directory (working_dir). Doco-cd will internally generate new deploy configs based on the directory name and inherits all other settings from the base deploy config inside the .doco-cd.yml file (or inline deployment config).
When a app is no longer available in the working_dir (e.g. deleted or moved to another directory outside the working dir), doco-cd will automatically remove the deployed project/stack from the docker host.

For example with a structure like this

.doco-cd.yml
apps/
  wordpress/
    docker-compose.yml
    .env
  nginx/
    docker-compose.yaml
    configs/
      nginx.conf
  misc/
    image.png

and a .doco-cd.yml with the following content:

working_dir: apps/
auto_discover: true

doco-cd would deploy 2 stacks to the docker host:

  • wordpress
  • nginx

✨ Features

  • feat(config): add autodiscovery support for deployment configurations by @kimdre in #766

📦 Dependencies

  • chore(deps): update golang:1.25.4 docker digest to e68f6a0 by @renovate[bot] in #763
  • fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #764

📚 Miscellaneous

  • ci: move spelling errors check job to test.yaml by @kimdre in #765

Full Changelog: v0.49.0...v0.50.0-rc.1

v0.49.0

11 Nov 14:49
23fd31a

Choose a tag to compare

What's Changed

Added OpenBao as a new external secret provider.
See the wiki for more info: https://github.com/kimdre/doco-cd/wiki/External-Secrets#openbao

✨ Features

  • feat(external-secret): add OpenBao as a secrets provider by @kimdre in #752

📦 Dependencies

  • fix(deps): update module github.com/docker/docker to v28.5.2+incompatible by @renovate[bot] in #755
  • fix(deps): update module github.com/docker/cli to v28.5.2+incompatible by @renovate[bot] in #754
  • fix(deps): update testcontainers-go monorepo to v0.40.0 by @renovate[bot] in #756
  • chore(deps): update golangci/golangci-lint-action action to v9 by @renovate[bot] in #757
  • fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #760

Full Changelog: v0.48.0...v0.49.0

v0.48.0

09 Nov 09:59
f553f9a

Choose a tag to compare

What's Changed

Inline Poll Deployments

Polling configurations (POLL_CONFIG or POLL_CONFIG_FILE) now support defining deployments in-line without requiring a .doco-cd.yml file inside the target repository. Add a deployments list to each poll job to describe the stacks doco-CD should manage:

- url: https://github.com/example/app.git
  reference: refs/heads/main
  interval: 300
  deployments:
    - name: example-app
      working_dir: services/app
      compose_files:
        - compose.yaml
      env_files:
        - .env.production

Inline deployments reuse the same fields as .doco-cd.yml files, including support for external secrets and destroy workflows. The poll job url is always used as the deployment source.

If the poll config has an inline deploy config and the target repository also contains a .doco-cd.yml file, the file will be ignored in favor of the inline deploy config.

See also the wiki about this feature: https://github.com/kimdre/doco-cd/wiki/Poll-Settings#inline-deploy-configs

✨ Features

  • feat(config): add support for inline deploy config in poll configs by @tldev in #747

📦 Dependencies

  • chore(deps): update golang:1.25.3 docker digest to 6d4e5e7 by @renovate[bot] in #745
  • chore(deps): update dependency golang to v1.25.4 by @renovate[bot] in #746
  • chore(deps): update golang:1.25.4 docker digest to 6ca9eb0 by @renovate[bot] in #748
  • chore(deps): update softprops/action-gh-release digest to 5be0e66 by @renovate[bot] in #749
  • chore(deps): update module github.com/catenacyber/perfsprint to v0.10.1 by @renovate[bot] in #750
  • fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #751

New Contributors

Full Changelog: v0.47.0...v0.48.0

v0.47.0

07 Nov 10:20
6993d01

Choose a tag to compare

What's Changed

Adds a new env_files deploy setting to doco-cd that allows you to specify dotenv files for variable interpolation.
Subsequent .env files overwrite each other.

If env_files is unset, the default value env_files: [".env"] will be used; If the default .env file does not exist, it will be ignored. This reflects the defaults of the docker compose specification.

For example

# base.env
NAME=test
STAGE=dev
# prod.env
STAGE=prod
# .doco-cd.yml
name: test
env_files:
  - base.env
  - prod.env
# docker-compose.yml
services:
  test:
    labels:
      - stage=$STAGE
      - name=$NAME

Will result in

# docker-compose.yml
services:
  test:
    labels:
      - stage="prod"
      - name="test"

✨ Features

  • feat(compose): allow custom dotenv files for variable interpolation by @kimdre in #736

🌟 Improvements

📦 Dependencies

  • chore(deps): update docker/setup-qemu-action digest to c7c5346 by @renovate[bot] in #739
  • chore(deps): update docker/metadata-action digest to 318604b by @renovate[bot] in #738
  • chore(deps): bump github.com/containerd/containerd/v2 from 2.1.4 to 2.1.5 by @dependabot[bot] in #734

Full Changelog: v0.46.0...v0.47.0

v0.47.0-rc.1

07 Nov 09:48
8c93951

Choose a tag to compare

v0.47.0-rc.1 Pre-release
Pre-release

What's Changed

Adds a new env_files deploy setting to doco-cd that allows you to specify specify dotenv files for variable interpolation.
Subsequent .env files overwrite each other.

If env_files is unset, the default value env_files: [".env"] will be used; If the default .env file does not exist, it will be ignored. This reflects the defaults of the docker compose specification.

For example

# base.env
NAME=test
STAGE=dev
# prod.env
STAGE=prod
# .doco-cd.yml
name: test
env_files:
  - base.env
  - prod.env
# docker-compose.yml
services:
  test:
    labels:
      - stage=$STAGE
      - name=$NAME

Will result in

# docker-compose.yml
services:
  test:
    labels:
      - stage="prod"
      - name="test"

✨ Features

  • feat(compose): allow custom dotenv files for variable interpolation by @kimdre in #736

🌟 Improvements

Full Changelog: v0.46.0...v0.47.0-rc.1

v0.46.0

03 Nov 22:17
456df24

Choose a tag to compare

What's Changed

This release features a new run_once setting for poll configs that allows you to run a poll job only once to initialize a deployment. See the wiki for more info: https://github.com/kimdre/doco-cd/wiki/Poll-Settings

Also doco-cd now supports bind mounts also in Docker Swarm mode!

✨ Features

  • feat(poll): add run_once flag to deploy only once via poll job by @p0lycarpio in #729

🌟 Improvements

  • fix(swarm): support bind mounts in docker swarm by @kimdre in #732

📦 Dependencies

  • chore(deps): update busybox:1.37-uclibc docker digest to 7b5ade1 by @renovate[bot] in #723
  • chore(deps): update github/codeql-action digest to 0499de3 by @renovate[bot] in #724
  • fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #725
  • fix(deps): update module github.com/compose-spec/compose-go/v2 to v2.9.1 by @renovate[bot] in #727
  • fix(deps): update module github.com/docker/compose/v2 to v2.40.3 by @renovate[bot] in #706

New Contributors

Full Changelog: v0.45.0...v0.46.0

v0.46.0-rc.1

03 Nov 21:42
0206097

Choose a tag to compare

v0.46.0-rc.1 Pre-release
Pre-release

What's Changed

🌟 Improvements

  • fix(swarm): support bind mounts in docker swarm by @kimdre in #732

📦 Dependencies

  • chore(deps): update busybox:1.37-uclibc docker digest to 7b5ade1 by @renovate[bot] in #723
  • chore(deps): update github/codeql-action digest to 0499de3 by @renovate[bot] in #724
  • fix(deps): update aws-sdk-go-v2 monorepo by @renovate[bot] in #725
  • fix(deps): update module github.com/compose-spec/compose-go/v2 to v2.9.1 by @renovate[bot] in #727
  • fix(deps): update module github.com/docker/compose/v2 to v2.40.3 by @renovate[bot] in #706

📚 Miscellaneous

  • feat(poll): add run_once flag to deploy only once via poll job by @p0lycarpio in #729

New Contributors

Full Changelog: v0.45.0...v0.46.0-rc.1