1
0
mirror of https://github.com/Mailu/Mailu.git synced 2024-12-14 10:53:30 +02:00
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>
2021-12-15 09:29:08 +00:00
..
116.feature Implement rate-limits 2021-09-23 18:40:49 +02:00
224.enhancement Document how to setup autoconfig 2021-09-23 16:08:52 +02:00
224.feature DNS records for client autoconfiguration (RFC6186) 2021-02-07 18:50:26 +01:00
360.bugfix Document that RELAYNETS is comma separated 2021-11-01 09:24:26 +01:00
466.feature doh 2021-10-01 15:04:45 +02:00
470.doc Further clarify memory requirements and create newsfragment. 2021-11-23 21:31:06 +00:00
783.feature towncrier 2021-02-07 17:51:19 +01:00
1031.feature Ratelimit outgoing emails per user 2021-08-08 09:21:14 +02:00
1037.doc Added documentation for how to switch the database back-end used by Mailu. 2021-11-23 16:13:31 +00:00
1096.feature Allow specific users to send email from any address 2021-08-14 09:03:57 +02:00
1154.enhancement Add newsfragment 2021-11-02 11:21:38 +01:00
1182.feature Implement versioning for CI/CD workflow (see #1182). 2021-11-17 20:00:04 +00:00
1194.bugfix Implement rate-limits 2021-09-23 18:40:49 +02:00
1194.feature Implement a simple credential cache 2021-06-04 09:41:12 +02:00
1223.bugfix Fix for issue #1223 2021-11-09 14:10:04 +00:00
1294.bugfix Fix 1294 ensure podop's socket is owned by postfix 2021-07-24 14:39:40 +02:00
1503.doc Update docs/reverse.rst with Traefik v2+ info 2020-10-01 13:51:19 +03:00
1558.feature doc 2021-08-14 08:48:42 +02:00
1567.feature Add CHANGELOG fragments 2021-04-12 14:50:13 +02:00
1604.feature new import/export using marshmallow 2021-02-15 00:46:59 +01:00
1607.feature add towncrier for #1607 2020-08-30 01:19:42 +02:00
1610.feature add towncrier for 1610 2020-09-01 21:50:21 +02:00
1612.feature Implement rate-limits 2021-09-23 18:40:49 +02:00
1618.feature add newsfragemnt for #1618 2020-09-12 01:38:37 +02:00
1638.fix Add changelog 2020-09-24 16:53:42 +02:00
1662.feature Improve the towncrier messages 2021-03-09 12:05:46 +01:00
1669.bugfix Fix extract_host_port port separation 2020-10-24 21:52:21 +01:00
1694.feature update newsfragment #1694 2021-06-16 15:01:55 +02:00
1696.misc fix changelog entry from feature to misc 2020-11-23 09:27:55 +02:00
1705.enhancement Ensure that RCVD_NO_TLS_LAST doesn't add spam points 2021-11-01 17:52:12 +01:00
1712.misc Add newsfragment 2020-12-23 18:53:56 +01:00
1753.feature Improve the towncrier messages 2021-03-09 12:05:46 +01:00
1760.bugfix Add changelog 2021-02-11 12:12:06 +01:00
1764.feature Add CHANGELOG fragments 2021-04-12 14:50:13 +02:00
1798.feature Behave like documented 2021-08-30 17:00:12 +02:00
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. 2021-06-26 19:16:56 +00:00
1830.misc Forgot to set permissions on images folder. Added changelog. 2021-06-27 09:24:17 +00:00
1831.bugfix Add changelog entry 2021-06-19 09:30:32 +02:00
1851.feature document 2021-07-05 17:11:09 +02:00
1873.feature Added a change note 2021-07-21 10:18:15 +03:00
1917.bugfix towncrier 2021-08-14 09:03:57 +02:00
1922.enhancement towncrier 2021-08-10 12:09:11 +02:00
1926.feature Log auth attempts on /admin 2021-09-23 18:48:23 +02:00
1929.enhancement Forgot to include the new endpoint /static 2021-10-28 16:38:26 +00:00
1952.bugfix Use punycode for HTTP header for radicale and create changelog 2021-08-27 08:20:52 +00:00
1960.bugfix towncrier 2021-08-28 10:06:22 +02:00
1962.bugfix Reworded changelog that it is very important to set the new configuration parameters 2021-11-13 14:35:23 +00:00
1966.feature added feature file 2021-09-05 17:48:02 +02:00
1990.bugfix Add newsfragment. 2021-09-24 12:16:42 +02:00
1992.enhancement doc 2021-09-25 16:31:11 +02:00
1996.enhancement SESSION_COOKIE_SECURE and HTTP won't work 2021-10-08 10:17:03 +02:00
2002.enhancement doh 2021-10-01 15:05:38 +02:00
2007.enhancement renamed newsfragment 2021-10-09 17:18:53 +02:00
2017.enhancement added newsfragment 2021-10-15 13:36:41 +02:00
2079.fix Fix Webmail token check. Fix Auth-Port for Webmail. #2079 2021-12-14 11:26:33 +00:00