Skip to content

Build and publish the images when a release tag is pushed - #50

Merged
satishweb merged 2 commits into
masterfrom
feature/release-workflow
Oct 21, 2026
Merged

satishweb merged 2 commits into
masterfrom
feature/release-workflow

Conversation

@satishweb

Copy link
Copy Markdown
Owner

The images were built and published by hand. The new workflow does that when a tag with the form v<version>[-<number>]-<alpine|ubuntu> is pushed.

  • The image is built for all the platforms of the operating system, the alpine image additionally gets the latest tag.
  • The images are published to the Docker Hub and to the GitHub container registry.
  • The version of the upstream dns-over-https release is taken from the tag and is handed to the build, so the image always contains the release the tag names.
  • The GitHub release for the tag is created with the generated notes.
  • The workflow can be started by hand with a dry run, that builds the images without publishing them.

The Docker Hub credentials are read from the DOCKERHUB_USERNAME and the DOCKERHUB_TOKEN secrets, the GitHub container registry uses the token of the workflow.

Fixes #4

The path of the configuration file was hardcoded, so a custom
configuration had to be mounted on /server/doh-server.conf, which is the
path the generated configuration uses as well.

The path can now be set with the DOH_CONFIG_FILE environment variable. A
custom configuration can live in a directory of its own and is not replaced
by the generated one:

    -v ./doh-server.conf:/server-custom/doh-server.conf:ro
    -e DOH_CONFIG_FILE=/server-custom/doh-server.conf

The file is generated from the bundled template when it does not exist, so
the variable works without a custom configuration as well. The argument of
the server is adjusted to the path, an argument that was given on the
command line always wins.
The images were built and published by hand. The new workflow does that
when a tag with the form v<version>[-<number>]-<alpine|ubuntu> is pushed.

* The image is built for all the platforms of the operating system, the
  alpine image additionally gets the latest tag.
* The images are published to the Docker Hub and to the GitHub container
  registry.
* The version of the upstream dns-over-https release is taken from the tag
  and is handed to the build, so the image always contains the release the
  tag names.
* The GitHub release for the tag is created with the generated notes.
* The workflow can be started by hand with a dry run, that builds the
  images without publishing them.

The Docker Hub credentials are read from the DOCKERHUB_USERNAME and the
DOCKERHUB_TOKEN secrets, the GitHub container registry uses the token of
the workflow.

Fixes #4
@satishweb
satishweb merged commit 674a386 into master Oct 21, 2026
4 checks passed
@satishweb
satishweb deleted the feature/release-workflow branch October 21, 2026 04:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create new container image automatically upon new release

1 participant