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