-
Notifications
You must be signed in to change notification settings - Fork 146
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into master-good_bye_cyrus_db_sync
- Loading branch information
Showing
2,631 changed files
with
335,743 additions
and
55,005 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
require: | ||
members: false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
name: Cyrus IMAP CI | ||
|
||
on: | ||
workflow_dispatch: | ||
push: | ||
branches: | ||
- master | ||
- main | ||
- 'cyrus-imapd-*' | ||
pull_request: | ||
branches: | ||
- master | ||
- main | ||
- 'cyrus-imapd-*' | ||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
container: | ||
image: cyrusimapdocker/cyrus-buster:latest | ||
options: --sysctl net.ipv6.conf.all.disable_ipv6=0 --init | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
- name: install missing or frequently-updated deps | ||
shell: bash | ||
run: | | ||
cpanm IO::File::fcntl | ||
cpanm Digest::CRC | ||
cpanm XML::Simple # XXX could be grabbed from apt by docker image | ||
cpanm Mail::IMAPTalk # in image, but fetch latest! | ||
- name: setup git safe directory | ||
shell: bash | ||
run: git config --global --add safe.directory /__w/cyrus-imapd/cyrus-imapd | ||
- name: fetch upstream release tags | ||
if: ${{ github.repository != 'cyrusimap/cyrus-imapd' }} | ||
shell: bash | ||
run: | | ||
git remote add upstream https://github.com/cyrusimap/cyrus-imapd.git | ||
# n.b. --no-tags does not mean "no tags", it means "no automatic tag | ||
# following". we're explicitly fetching the tags we want, we do not | ||
# need every other tag that's reachable from them | ||
git fetch --no-tags upstream 'refs/tags/cyrus-imapd-*:refs/tags/cyrus-imapd-*' | ||
- name: configure and build | ||
shell: bash | ||
run: | | ||
echo "building cyrus version" $(./tools/git-version.sh) | ||
./tools/build-with-cyruslibs.sh | ||
- name: report version information | ||
shell: bash | ||
run: | | ||
echo "debian" $(cat /etc/debian_version) | ||
echo "Mail::IMAPTalk" $(cpanm --info Mail::IMAPTalk) | ||
/usr/cyrus/libexec/master -V | ||
/usr/cyrus/sbin/cyr_buildinfo | ||
- name: update jmap test suite | ||
working-directory: /srv/JMAP-TestSuite.git | ||
shell: bash | ||
run: | | ||
git fetch | ||
git checkout origin/master | ||
git clean -f -x -d | ||
cpanm --installdeps . | ||
- name: set up cassandane | ||
working-directory: cassandane | ||
shell: bash | ||
run: | | ||
cp -af cassandane.ini.dockertests cassandane.ini | ||
chown cyrus:mail cassandane.ini | ||
make -j8 | ||
- name: run cassandane quietly | ||
id: cass1 | ||
continue-on-error: true | ||
working-directory: cassandane | ||
run: setpriv --reuid=cyrus --regid=mail --clear-groups --inh-caps='-chown,-dac_override,-dac_read_search,-fowner,-fsetid,-kill,-setgid,-setuid,-setpcap,-linux_immutable,-net_bind_service,-net_broadcast,-net_admin,-net_raw,-ipc_lock,-ipc_owner,-sys_module,-sys_rawio,-sys_chroot,-sys_ptrace,-sys_pacct,-sys_admin,-sys_boot,-sys_nice,-sys_resource,-sys_time,-sys_tty_config,-mknod,-lease,-audit_write,-audit_control,-setfcap,-mac_override,-mac_admin,-syslog,-wake_alarm,-block_suspend,-audit_read,-cap_38,-cap_39,-cap_40' ./testrunner.pl --slow -f prettier -j 8 !Test::Core | ||
- name: rerun cassandane failures noisily | ||
if: ${{ steps.cass1.outcome == 'failure' }} | ||
working-directory: cassandane | ||
run: setpriv --reuid=cyrus --regid=mail --clear-groups --inh-caps='-chown,-dac_override,-dac_read_search,-fowner,-fsetid,-kill,-setgid,-setuid,-setpcap,-linux_immutable,-net_bind_service,-net_broadcast,-net_admin,-net_raw,-ipc_lock,-ipc_owner,-sys_module,-sys_rawio,-sys_chroot,-sys_ptrace,-sys_pacct,-sys_admin,-sys_boot,-sys_nice,-sys_resource,-sys_time,-sys_tty_config,-mknod,-lease,-audit_write,-audit_control,-setfcap,-mac_override,-mac_admin,-syslog,-wake_alarm,-block_suspend,-audit_read,-cap_38,-cap_39,-cap_40' ./testrunner.pl -f pretty -j 8 --rerun | ||
- name: collect logs | ||
if: always() | ||
run: cat /tmp/cass/*/conf/log/syslog |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
# Contributing to Cyrus | ||
|
||
So, you want to contribute to Cyrus? Great! | ||
|
||
You'll probably want to join the [cyrus-devel mailing | ||
list](https://www.cyrusimap.org/imap/support/feedback-mailing-lists.html#feedback-mailing-lists) | ||
where development issues get discussed. You don't need to, but if you're | ||
considering doing a substantial amount of work, it's a good idea to ask about | ||
it first. | ||
|
||
This document is meant to be a quick overview of the most important things you | ||
need to know to get your work reviewed, approved, and into Cyrus. | ||
|
||
## Your Code | ||
|
||
Cyrus doesn't have a hard and fast style guide, *but it will*. For now, | ||
consult the [Cyrus hacking | ||
docs](https://www.cyrusimap.org/imap/developer/guidance/hacking.html), which | ||
spell out some of the standards of formatting and construction. This document | ||
is, at present, quite out of date. You are probably best served by just | ||
copying the style of the surrounding code. | ||
|
||
|
||
## The Tests | ||
|
||
You should run the tests. Submitting a change that breaks existing tests isn't | ||
good for anybody! If your pull request changes the code but doesn't add a | ||
test, you should explain why. "Code changes add tests" is the default | ||
assumption. | ||
|
||
There are two kinds of tests: | ||
|
||
* The [Cassandane test | ||
suite](https://www.cyrusimap.org/imap/developer/developer-testing.html) is an | ||
integration test suite. It can and should be run against your build of | ||
Cyrus, and it's right there in the repo under `./cassandane`. | ||
* The [cunit tests](https://www.cyrusimap.org/imap/developer/unit-tests.html) | ||
are located in the Cyrus IMAP repository, in `./cunit` and run by `make | ||
check`. You should run these, too. | ||
|
||
## Submitting Your Work | ||
|
||
We use GitHub, including pull requests. Submit a pull request. One of the | ||
committers should review it soon. If they don't, the best place to ask for | ||
a review is the cyrus-devel mailing list, mentioned above. | ||
|
||
Remember to sign your commits. This just means that they should be made with | ||
`git commit --signoff`. More importantly, it is how you certify the [Developer | ||
Certificate of Origin](https://developercertificate.org/), which states your | ||
assertion that you have the legal right to submit your code to Cyrus for | ||
redistribution as part of Cyrus. | ||
|
||
**All code is reviewed before merge.** This includes code submitted by | ||
committers. This means that if you want to know what awaits you in code | ||
review, you can look at some recently merged or closed pull requests. | ||
|
||
## Cyrus Versioning and Bugfix Policy | ||
|
||
Cyrus is free software that comes with no guarantees, but we try to fix bugs | ||
when they're found. The policy on that is something like this: | ||
|
||
* We release a new **development snapshot** of Cyrus about once a month. While | ||
we won't make a release that doesn't *compile*, all other bets are off. If | ||
we discover a critical security problem in a development snapshot, we'll just | ||
merge the fix when it's ready. Running these in production is *your* | ||
liability to worry about. These versions are numbered vX.Y.Z, where Y is | ||
odd. | ||
* We release a **new major version** about once a year. We release these when | ||
we believe that all the new features work correctly and there are no known | ||
regressions, other than those we've documented as intentional. These | ||
versions are numbered vX.Y.0, where Y is even. | ||
* We release **new minor version** for major releases once in a while, when | ||
we've built up enough backported bugfixes, or when we've been waiting long | ||
enough to ship the ones we've already applied. There are numbered vX.Y.Z, | ||
where Y is even and Z is nonzero. | ||
|
||
We stop releasing minor releases for major releases after two years. While we | ||
might push bugfixes for significant problems to the git branch for an old major | ||
release, we won't undertake a new release. If you're running an old version of | ||
Cyrus, it's up to you (or your package manager) to track and package new | ||
patches. | ||
|
||
If we discover a security vulnerability in a non-development-snapshot version | ||
of Cyrus, we practice responsible disclosure. We produce a fix, then inform | ||
downstream package mangers of that fix, with an embargo date so that the fix | ||
can be released publicly at the same time that updated packages become | ||
available. In general, we do not pursue security fixes for major versions of | ||
Cyrus over three years old. There may be exceptions to this, but generally you | ||
should try to run a recent stable release. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.