Commit Graph
76 Commits
Author SHA1 Message Date
volker.raschek 027e7ed7ad chore(deps): update actions/checkout to v4.3.0
Lint Golang files / Run golang CI linter (stable, ubuntu-latest-amd64) (push) Successful in 16s
Run Golang tests / Run unit tests (stable, ubuntu-latest-amd64) (push) Successful in 11s
Lint Markdown files / Run markdown linter (push) Successful in 6s
Lint Golang files / Run golang CI linter (stable, ubuntu-latest-arm64) (push) Successful in 45s
Run Golang tests / Run unit tests (stable, ubuntu-latest-arm64) (push) Successful in 25s
2025-08-12 08:48:30 +02:00
volker.raschek b24b4e6a71 chore(deps): update golangci/golangci-lint to v2.3.0
Lint Golang files / Run golang CI linter (stable, ubuntu-latest-amd64) (push) Successful in 13s
Lint Markdown files / Run markdown linter (push) Successful in 3s
Lint Golang files / Run golang CI linter (stable, ubuntu-latest-arm64) (push) Successful in 42s
Run Golang tests / Run unit tests (stable, ubuntu-latest-amd64) (push) Successful in 46s
Run Golang tests / Run unit tests (stable, ubuntu-latest-arm64) (push) Successful in 22s
2025-08-12 08:31:39 +02:00
volker.raschek c60eb969d0 fix(golangci): add config
Run Golang tests / Run unit tests (stable, ubuntu-latest-amd64) (push) Successful in 6s
Lint Markdown files / Run markdown linter (push) Successful in 3s
Lint Golang files / Run golang CI linter (stable, ubuntu-latest-arm64) (push) Successful in 29s
Run Golang tests / Run unit tests (stable, ubuntu-latest-arm64) (push) Successful in 23s
Lint Golang files / Run golang CI linter (stable, ubuntu-latest-amd64) (push) Successful in 59s
2025-08-12 08:29:38 +02:00
volker.raschek 405f996e19 style(ci): rename workflows
Lint Golang files / Run golang CI linter (stable, ubuntu-latest-amd64) (push) Successful in 10s
Lint Markdown files / Run markdown linter (push) Successful in 4s
Lint Golang files / Run golang CI linter (stable, ubuntu-latest-arm64) (push) Successful in 28s
Run Golang tests / Run unit tests (stable, ubuntu-latest-arm64) (push) Successful in 23s
Run Golang tests / Run unit tests (stable, ubuntu-latest-amd64) (push) Successful in 1m2s
2025-08-12 08:20:28 +02:00
volker.raschek 9c256a53c4 chore(ci): use DavidAnson/markdownlint-cli2-action@v19.1.0
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 6s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 8s
Lint Markdown files / markdown-lint (push) Successful in 4s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 31s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 47s
2025-06-01 13:38:28 +02:00
volker.raschek a5423dfe4d chore(ci): use matrix to run tests on multiple architectures
Golang Tests / unittest (stable, ubuntu-latest-amd64) (push) Successful in 27s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 15s
Markdown linter / markdown-lint (push) Successful in 3s
Golang Tests / unittest (stable, ubuntu-latest-arm64) (push) Successful in 1m18s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 46s
2025-06-01 12:11:41 +02:00
volker.raschek 9705b468fa chore(ci): be golangci-lint compatible
Golang Tests / unittest (push) Successful in 28s
Markdown linter / markdown-lint (push) Successful in 3s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Successful in 1m49s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Successful in 2m13s
2025-05-31 23:02:00 +02:00
volker.raschek f8a7634e91 chore(ci): add matrix for golangci-lint
Markdown linter / markdown-lint (push) Successful in 7s
Golang Tests / unittest (push) Successful in 30s
Golang CI lint / golangci (stable, ubuntu-latest-amd64) (push) Failing after 43s
Golang CI lint / golangci (stable, ubuntu-latest-arm64) (push) Failing after 3m24s
2025-05-31 22:57:52 +02:00
volker.raschek 96bdc09d14 chore(ci): add golangci-lint
Golang Tests / unittest (push) Successful in 30s
Markdown linter / markdown-lint (push) Successful in 10s
Golang CI lint / golangci (push) Failing after 3m0s
2025-05-31 22:54:06 +02:00
volker.raschek 96447f88b3 chore(ci): update workflow_dispatch for update docker hub description
Golang Tests / unittest (push) Successful in 32s
Markdown linter / markdown-lint (push) Successful in 14s
2025-05-31 22:05:54 +02:00
volker.raschek 8635fd3334 fix(ignore): add dist directory
Golang Tests / unittest (push) Successful in 20s
Markdown linter / markdown-lint (push) Successful in 10s
2025-05-31 21:41:49 +02:00
volker.raschek a6da12db45 style(vscode): remove project config
Markdown linter / markdown-lint (push) Successful in 13s
Golang Tests / unittest (push) Successful in 25s
2025-05-31 21:05:39 +02:00
volker.raschek 07067b6b47 chore(Makefile): remove unqualified image tag
Markdown linter / markdown-lint (push) Successful in 8s
Golang Tests / unittest (push) Successful in 34s
2025-05-31 18:11:35 +02:00
volker.raschek b50b9d8f19 style(linter): be compliant with golangci-lint
Markdown linter / markdown-lint (push) Successful in 12s
Golang Tests / unittest (push) Successful in 29s
2025-05-29 13:44:55 +02:00
volker.raschek 445a9b6799 fix(riscv64): add support
Markdown linter / markdown-lint (push) Successful in 8s
Golang Tests / unittest (push) Successful in 33s
Release / release (push) Successful in 34s
Release / sync-to-hub-docker-io (push) Successful in 57s
2025-05-29 13:14:21 +02:00
volker.raschek cd521a803b feat(riscv64): add support
Markdown linter / markdown-lint (push) Successful in 13s
Golang Tests / unittest (push) Successful in 24s
2025-05-29 13:10:28 +02:00
volker.raschek fb3af62fc3 test(service): adapt exptected result of the command attribut
Markdown linter / markdown-lint (push) Successful in 14s
Golang Tests / unittest (push) Successful in 30s
2025-05-22 09:58:05 +02:00
volker.raschek e30c7c007f feat: support service.command
Markdown linter / markdown-lint (push) Successful in 3s
Release / release (push) Successful in 1m24s
Release / sync-to-hub-docker-io (push) Successful in 28s
Golang Tests / unittest (push) Failing after 2m48s
This patch extends dcmerge to support the command attribut of a defined service.
For example:

```yaml
services:
  busybox
    command: [ "/usr/bin/cp", "--recursive", "--force", "/tmp/bar.txt", "/tmp/foo.txt"]
    image: library/busybox:latest
```

The command attribute is interpreted as a whole. This means that individual
arguments are not merged as a comparison, as this would change the meaning of
the command attribute.
2025-05-22 09:49:43 +02:00
volker.raschek 973e90986c style(markdown): adapt configuration
Markdown linter / markdown-lint (push) Successful in 8s
Golang Tests / unittest (push) Successful in 29s
2025-05-13 17:53:33 +02:00
volker.raschek 90a6350a02 fix(drone): remove configuration
Golang Tests / unittest (push) Successful in 22s
Markdown linter / markdown-lint (push) Successful in 10s
2025-05-08 14:51:15 +02:00
volker.raschek 6fb289da71 docs(README): remove badge of drone.io
Golang Tests / unittest (push) Successful in 41s
Markdown linter / markdown-lint (push) Successful in 16s
Update Docker Hub Description / update-description-on-hub-docker-io (push) Successful in 16s
2025-04-14 19:51:56 +02:00
volker.raschek ed0b94e4b8 fix(ci): select correct repository on hub.docker.io
Golang Tests / unittest (push) Waiting to run
Markdown linter / markdown-lint (push) Waiting to run
Update Docker Hub Description / update-description-on-hub-docker-io (push) Waiting to run
2025-04-14 19:51:23 +02:00
volker.raschek 5f06edff04 chore(ci): use '.yaml' extension 2025-04-14 19:51:23 +02:00
volker.raschek 5560d13550 feat(ci): sync description on hub.docker.io
Markdown linter / markdown-lint (push) Waiting to run
Golang Tests / unittest (push) Has been cancelled
Update Docker Hub Description / update-description-on-hub-docker-io (push) Failing after 10s
2025-04-14 19:45:41 +02:00
volker.raschek 6387e972e3 chore(ci): add golang tests
Golang Tests / unittest (push) Successful in 42s
Markdown linter / markdown-lint (push) Successful in 12s
2025-04-14 19:29:09 +02:00
volker.raschek 5eec7fc1a5 chore(ci): add markdownlinter
Markdown linter / markdown-lint (push) Successful in 8s
2025-04-14 19:20:12 +02:00
volker.raschek 0688315658 chore(ci): remove suffix
Release / release (push) Successful in 1m52s
Release / sync-container-image (push) Successful in 48s
2025-04-14 19:17:56 +02:00
volker.raschek 63a54e130d chore(ci): use goreleaser
Release / release (push) Successful in 6m4s
Release / sync-container-image (push) Failing after 33s
2025-04-14 19:07:10 +02:00
volker.raschek cc9c98b84d chore(renovate): use configuration preset
continuous-integration/drone/push Build is passing
2025-03-30 22:46:31 +02:00
volker.raschek 3c56ae6e5e fix(docker-compose): extend YAML marshaler of service.dependsOn
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
The current implementation of the method DependsOnContainer.MarshalYAML()
transform the short syntax into the long syntax. More about booth version
types of depends_on is described here:

- https://docs.docker.com/reference/compose-file/services/#short-syntax-1
- https://docs.docker.com/reference/compose-file/services/#long-syntax-1

Other applications are not compatible with the long syntax. For this reason the
MarshalYAML method has been adapted to take care of the specific syntax.

As documented of the long syntax, `depends_on.<dependency>.condition: service_started`
is the same as `depends_on: [ 'dependency' ]`, the long syntax will be shortened
when no other condition type of a dependency is specified.
2025-03-04 17:50:01 +01:00
volker.raschek ed7622a34f chore(coverage): ignore coverage.txt 2025-03-04 17:50:01 +01:00
volker.raschek 967c20c638 fix(cmd): replace deprecated cobra function 2025-03-04 17:50:01 +01:00
volker.raschek 68db80a05a fix(yaml): set indentation to 2 spaces
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
The replaced module gopkg.in/yaml.v3 enforce an indentation of 4 spaces, when 0
spaces are defined. This is sad, because the old behavior can not be reproduced.

Instead of using 4 spaces for indentation, when `yamlEncoder.SetIndent(0)` is
called, we call `yamlEncoder.SetIndent(2)` to use 2 spaces for indentation,
because it is closer to 0 instead 4 spaces.
2025-02-25 16:35:44 +01:00
volker.raschek 6761dbf419 test(docker-compose): add further tests regrading depends_on
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2025-02-25 16:21:13 +01:00
volker.raschek ab282e5173 feat: support depends_on
continuous-integration/drone/push Build is passing
This PR supports the extended pattern of `depends_on`. If the short version of
`depends_on` is defined, it will be migrated to the extended version like the
example below:

```yaml
services:
  web:
    depends_on
    - database

services:
  web:
    depends_on:
      database:
        condition: service_started
```

All three types of merging strategies are supported.
2025-02-24 22:44:11 +01:00
volker.raschek 003db26fe5 feat: respect individual ports instead of replacing the entire slice of ports
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
The following patch adapts the logic of the merge strategy existing and last
win for service ports.

In the past, the complete object has been replaced based on the merge strategy.
This behavior has been adapted, that each port should now considered
individually per strategy.

Both strategies now focus on the src port of the host system. With a last-win,
the dest port of the container is overwritten with an existing src port.

```diff
  service:
    my-app:
      ports:
- - 0.0.0.0:8080:80
+ - 0.0.0.0:8080:8080
      - 0.0.0.0:8443:8443
```

The situation is different with the existing win strategy. There, the destination
port can no longer be changed once there is a connection with a sourc port.
2025-02-21 13:55:53 +01:00
volker.raschek f8b4fe9af6 fix(dockerCompoe): compare srcIP and srcPort of mergeExistingWinPorts() 2025-02-21 09:51:53 +01:00
volker.raschek 2c91222753 chore(renovate): disable go package gopkg.in/yaml.v2
continuous-integration/drone/push Build is passing
2025-02-20 17:29:39 +01:00
volker.raschek b45f8181aa style(lint): block unused parameter
continuous-integration/drone/push Build is passing
2025-02-20 17:26:43 +01:00
volker.raschek 13301cb367 fix(dockerCompose): add further methods of port
This patch adds the following methods:

ports.ExistsDstIP()
ports.ExistsDstPort()
ports.ExistsProtocol()
ports.ExistsSrcIP()
ports.ExistsSrcPort()
ports.GetDstIP()
ports.GetDstPort()
ports.GetProtocol()
ports.GetSrcIP()
ports.GetSrcPort()
2025-02-20 17:26:43 +01:00
volker.raschek 0a68b2d8e7 fix(dockerCompose): add port.ExistProtocol 2025-02-20 17:26:43 +01:00
volker.raschek f2dc3d5174 fix(fetcher): handle all os.Stat() errors
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-12-03 11:09:38 +01:00
volker.raschek 6ced20b951 fix(ci): update renovate config
continuous-integration/drone/push Build is passing
2024-03-02 13:42:00 +01:00
volker.raschek 2da0b01a44 fix(renovate): remove automerge options
continuous-integration/drone/push Build is passing
2024-01-21 15:03:05 +01:00
volker.raschek b83efda648 test(assets): add depends_on as example
continuous-integration/drone/push Build is passing
2023-11-25 18:21:07 +01:00
volker.raschek 5dea30fec0 fix(domain): iterate when merging over custom configs
The normal dcmerge did not work, as the check and addition was only
possible if at least one attribute such as service, network or volume
was presentThe normal dcmerge did not work, as the check and addition
was only possible if at least one attribute such as service, network or
volume was present.

The logic was adjusted.

The logic was adjusted.
2023-11-25 18:21:07 +01:00
volker.raschek 3d97ee0ab8 fix(lint): increase line length to 120 2023-11-25 18:21:07 +01:00
volker.raschek 8b68c9587c feat: support depends_on 2023-11-25 18:21:07 +01:00
volker.raschek d8ada5578b fix(ci): unsupport arm v7
continuous-integration/drone/push Build is passing
2023-10-30 21:32:36 +01:00
volker.raschek 46dd067b48 fix(renovate): exclude updating docker.io/plugins/docker
continuous-integration/drone/push Build is passing
2023-09-03 16:37:08 +02:00
volker.raschek 751bb810d2 fix(dockerCompose): protect of empty attributes 2023-08-28 11:37:24 +02:00
volker.raschek 9b469bd8c6 fix: rename firstWin to existingWin 2023-08-28 11:13:32 +02:00
volker.raschek 4ad9da6d63 fix(cmd): add flag first-win 2023-08-28 10:57:36 +02:00
volker.raschek 2ea83b7591 fix(dockerCompose): add MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 6f673e4a72 test: add example docker-compose 2023-08-28 10:57:36 +02:00
volker.raschek d9ecf068c9 fix(dockerCompose): add Service.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 4c3c6cd5d2 fix(dockerCompose): add ServiceDeploy.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 23290fbd5d fix(dockerCompose): add ServiceDeployResources.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 07673bfd53 fix(dockerCompose): add ServiceDeployResourcesLimits.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 405a0258f1 fix(dockerCompose): add ServiceNetwork.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 462299d5cd fix(dockerCompose): add ServiceUlimits.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 6524785871 test(dockerCompose): add ServiceUlimitsNoFile.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 1207bcfcab test(dockerCompose): add Volume.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek a656dc2db1 fix(dockerCompose): add ServiceUlimitsNoFile.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 14c645dd96 fix(dockerCompose): add Volume.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 87ec3349ea fix(ci): execute linter and unit-test in parallel
continuous-integration/drone/push Build is passing
2023-08-02 23:26:19 +02:00
volker.raschek ad1cf8cbef fix(ci): execute unit tests on dry-run
continuous-integration/drone/push Build encountered an error
2023-08-02 23:20:38 +02:00
volker.raschek 16f1f5e9da fix(ci): execute unit tests
continuous-integration/drone/push Build is passing
2023-08-02 23:19:08 +02:00
volker.raschek ce48d6dd0c fix(dockerCompose): mergeLastWinImage
continuous-integration/drone/push Build is passing
2023-07-26 14:44:12 +02:00
volker.raschek 3bf9380001 fix(cmd): expect at least one argument
continuous-integration/drone/push Build is passing
2023-07-26 10:43:49 +02:00
volker.raschek f7c1664197 fix(cmd): adapt default output
continuous-integration/drone/push Build is passing
2023-07-26 10:37:56 +02:00
volker.raschek cadf25b089 fix(cmd): rename flag to last-win
continuous-integration/drone/push Build is passing
2023-07-26 10:28:08 +02:00
volker.raschek c50c0a835e fix(gomod): downgrade to yaml v2.0
continuous-integration/drone/push Build is passing
2023-07-26 10:17:32 +02:00
volker.raschek c16871010c style(README): add newline
continuous-integration/drone/push Build is passing
2023-07-26 10:16:15 +02:00
volker.raschek ad29107f60 style(README): rm newline 2023-07-26 10:16:08 +02:00
volker.raschek 3777c49ee9 Initial Commit
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
2023-07-26 09:57:40 +02:00