You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mailu/towncrier/newsfragments
bors[bot] 08be233607
Merge #2058
2058: Implement versioning for CI/CD workflow. r=mergify[bot] a=Diman0

## What type of PR?

Feature!

## What does this PR do?
This PR introduces 3 things
- Add versioning (tagging) for branch x.y (1.8). E.g. 1.8.0, 1.8.1 etc.
  - docker repo will contain x.y (latest) and x.y.z (pinned version) images.
  - The X.Y.Z tag is incremented automatically. E.g. if 1.8.0 already exists, then the next merge on 1.8 will result in the new tag 1.8.1 being used.
- Make the version available in the image.
  -  For X.Y and X.Y.Z write the version (X.Y.Z) into /version on the image and add a label with version=X.Y.Z
	  -  This means that the latest X.Y image shows the pinned version (X.Y.Z e.g. 1.8.1) it was based on. Via the tag X.Y.Z you can see the commit hash that triggered the built.
  -  For master write the commit hash into /version on the image and add a label with version={commit hash}
-  Automatic releases. For x.y triggered builts (e.g. merge on 1.9) do a new github release for the pinned x.y.z (e.g. 1.9.2). 
  -  Release shows a static message (see RELEASE_TEMPLATE.md) that explains how to reach the newsfragments folder and change the branch to the tag (x.y.z) mentioned in the release. Now you can get the changelog by reading all newsfragment files in this folder.

This PR does not change anything to our workflow (what we (human persons) do). Our processes are still exactly the same. The above introduced logic is automatic. When we backport to X.Y all the magic for creating the pinned version X.Y.Z is handled by the CI/CD workflow.

### Related issue(s)
- closes #1182

## Prerequisites
Before we can consider review and merge, please make sure the following list is done and checked.
If an entry in not applicable, you can check it or remove it from the list.

- [x] In case of feature or enhancement: documentation updated accordingly
- [x] Unless it's docs or a minor change: add [changelog](https://mailu.io/master/contributors/workflow.html#changelog) entry file.

## Testing
Suggested testing steps. This should cover all situations including BORS. It does require that you use your own docker repo or temporarily create a new one.
Suggested testing steps.
1. Create new github repo.
2. Add the required docker secrets to the project (see beginning of CI.yml for the secret names), DOCKER_UN, DOCKER_PW, DOCKER_ORG, DOCKER_ORG_TESTS.
3. Clone the project.
4. Copy the contents of the PR to the cloned project.
5. Push to your new github repo.
6. Now master images are built. Check that images with tag master are pushed to your docker repo
7. Check with docker inspect nginx:master that it has the label version={commit hash}.
8. Run an image, run `docker-compose exec <name> cat /version`. Note that /version also contains the pinned version. For master the pinned version is the commit hash.
9. Create branch 1.8. 
10. Push branch 1.8 to repo.
11. Note that tags 1.8 and 1.8.0 are built and pushed to docker repo
12. Inspect label and /version. Note that 1.8 and 1.8.0 both show version 1.8.0.
13. Push another commit to branch 1.8.
14. Note that tags 1.8 and 1.8.1 are built and pushed to docker repo
15. Inspect label and /version. Note that 1.8 and 1.8.1 both show version 1.8.1.
16. Let's check BORS stuff.
17. Create branch testing.
18. Push the commit with the exact commit text (IMPORTANT!!): `Try #1234:`'.
19. Note that images are built and pushed for tag `pr-1234`.
20. Inspect label and /version. Note that the version is `pr-1234`.
20. Create branch staging.
21. Push the commit with commit text: `Merge #1234`.
22. Note that this image is not pushed to docker (as expected).

but you could also check the GH repo and docker repo I used:
https://github.com/Diman0/Mailu_Fork
https://hub.docker.com/r/diman/rainloop/tags

Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
3 years ago
..
116.feature Implement rate-limits 3 years ago
224.enhancement Document how to setup autoconfig 3 years ago
224.feature DNS records for client autoconfiguration (RFC6186) 4 years ago
360.bugfix Document that RELAYNETS is comma separated 3 years ago
466.feature doh 3 years ago
470.doc Further clarify memory requirements and create newsfragment. 3 years ago
783.feature towncrier 4 years ago
1031.feature Ratelimit outgoing emails per user 3 years ago
1037.doc Added documentation for how to switch the database back-end used by Mailu. 3 years ago
1096.feature Allow specific users to send email from any address 3 years ago
1154.enhancement Add newsfragment 3 years ago
1182.feature Implement versioning for CI/CD workflow (see #1182). 3 years ago
1194.bugfix Implement rate-limits 3 years ago
1194.feature Implement a simple credential cache 4 years ago
1223.bugfix Fix for issue #1223 3 years ago
1294.bugfix Fix 1294 ensure podop's socket is owned by postfix 3 years ago
1503.doc Update docs/reverse.rst with Traefik v2+ info 4 years ago
1558.feature doc 3 years ago
1567.feature Add CHANGELOG fragments 4 years ago
1604.feature new import/export using marshmallow 4 years ago
1607.feature add towncrier for #1607 4 years ago
1610.feature add towncrier for 1610 4 years ago
1612.feature Implement rate-limits 3 years ago
1618.feature add newsfragemnt for #1618 4 years ago
1638.fix Add changelog 4 years ago
1662.feature Improve the towncrier messages 4 years ago
1669.bugfix Fix extract_host_port port separation 4 years ago
1694.feature update newsfragment #1694 3 years ago
1696.misc fix changelog entry from feature to misc 4 years ago
1705.enhancement Ensure that RCVD_NO_TLS_LAST doesn't add spam points 3 years ago
1712.misc Add newsfragment 4 years ago
1753.feature Improve the towncrier messages 4 years ago
1760.bugfix Add changelog 4 years ago
1764.feature Add CHANGELOG fragments 4 years ago
1798.feature Behave like documented 3 years ago
1828.misc Added new docker repo for test image. Adapted deploy script to use env var for test repo name. Modified travis references to github actions references in docs. Added changelog entry. 3 years ago
1830.misc Forgot to set permissions on images folder. Added changelog. 3 years ago
1831.bugfix Add changelog entry 3 years ago
1851.feature document 3 years ago
1873.feature Added a change note 3 years ago
1917.bugfix towncrier 3 years ago
1922.enhancement towncrier 3 years ago
1926.feature Log auth attempts on /admin 3 years ago
1929.enhancement Forgot to include the new endpoint /static 3 years ago
1952.bugfix Use punycode for HTTP header for radicale and create changelog 3 years ago
1960.bugfix towncrier 3 years ago
1962.bugfix Reworded changelog that it is very important to set the new configuration parameters 3 years ago
1966.feature added feature file 3 years ago
1990.bugfix Add newsfragment. 3 years ago
1992.enhancement doc 3 years ago
1996.enhancement SESSION_COOKIE_SECURE and HTTP won't work 3 years ago
2002.enhancement doh 3 years ago
2007.enhancement renamed newsfragment 3 years ago
2017.enhancement added newsfragment 3 years ago
2079.fix Fix Webmail token check. Fix Auth-Port for Webmail. #2079 3 years ago