From 70d28de924a200102d98d55757c986ab2b839753 Mon Sep 17 00:00:00 2001 From: tyranron Date: Tue, 13 Apr 2021 13:25:03 +0300 Subject: [PATCH] Describe Contribution Guide --- docker/coturn/CONTRIBUTING.md | 65 +++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 docker/coturn/CONTRIBUTING.md diff --git a/docker/coturn/CONTRIBUTING.md b/docker/coturn/CONTRIBUTING.md new file mode 100644 index 0000000..edde3e8 --- /dev/null +++ b/docker/coturn/CONTRIBUTING.md @@ -0,0 +1,65 @@ +Contribution Guide +================== + + + + +## Best practices + +1. Keep the image size as small as possible: + - Do not produce redundant layers in the final image. + - Cleanup temporary files and caches in the same layer were they were produced. + - Remove unnecessary man pages, examples and documentation. + +2. Build each project in its separate stage: + - Do use layers granularly in non-final stages for better caching of build results. + - Prepare all the final files as much as possible in their build stage before adding them to the final stage. + + + + +## CI workflow + +At the moment `coturn/coturn` Docker image's [workflow is automated][1] via [GitHub Actions] in the following manner: + +- On each push the image is built and tested. + This helps to track image regressions due to changes in codebase. + +- Image is built and tested automatically from `master` branch on weekly basis. + This helps to track image regressions due to changes in parent OS images (`debian`, `alpine`), their system packages, and other dependencies. + +- On each push to `master` branch the image is published with `edge-debian` and `edge-alpine` tags. + This helps to test and try the latest `master` branch and its changes for whoever needs this. + +- On each `docker/X.Y.Z-rN` tag creation the image is built using the `X.Y.Z` Coturn version (not the local sources), tested, and is published with all the version tags declared in [`Makefile`] (see `ALL_IMAGES`). + An appropriate [GitHub Release] for the `docker/X.Y.Z-rN` Git tag is also created automatically. + +- Whenever the image is published, its description on container registries is automatically updated with its [README] file. + + + + +## Releasing + +To produce a new release (version tag) of `coturn/coturn` Docker image, perform the following steps: + +1. Upgrade the image version correctly in [`Makefile`] by bumping up either the `COTURN_VER` (if Coturn has changed it version) or the `BUILD_REV` (if anything else in the image has been changed). If the `COTURN_VER` has changed, the `BUILD_REV` may be reset to `0`. + +2. Complete an existing [CHANGELOG] or fill up a new one for the new version declared in [`Makefile`]. + +3. Update [README] with the new version declared in [`Makefile`]. + +4. Perform a `make release` command inside the`docker/coturn/` directory. + + + + + +[CHANGELOG]: https://github.com/coturn/coturn/blob/master/docker/coturn/CHANGELOG.md +[GitHub Actions]: https://docs.github.com/actions +[GitHub Release]: https://github.com/coturn/coturn/releases +[README]: https://github.com/coturn/coturn/blob/master/docker/coturn/README.md + +[`Makefile`]: https://github.com/coturn/coturn/blob/master/docker/coturn/Makefile + +[1]: https://github.com/coturn/coturn/blob/master/.github/workflows/docker.yml