1
0
mirror of https://github.com/Mailu/Mailu.git synced 2024-12-12 10:45:38 +02: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:
Tim Möhlmann 2019-01-22 16:39:42 +02:00
parent 782c686ea2
commit faca9983a8
No known key found for this signature in database
GPG Key ID: 8677988D8072E8DE
6 changed files with 111 additions and 18 deletions

38
.mergify.yml Normal file
View 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

View File

@ -1,3 +1,8 @@
branches:
except:
- staging.tmp
- testing.tmp
sudo: required
services: docker
addons:
@ -6,7 +11,8 @@ addons:
- docker-ce
env:
- MAILU_VERSION=$TRAVIS_BRANCH
- MAILU_VERSION=${TRAVIS_BRANCH////-}
language: python
python:
- "3.6"
@ -20,6 +26,7 @@ before_script:
- docker-compose -f tests/build.yml build
- sudo -- sh -c 'mkdir -p /mailu && cp -r tests/certs /mailu && chmod 600 /mailu/certs/*'
script:
# test.py, test name and timeout between start and tests.
- python tests/compose/test.py core 1
@ -28,10 +35,4 @@ script:
- python tests/compose/test.py rainloop 1
- python tests/compose/test.py roundcube 1
- python tests/compose/test.py webdav 1
deploy:
provider: script
script: bash tests/deploy.sh
on:
all_branches: true
condition: -n $DOCKER_UN
- bash tests/deploy.sh

3
bors.toml Normal file
View File

@ -0,0 +1,3 @@
status = [
"continuous-integration/travis-ci/push"
]

View File

@ -173,10 +173,20 @@ Finally, if you need to install packages inside the containers for debugging:
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
```````````````````
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
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``
@ -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
.. _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
````````````

View File

@ -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
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
images are built by Docker Hub with the ``testing`` tag for each new commit on
the ``master`` branch.
All pull requests have to be against the main ``master`` branch.
The PR gets build by Travis and some primitive auto testing is done.
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
branch and new stable builds will be released.
Urgent fixes can be backported to the stable branch.
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``
or any previous commit that matches the completion of the milestone.

View File

@ -1,4 +1,16 @@
#!/bin/bash
docker login -u $DOCKER_UN -p $DOCKER_PW
docker-compose -f tests/build.yml push
# Re-tag images for PR testing
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