mirror of
https://github.com/optim-enterprises-bv/Mailu.git
synced 2025-10-29 01:02:19 +00:00
Automatic creation of review images
- Enable bors-ng for better merging - Re-enable mergify with a fixed up syntax, it will now only issue bors commands. - Pull request build images are now pushed to docker hub - Automatic backport rule - Fix build tag for branches with slash (/) - Only push when master and 1.6 target branch
This commit is contained in:
38
.mergify.yml
Normal file
38
.mergify.yml
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
pull_request_rules:
|
||||||
|
- name: 2 approved reviews
|
||||||
|
conditions:
|
||||||
|
- -title~=(WIP|wip)
|
||||||
|
- -label~=^(status/wip|status/blocked)$
|
||||||
|
- status-success=Travis CI - Pull Request
|
||||||
|
- "#approved-reviews-by>=2"
|
||||||
|
actions:
|
||||||
|
comment:
|
||||||
|
message: bors r+
|
||||||
|
|
||||||
|
- name: Trusted author and 1 approved review
|
||||||
|
conditions:
|
||||||
|
- author~=^(kaiyou|muhlemmer|mildred|HorayNarea|adi90x|hoellen|ofthesun9|Nebukadneza)$
|
||||||
|
- -title~=(WIP|wip)
|
||||||
|
- -label~=^(status/wip|status/blocked|review/need2)$
|
||||||
|
- status-success=Travis CI - Pull Request
|
||||||
|
- "#approved-reviews-by>=1"
|
||||||
|
actions:
|
||||||
|
comment:
|
||||||
|
message: bors r+
|
||||||
|
|
||||||
|
- name: Backport to 1.6 branch
|
||||||
|
conditions:
|
||||||
|
- base=master
|
||||||
|
- label=type/backport
|
||||||
|
actions:
|
||||||
|
backport:
|
||||||
|
branches:
|
||||||
|
- '1.6'
|
||||||
|
|
||||||
|
- name: remove outdated reviews
|
||||||
|
conditions:
|
||||||
|
- base~=^(master|1.6)$
|
||||||
|
actions:
|
||||||
|
dismiss_reviews:
|
||||||
|
approved: True
|
||||||
|
|
||||||
17
.travis.yml
17
.travis.yml
@@ -1,3 +1,8 @@
|
|||||||
|
branches:
|
||||||
|
except:
|
||||||
|
- staging.tmp
|
||||||
|
- testing.tmp
|
||||||
|
|
||||||
sudo: required
|
sudo: required
|
||||||
services: docker
|
services: docker
|
||||||
addons:
|
addons:
|
||||||
@@ -6,7 +11,8 @@ addons:
|
|||||||
- docker-ce
|
- docker-ce
|
||||||
|
|
||||||
env:
|
env:
|
||||||
- MAILU_VERSION=$TRAVIS_BRANCH
|
- MAILU_VERSION=${TRAVIS_BRANCH////-}
|
||||||
|
|
||||||
language: python
|
language: python
|
||||||
python:
|
python:
|
||||||
- "3.6"
|
- "3.6"
|
||||||
@@ -20,6 +26,7 @@ before_script:
|
|||||||
- docker-compose -f tests/build.yml build
|
- docker-compose -f tests/build.yml build
|
||||||
- sudo -- sh -c 'mkdir -p /mailu && cp -r tests/certs /mailu && chmod 600 /mailu/certs/*'
|
- sudo -- sh -c 'mkdir -p /mailu && cp -r tests/certs /mailu && chmod 600 /mailu/certs/*'
|
||||||
|
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# test.py, test name and timeout between start and tests.
|
# test.py, test name and timeout between start and tests.
|
||||||
- python tests/compose/test.py core 1
|
- python tests/compose/test.py core 1
|
||||||
@@ -28,10 +35,4 @@ script:
|
|||||||
- python tests/compose/test.py rainloop 1
|
- python tests/compose/test.py rainloop 1
|
||||||
- python tests/compose/test.py roundcube 1
|
- python tests/compose/test.py roundcube 1
|
||||||
- python tests/compose/test.py webdav 1
|
- python tests/compose/test.py webdav 1
|
||||||
|
- bash tests/deploy.sh
|
||||||
deploy:
|
|
||||||
provider: script
|
|
||||||
script: bash tests/deploy.sh
|
|
||||||
on:
|
|
||||||
all_branches: true
|
|
||||||
condition: -n $DOCKER_UN
|
|
||||||
|
|||||||
3
bors.toml
Normal file
3
bors.toml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
status = [
|
||||||
|
"continuous-integration/travis-ci/push"
|
||||||
|
]
|
||||||
@@ -173,10 +173,20 @@ Finally, if you need to install packages inside the containers for debugging:
|
|||||||
Reviewing
|
Reviewing
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
Members of the **Mailu/contributors** team leave reviews to open PR's.
|
||||||
|
In the case of a PR from a fellow team member, a single review is enough
|
||||||
|
to initiate merging. In all other cases, two approving reviews are required.
|
||||||
|
There is also a possibility to set the ``review/need2`` to require a second review.
|
||||||
|
|
||||||
|
After Travis successfully tests the PR and the required amount of reviews are acquired,
|
||||||
|
Mergify will trigger with a ``bors r+`` command. Bors will batch any approved PR's,
|
||||||
|
merges them with master in a staging branch where Travis builds and tests the result.
|
||||||
|
After a successful test, the actual master gets fast-forwarded to that point.
|
||||||
|
|
||||||
System requirements
|
System requirements
|
||||||
```````````````````
|
```````````````````
|
||||||
|
|
||||||
Reviewing pull requests requires some additional git setup. First, for 90% of the review jobs,
|
Reviewing pull requests sometimes requires some additional git setup. First, for 90% of the review jobs,
|
||||||
you will need a PC or server that can expose all Mailu ports to the outside world. Also, a valid
|
you will need a PC or server that can expose all Mailu ports to the outside world. Also, a valid
|
||||||
domain name would be required. This can be a simple free DynDNS account. Do not use a production
|
domain name would be required. This can be a simple free DynDNS account. Do not use a production
|
||||||
server, as there are cases where data corruption occurs and you need to delete the ``/mailu``
|
server, as there are cases where data corruption occurs and you need to delete the ``/mailu``
|
||||||
@@ -188,6 +198,31 @@ He can provide access to a testing server, if a trust relation can be establishe
|
|||||||
|
|
||||||
.. _`muhlemmer on Matrix`: https://matrix.to/#/@muhlemmer:matrix.org
|
.. _`muhlemmer on Matrix`: https://matrix.to/#/@muhlemmer:matrix.org
|
||||||
|
|
||||||
|
.. _testing:
|
||||||
|
|
||||||
|
Test images
|
||||||
|
```````````
|
||||||
|
|
||||||
|
All PR's get build by Travis and some primitive auto testing is
|
||||||
|
done. The resulting images get uploaded to Docker hub, under the
|
||||||
|
tag name ``mailutest/<name>:<target_branch>-<pr_no>``.
|
||||||
|
|
||||||
|
For example, to test PR #500 against master, reviewers can use:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
export DOCKER_ORG="mailutest"
|
||||||
|
export MAILU_VERSION="master-500"
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
Reviewing by git
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Sometimes it might not be possible or enough to pull the test images from Docker hub.
|
||||||
|
In those cases, it will be necessary to do a local git merge and perhaps manually building
|
||||||
|
of the relevant images.
|
||||||
|
|
||||||
|
|
||||||
Preparations
|
Preparations
|
||||||
````````````
|
````````````
|
||||||
|
|
||||||
|
|||||||
@@ -52,15 +52,19 @@ master directly if you find this appropriate. Still, keep in mind that:
|
|||||||
that you use branch names prefixed with ``feat-`` or ``fix-`` and followed
|
that you use branch names prefixed with ``feat-`` or ``fix-`` and followed
|
||||||
either by the name of the Github issue or a short and meaningful name.
|
either by the name of the Github issue or a short and meaningful name.
|
||||||
|
|
||||||
Workflow
|
PR Workflow
|
||||||
````````
|
````````````
|
||||||
|
|
||||||
All commits will be merged to the main ``master`` branch for testing. New
|
All pull requests have to be against the main ``master`` branch.
|
||||||
images are built by Docker Hub with the ``testing`` tag for each new commit on
|
The PR gets build by Travis and some primitive auto testing is done.
|
||||||
the ``master`` branch.
|
Test images get uploaded to a separate section in Docker hub.
|
||||||
|
Reviewers will check the PR and test the resulting images.
|
||||||
|
See the :ref:`testing` section for more info.
|
||||||
|
|
||||||
After some brief testing, urgent fixes will be cherry-picked to the current stable
|
Urgent fixes can be backported to the stable branch.
|
||||||
branch and new stable builds will be released.
|
For this a member of **Mailu/contributors** has to set the ``type/backport`` label.
|
||||||
|
Upon merge of the original PR, a copy of the PR is created against the stable branch.
|
||||||
|
After some testing on master, we will approve and merge this new PR as well.
|
||||||
|
|
||||||
At the end of every milestone, a new stable branch will be created from ``master``
|
At the end of every milestone, a new stable branch will be created from ``master``
|
||||||
or any previous commit that matches the completion of the milestone.
|
or any previous commit that matches the completion of the milestone.
|
||||||
|
|||||||
@@ -1,4 +1,16 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
docker login -u $DOCKER_UN -p $DOCKER_PW
|
# Re-tag images for PR testing
|
||||||
docker-compose -f tests/build.yml push
|
if [ $TRAVIS_PULL_REQUEST != false ]; then
|
||||||
|
export MAILU_VERSION="${TRAVIS_BRANCH}-${TRAVIS_PULL_REQUEST}"
|
||||||
|
export DOCKER_ORG="mailutest"
|
||||||
|
docker-compose -f tests/build.yml build
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Note that in case of a PR, the branch is the one we are merging into
|
||||||
|
if [ -n $DOCKER_UN ] && [ -n $DOCKER_PW ] && \
|
||||||
|
{ [ "$TRAVIS_BRANCH" = "master" ] || [ "$TRAVIS_BRANCH" = "1.6" ]; }; then
|
||||||
|
docker login -u $DOCKER_UN -p $DOCKER_PW
|
||||||
|
docker-compose -f tests/build.yml push
|
||||||
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user