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
master
Tim Möhlmann 6 years ago
parent 782c686ea2
commit faca9983a8
No known key found for this signature in database
GPG Key ID: 8677988D8072E8DE

@ -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

@ -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

@ -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

Loading…
Cancel
Save