## Automatic update An update script in your mailcow-dockerized directory will take care of updates. But use it with caution! If you think you made a lot of changes to the mailcow code, you should use the manual update guide below. Run the update script: ``` ./update.sh ``` If it needs to, it will ask you how you wish to proceed. Merge errors will be reported. Some minor conflicts will be auto-corrected (in favour for the mailcow: dockerized repository code). ### Options ``` # Options can be combined # - Check for updates and show changes ./update.sh --check # Do not try to update docker compose, **make sure to use the latest docker compose available** ./update.sh --no-update-compose # - Do not start mailcow after applying an update ./update.sh --skip-start # - Skip ICMP Check to public DNS resolvers (Use it only if you´ve blocked any ICMP Connections to your mailcow machine) ./update.sh --skip-ping-check # - Force update (unattended, but unsupported, use at own risk) ./update.sh --force # - Run garbage collector to cleanup old image tags and exit ./update.sh --gc # - Update with merge strategy option "ours" instead of "theirs" # This will **solve conflicts** when merging in favor for your local changes and should be avoided. Local changes will always be kept, unless we changed file XY, too. ./update.sh --ours # - Don't update, but prefetch images and exit ./update.sh --prefetch ``` ### I forgot what I changed before running update.sh See `git log --pretty=oneline | grep -i "before update"`, you will have an output similar to this: ``` 22cd00b5e28893ef9ddef3c2b5436453cc5223ab Before update on 2020-09-28_19_25_45 dacd4fb9b51e9e1c8a37d84485b92ffaf6c59353 Before update on 2020-08-07_13_31_31 ``` Run `git diff 22cd00b5e28893ef9ddef3c2b5436453cc5223ab` to see what changed. ### Can I roll back? Yes. See the topic above, instead of a diff, you run checkout: ``` docker compose down # Replace commit ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab by your ID git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab docker compose pull docker compose up -d ``` ### Hooks You can hook into the update mechanism by adding scripts called `pre_commit_hook.sh` and `post_commit_hook.sh` to your mailcows root directory. See [this](../manual-guides/u_e-update-hooks.md) for more details. ## Update Cycle - We schedule a monthly release cycle for a major update at the first tuesday of the month. - The releases are numbered like this: `YYYY-MM` (e.g. `2022-05`) - Fixes for a main Update will be stated as "Revisions" like a,b,c (e.g. `2022-05a`, `2022-05b` etc.)