Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
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>
4 lat temu
..
116.feature Implement rate-limits 4 lat temu
224.enhancement Document how to setup autoconfig 4 lat temu
224.feature DNS records for client autoconfiguration (RFC6186) 5 lat temu
360.bugfix Document that RELAYNETS is comma separated 4 lat temu
466.feature doh 4 lat temu
470.doc Further clarify memory requirements and create newsfragment. 4 lat temu
783.feature towncrier 5 lat temu
1031.feature Ratelimit outgoing emails per user 4 lat temu
1037.doc Added documentation for how to switch the database back-end used by Mailu. 4 lat temu
1096.feature Allow specific users to send email from any address 4 lat temu
1154.enhancement Add newsfragment 4 lat temu
1182.feature Implement versioning for CI/CD workflow (see #1182). 4 lat temu
1194.bugfix Implement rate-limits 4 lat temu
1194.feature Implement a simple credential cache 4 lat temu
1223.bugfix Fix for issue #1223 4 lat temu
1294.bugfix Fix 1294 ensure podop's socket is owned by postfix 4 lat temu
1503.doc Update docs/reverse.rst with Traefik v2+ info 5 lat temu
1558.feature doc 4 lat temu
1567.feature Add CHANGELOG fragments 4 lat temu
1604.feature new import/export using marshmallow 5 lat temu
1607.feature add towncrier for #1607 5 lat temu
1610.feature add towncrier for 1610 5 lat temu
1612.feature Implement rate-limits 4 lat temu
1618.feature add newsfragemnt for #1618 5 lat temu
1638.fix Add changelog 5 lat temu
1662.feature Improve the towncrier messages 5 lat temu
1669.bugfix Fix extract_host_port port separation 5 lat temu
1694.feature update newsfragment #1694 4 lat temu
1696.misc fix changelog entry from feature to misc 5 lat temu
1705.enhancement Ensure that RCVD_NO_TLS_LAST doesn't add spam points 4 lat temu
1712.misc Add newsfragment 5 lat temu
1753.feature Improve the towncrier messages 5 lat temu
1760.bugfix Add changelog 5 lat temu
1764.feature Add CHANGELOG fragments 4 lat temu
1798.feature Behave like documented 4 lat temu
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. 4 lat temu
1830.misc Forgot to set permissions on images folder. Added changelog. 4 lat temu
1831.bugfix Add changelog entry 4 lat temu
1851.feature document 4 lat temu
1873.feature Added a change note 4 lat temu
1917.bugfix towncrier 4 lat temu
1922.enhancement towncrier 4 lat temu
1926.feature Log auth attempts on /admin 4 lat temu
1929.enhancement Forgot to include the new endpoint /static 4 lat temu
1952.bugfix Use punycode for HTTP header for radicale and create changelog 4 lat temu
1960.bugfix towncrier 4 lat temu
1962.bugfix Reworded changelog that it is very important to set the new configuration parameters 4 lat temu
1966.feature added feature file 4 lat temu
1990.bugfix Add newsfragment. 4 lat temu
1992.enhancement doc 4 lat temu
1996.enhancement SESSION_COOKIE_SECURE and HTTP won't work 4 lat temu
2002.enhancement doh 4 lat temu
2007.enhancement renamed newsfragment 4 lat temu
2017.enhancement added newsfragment 4 lat temu
2079.fix Fix Webmail token check. Fix Auth-Port for Webmail. #2079 4 lat temu