1
0
mirror of https://github.com/Mailu/Mailu.git synced 2024-12-28 23:06:37 +02:00
Commit Graph

4592 Commits

Author SHA1 Message Date
bors[bot]
6bed48e2ac
Merge #2427
2427: Switch ci/cd workflow to use local build cache for buildx r=mergify[bot] a=Diman0

## What type of PR?
enhancement

## What does this PR do?
Switch to local build cache, cached via actions/cache@v3
The previous method of using gha cache via buildx proved to be unreliable. Using a local cache via actions/cache@v3 is much more reliable. The build job will re-use cache from previous workflow runs.
The total workflow time is still similar ~12 minutes.

If the cache action does intermittently seem to have issues with slow download, we can configure a lower timeout. It is now set on the default 60 minutes.

Some important tidbits:
Cache fragment in build step:
```
     - name: Configure actions/cache@v3 action for storing build cache in the /tmp/cache folder
        uses: actions/cache@v3
        with:
          path: /tmp/cache/${{ matrix.target }}
          key: ${{ github.ref }}-${{ inputs.mailu_version }}-${{ matrix.target }}-${{ github.run_id }}
          restore-keys: |
            ${{ github.ref }}-${{ inputs.mailu_version }}-${{ matrix.target }}
```
- actions/cache will never update a cache. So on cache-hit (key is found), the cache will not be updated. 
  - To workaround this, it is possible to use a key that will not have a cache hit. And use restore-keys to lookup and load an existing cache. `${{ github.ref }}-${{ inputs.mailu_version }}-${{ matrix.target }}` matches with `${{ github.ref }}-${{ inputs.mailu_version }}-${{ matrix.target }}-${{ github.run_id }}`.
  - So this will result the cache being loaded from a previous workflow. For more info see https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#example-using-multiple-restore-keys
- Two jobs cannot write to the same cache simultaneously. If two jobs (in the same workflow or between workflows) access the same cache (key), then only one of the two workflows can update the cache. For this reason the cache key used in the build step must be unique.
- ${{ inputs.mailu_version }} is used to make sure x64 and arm do not access each others build cache.

 Unfortunately it is not possible to use a for loop to loop through steps. For this reason it is not possible possible to shorten the amount of action/Cache@v3 steps. The only possibility is to create our own [composite action](https://docs.github.com/en/actions/creating-actions/creating-a-composite-action). But this makes it maybe to complex. Then the action.yml of the composite action must be maintained as well.

## 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.

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


Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
2022-08-24 08:55:18 +00:00
Dimitri Huisman
25413eaf2a
Create SECURITY.md 2022-08-24 08:51:47 +02:00
Dimitri Huisman
5732b2316f Switch to local build cache, cached via actions/cache@v3
The previous method of using gha cache via buildx proved to be
unreliable. Using local cache via actions/cache@v3 is much more
reliable.
The build job will re-use cache from previous workflow runs.
The total workflow time is still similar ~12 minutes.
2022-08-23 21:09:03 +00:00
Danny Daemonic
ed5e8cce0e Update docs to mention .inc.php for roundcube
A recent patch updated the roundcube overrides to use .inc.php vs .inc,
as it's done in roundcube (and as suggested by roundcube plugin docs).

It corrected the overrides and fixed it's section in the faq, but missed
a section in the configuration docs that to the overrides. This fixes
that oversight.
2022-08-22 00:30:15 -07:00
bors[bot]
04a932bf66
Merge #2423
2423: Correct the extension of files used for Roundcube overrides r=mergify[bot] a=DannyDaemonic

This adds ".inc.php" files to the included overrides while maintaining support for existing ".inc" files previously included via overrides. It also updates the corresponding documentation.

Roundcube itself uses "inc.php" files and these overrides are expected to match that format. Switching to "inc.php" both tells the user that these need to be proper php files and conveys they are used for changing the same settings that Roundcube's inc.php files modify.

## What type of PR?

bug-fix, documentation

## What does this PR do?

- Adds ".inc.php" to the list of include files being built in roundcube's start.py
- Updates override information in the faq section: [How can I override settings?](https://github.com/Mailu/Mailu/blob/master/docs/faq.rst#how-can-i-override-settings)
- Includes changelog recommends using .inc.php moving forward

## Related issue(s)
- This addresses confusion seen in issues like: #2388

## 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.


Co-authored-by: Danny Daemonic <DannyDaemonic@gmail.com>
2022-08-20 15:56:04 +00:00
bors[bot]
d30bc033ae
Merge #2425
2425: Hotfix for workflow. For build step do not build from cache. r=mergify[bot] a=Diman0

Hotfix for workflow. For build step do not build from cache.
Make sure cache layers are unique by using ${{ github.ref }}

The build job uses the cache-from. This is not required. Due to non-unique cache keys it also resulted the build step building from cache. 
As a precaution the ${{ github.ref }} and ${{ github.run_id }} are appended to the cache key for the build cache layers. This should make sure the cache keys are unique among workflow runs

## What type of PR?

bug-fix

## What does this PR do?

### Related issue(s)
n/a

## 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.

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


Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
2022-08-20 09:21:01 +00:00
Dimitri Huisman
312a733ae3 prefix the cache key with a hash (to help with sharding) 2022-08-20 09:18:54 +00:00
Dimitri Huisman
f35d82b3a0 Also ${{ github.run_id }} for cache key.
This makes rue that the cache key is unique across workflow runs
2022-08-20 08:51:56 +00:00
Dimitri Huisman
d56eb16f52 Hotfix for workflow. For build step do not build from cache.
Make sure cache layers are unique by using ${{ github.ref }}
2022-08-20 08:43:27 +00:00
bors[bot]
840d1dc8e6
Merge #2424
2424: Switch to mode=min for GHA cache for docker buildx  r=mergify[bot] a=Diman0

Switch to mode=min for GHA cache for docker buildx to prevent rate limiting in GHA workflow.
It has hardly any influence on build times. 
See https://github.com/Diman0/Mailu_Fork/actions/runs/2893811188
It is still ~12 minutes.

For example search for SHA256 in the logs of https://github.com/Mailu/Mailu/runs/7923068540?check_suite_focus=true:
- 304 hits!
- With 6 tests that is 1824 cache hits

Search for SHA256 in the logs  of https://github.com/Diman0/Mailu_Fork/runs/7929824199?check_suite_focus=true
- 186 hits
- With 6 tests that is 1116 cache hits

That is better. I hope this will prevent rate limiting issues.

## What type of PR?

enhancement

## What does this PR do?

### Related issue(s)
None

## 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.

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


Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
2022-08-20 08:16:43 +00:00
Dimitri Huisman
dd3f1a3376 Switch to mode=min for GHA cache for docker buildx to prevent ratelimiting in GHA workflow 2022-08-20 07:49:36 +00:00
bors[bot]
b962319ba1
Merge #2422
2422: Build wheels only if we have to. r=mergify[bot] a=nextgens

## What type of PR?

enhancement

## What does this PR do?

This massively speeds the CI up; We don't need to install a compiler and rebuild when we have wheels available... with this admin builds 4 times faster.

### Related issue(s)
- #1830


Co-authored-by: Florent Daigniere <nextgens@freenetproject.org>
Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
2022-08-20 05:53:38 +00:00
Danny Daemonic
3eeb7962c2 Correct the extension used for Roundcube overrides
This adds ".inc.php" files to the included overrides while maintaining
support for existing ".inc" files previously included via overrides.

Roundcube itself uses "inc.php" files and these overrides are expected
to match that format. Switching to "inc.php" both tells the user that
these need to be proper php files and conveys they are used for changing
the same settings that Roundcube's inc.php files modify.
2022-08-19 15:56:02 -07:00
Dimitri Huisman
3493e9ffa9 Doh! 2022-08-19 20:32:53 +00:00
Dimitri Huisman
867c71ca83 Fix date (deadline) calculation and comparison in test.py 2022-08-19 20:24:07 +00:00
Dimitri Huisman
9339ce78e8 Fix datetime usage in test.py 2022-08-19 18:57:58 +00:00
Florent Daigniere
72b8939ad7 doh 2022-08-19 20:25:34 +02:00
Florent Daigniere
6fb554bc2e Do the same for the postfix container 2022-08-19 20:21:00 +02:00
Florent Daigniere
630a23da3c Don't wait for the timeout in the tests
If the containers are ready use them.
2022-08-19 20:04:45 +02:00
Dimitri Huisman
81c9e01d24 finishing touches for PR# 2328
Antispam.rst contained a syntax error.
Move config description to common section which is more fitting.
Fixed wrong assignment of default value for DEFAULT_SPAM_THRESHOLD in models.py.
2022-08-19 17:58:33 +00:00
Florent Daigniere
1500936232 Some people will need this at runtime 2022-08-19 19:32:42 +02:00
Florent Daigniere
bd5fd9536d doh 2022-08-19 19:25:49 +02:00
Florent Daigniere
e0643cf45c Disable the cache; don't upgrade pip if not req 2022-08-19 19:23:29 +02:00
Florent Daigniere
f760024812 These are required for the healthcheck 2022-08-19 19:08:10 +02:00
Florent Daigniere
19eda03a49 Build wheels only if we have to. 2022-08-19 18:48:23 +02:00
bors[bot]
7618c0a621
Merge #2421
2421: Put ipv6 resolver address in square brackets r=mergify[bot] a=ghostwheel42

## What type of PR?

bug-fix

## What does this PR do?

NGINX front container currently does not handle IPv6 resolver addresses correctly, this PR fixes this.
Replaces #2382


Co-authored-by: Alexander Graf <ghostwheel42@users.noreply.github.com>
2022-08-19 14:00:27 +00:00
Alexander Graf
822abc9136
Put ipv6 resolver address in square brackets 2022-08-19 15:56:44 +02:00
bors[bot]
53de7b7d60
Merge #2403
2403: Feature: switch CI/CD from build to buildx r=mergify[bot] a=Diman0

## What type of PR?

Feature and enhancement

## What does this PR do?

Switch from docker build to buildx for CI/CD.
    - The main workflow file has been optimised and simplified.
    - Images are built in parallel when building locally resulting in much faster build times.
    - The github action workflow is about 50% faster.
    - Arm images are built as well. These images are not tested due to restrictions of github actions (no arm runners). The tags of the images have -arm appended to it. The arm images are built on merge on master and release branch (x.y). They do not influence the normal CI/CD workflow used for bors (for PR) and real releases (merge on master and branch x.y for x86_64). 
    - Arm images (and normal x86_64 images) can also be built locally.
    - Reusable workflow is introduced for building, testing and deploying the images. This allows the workflow to be reused for other purposes in the future.
    - Workflow can be manually triggered. This allows forked Mailu projects to also use the workflow for building images.

The main workflow makes use of github actions cache to store the cache layer. This layer is used to quickly rebuilt the images in the testing step and deploy step.

Unfortunately the building the arm images fails sometimes due to timeouts. Sometimes the connection to github actions cache is very slow. Restarting the workflow from the last failed step resolves this. I have not observed this with the normal build.

Just as previous time, you can use a forked project for testing the changes (https://github.com/Diman0/Mailu_Fork). You should still have owner access. I have created branch 1.11 for testing. You can see I already push 4 times to branch 1.11 (current version is 1.11.3).

### Related issue(s)
- Mention an issue like: #001
- closes #2383 
- closes #1830
- closes #1200

## 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.


Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
2022-08-19 13:19:13 +00:00
bors[bot]
3327500f96
Merge #2221
2221: Add support for custom NGINX config r=mergify[bot] a=easybe

## What type of PR?

enhancement

## What does this PR do?

Add support for custom NGINX config. Including *.conf files in /etc/nginx/conf.d same as the default NGINX configuration gives the user more flexibility.

### Related issue(s)

## 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.

- [ ] 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.


Co-authored-by: Ezra Buehler <ezra@easyb.ch>
2022-08-17 18:18:29 +00:00
bors[bot]
1069c02bc8
Merge #2357
2357: Switch to ffdhe3072 to enable RFC 7919 r=mergify[bot] a=nextgens

## What type of PR?

enhancement

## What does this PR do?

The idea being:
- it's a "nothing up my sleeves" group
- it may help shave off some bytes of the SSL handshake; That being said, I doubt that clients that are modern enough to support this RFC won't offer an EC kex

https://raw.githubusercontent.com/internetstandards/dhe_groups/master/ffdhe3072.pem

## 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.

- [ ] 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.


Co-authored-by: Florent Daigniere <nextgens@freenetproject.org>
2022-08-17 17:58:07 +00:00
bors[bot]
3993a6d288
Merge #2415
2415: Update roundcube to 1.5.3 and rcmcarddav plugin r=mergify[bot] a=willofr

## What type of PR?
Bugfix

## What does this PR do?
Updates:
- roundcube to 1.5.3: https://github.com/roundcube/roundcubemail/releases/tag/1.5.3
- rcmcarddav plugin to 4.4.2

## 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] Unless it's docs or a minor change: add [changelog](https://mailu.io/master/contributors/workflow.html#changelog) entry file.


Co-authored-by: Will <will@packer-output-c8fcfb40-3d93-4475-8f87-e14a9dd683b6>
Co-authored-by: willofr <willofr@users.noreply.github.com>
2022-08-17 17:24:42 +00:00
willofr
a7d7d2ece1
Create 2415.bugfix 2022-08-14 23:09:17 +02:00
Will
72a5bbf53d Update roundcube to 1.5.3 and rcmcarddav plugin 2022-08-14 21:01:56 +00:00
bors[bot]
4894c555d1
Merge #2409
2409: Fix error in reverse proxy example for how to include nginx override. r=mergify[bot] a=Diman0


## What type of PR?

documentation

## What does this PR do?
The reverse proxy documentation contained an error in an example section. The nginx override file is incorrectly overridden in the sample. Also clarified how the file is included and that you should define location blocks (because it is included in the main mailu server block).

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

## 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
- [n/a] Unless it's docs or a minor change: add [changelog](https://mailu.io/master/contributors/workflow.html#changelog) entry file.


Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
2022-08-13 14:01:49 +00:00
Dimitri Huisman
a54baeff00 Fixed error in reverse.rst and remove unneeded example block. 2022-08-05 15:42:37 +00:00
bors[bot]
0a439891ee
Merge #2408
2408: Remove the misleading text in mailu.env that zstd and lz4 are supported r=Diman0 a=Diman0

## What type of PR?

bug-fix

## What does this PR do?
Remove the misleading text in mailu.env that zstd and lz4 are supported  for dovecot mail compression.
Zstd and lz4 are not supported. The reason is that the alpine project does not compile this into the dovecot package.
Users who want this functionality, can kindly request the alpine project to compile dovecot with lz4&zstd support.

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

## 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.

- [n/a] 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.


Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
2022-08-05 14:26:18 +00:00
Dimitri Huisman
aae10e856b Add newsfragment for bugfix for issue 2139 2022-08-05 13:42:42 +00:00
Dimitri Huisman
10c02c0a32 Fix error in reverse proxy example for how to include nginx override.
Also clarified where the file is included in the nginx configuration file.
2022-08-05 13:39:12 +00:00
Dimitri Huisman
bfbdfbe312 Remove the misleading text in mailu.env that zstd and lz4 are supported for dovecot mail compression.
Zstd and lz4 are not supported. The reason is that the alpine project does not compile this
into the dovecot package.
Users who want this funcionality, can kindly request the alpine project to compile dovecot
with lz4&zstd support.
2022-08-05 13:19:31 +00:00
bors[bot]
e910bfd71d
Merge #2407
2407: Fix small typo in config-import example template r=mergify[bot] a=Diman0

## What type of PR?

documentation fix

## What does this PR do?
Fixes a small typo in the full yaml template example  for the config-import. The entry ``alias:`` was incorrectly displayed as ``aliases:``.

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

## 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.

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


Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
2022-08-05 08:09:59 +00:00
Dimitri Huisman
28e409f5ea Fix small typo in config-import example template 2022-08-05 07:17:45 +00:00
bors[bot]
bae15c0af3
Merge #2404
2404: Forwarding emails option in user settings did not support 1 letter do… r=mergify[bot] a=Diman0

…mains.

## What type of PR?

Bug-fix

## What does this PR do?

Forwarding emails option in user setting did not support 1 letter domains. The regex for checking the validity of  multiple email addresses string has been modified to allow 1 letter domains and to allow 1 letter local part.

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

## 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.

- [n/a] 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.


Co-authored-by: Dimitri Huisman <diman@huisman.xyz>
2022-08-04 15:33:11 +00:00
Dimitri Huisman
57865495d4 Forwarding emails option in user settings did not support 1 letter domains. 2022-08-04 14:51:20 +00:00
bors[bot]
51945aa316
Merge #2397
2397: Fix resolving alias addresses for postfix when target is a punycode domain r=mergify[bot] a=ghostwheel42

## What type of PR?

bug-fix

## What does this PR do?

- fix splitting of localpart in resolve_destination
- idna-enode domain-part of email addresses before returning to postfix

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


Co-authored-by: Alexander Graf <ghostwheel42@users.noreply.github.com>
2022-08-04 14:47:00 +00:00
Dimitri Huisman
ae18217e07 Fix adding -arm tag correctly to PINNED_MAILU_VERSION in arm.yml. 2022-08-03 13:15:32 +00:00
Dimitri Huisman
4bb0bd8fb2 Forgot to update snappymail test 2022-08-03 11:45:01 +00:00
Dimitri Huisman
7e21ab4007 Merge master cont'd 2022-08-03 09:48:54 +00:00
Dimitri Huisman
3aafecafe7 Merge branch 'master' into feat-switch-buildx 2022-08-03 09:45:20 +00:00
Dimitri Huisman
f6de2b2938 Switch from docker build to buildx for CI/CD.
- The main workflow file has been optimised and simplified.
- Images are built in parallel when building locally resulting in faster build times.
- The github action workflow is about 50% faster.
- Arm images are built as well. These images are not tested due to restrictions of github actions (no arm runners). The tags of the images have -arm appended to it.
- Arm images can also be built locally.
- Reusable workflow is introduced for building, testing and deploying the images.
  This allows the workflow to be reused for other purposes in the future.
- Workflow can be manually triggered. This allows forked Mailu projects to also use the workflow for building images.
2022-08-03 09:36:53 +00:00
bors[bot]
cb70f10a49
Merge #2391
2391: Documentation fixes r=mergify[bot] a=adamward-git

## What type of PR?

(documentation)

## What does this PR do?
Spelling corrections, gammar fixes.

### Related issue(s)
N/A

## 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.

N/A

Co-authored-by: Adam Ward <awjob@internode.on.net>
Co-authored-by: adamward-git <82577349+adamward-git@users.noreply.github.com>
2022-07-29 13:17:24 +00:00