stonehenge: install marge bot and renovate bot
This commit is contained in:
parent
b6415a9d8f
commit
afe1dc40fc
11 changed files with 894 additions and 2 deletions
76
pkgs/marge-bot/default.nix
Normal file
76
pkgs/marge-bot/default.nix
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
lib,
|
||||
python3,
|
||||
fetchFromGitLab,
|
||||
fetchpatch,
|
||||
git,
|
||||
openssh,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "marge-bot";
|
||||
version = "0.16.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "marge-org";
|
||||
repo = "marge-bot";
|
||||
rev = version;
|
||||
hash = "sha256-UgdbeJegeTFP6YF6oMxAeQDI9AO2k6yk4WAFZ/Xspu8=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# TODO: remove when merged https://gitlab.com/marge-org/marge-bot/-/merge_requests/571
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.com/marge-org/marge-bot/-/commit/7e9668b24455bcf9c99646853019a3e86505d850.patch";
|
||||
hash = "sha256-n5zB3YmD7i6RmcO9XmHjWVdQHzeVuZUPOzY3+cA6NDk=";
|
||||
})
|
||||
./patches/wait-for-mr-update.patch
|
||||
./patches/allow-self-merges.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
python3.pkgs.setuptools
|
||||
];
|
||||
|
||||
propagatedBuildInputs =
|
||||
(with python3.pkgs; [
|
||||
configargparse
|
||||
maya
|
||||
pyyaml
|
||||
requests
|
||||
python-gitlab
|
||||
hatchling
|
||||
])
|
||||
++ [
|
||||
git
|
||||
openssh
|
||||
];
|
||||
|
||||
nativeCheckInputs =
|
||||
(with python3.pkgs; [
|
||||
pytest-cov-stub
|
||||
pytestCheckHook
|
||||
pendulum
|
||||
])
|
||||
++ [
|
||||
git
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "marge" ];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Merge bot for GitLab";
|
||||
homepage = "https://gitlab.com/marge-org/marge-bot";
|
||||
changelog = "https://gitlab.com/marge-org/marge-bot/-/blob/${src.rev}/CHANGELOG.md";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [
|
||||
bcdarwin
|
||||
lelgenio
|
||||
];
|
||||
mainProgram = "marge.app";
|
||||
};
|
||||
}
|
||||
38
pkgs/marge-bot/patches/allow-self-merges.patch
Normal file
38
pkgs/marge-bot/patches/allow-self-merges.patch
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
diff --git i/marge/job.py w/marge/job.py
|
||||
index ae707c0..404fb18 100644
|
||||
--- i/marge/job.py
|
||||
+++ w/marge/job.py
|
||||
@@ -616,8 +616,6 @@ def _get_reviewer_names_and_emails(
|
||||
self_reviewed = {commit["author_email"] for commit in commits} & {
|
||||
user.email for user in users
|
||||
}
|
||||
- if self_reviewed and len(users) <= 1:
|
||||
- raise CannotMerge("Commits require at least one independent reviewer.")
|
||||
return [f"{user.name} <{user.email}>" for user in users]
|
||||
|
||||
|
||||
diff --git i/tests/test_approvals.py w/tests/test_approvals.py
|
||||
index a65ae95..ecb38a4 100644
|
||||
--- i/tests/test_approvals.py
|
||||
+++ w/tests/test_approvals.py
|
||||
@@ -168,20 +168,6 @@ class TestApprovals:
|
||||
commits=[], approvals=self.approvals, api=self.api
|
||||
) == ["Administrator <root@localhost>", "Roger Ebert <ebert@example.com>"]
|
||||
|
||||
- @patch("marge.user.User.fetch_by_id")
|
||||
- def test_approvals_fails_when_same_author(self, user_fetch_by_id):
|
||||
- info = dict(INFO, approved_by=list(INFO["approved_by"]))
|
||||
- del info["approved_by"][1]
|
||||
- approvals = Approvals(self.api, info)
|
||||
- user_fetch_by_id.side_effect = lambda id, _: marge.user.User(
|
||||
- self.api, USERS[id]
|
||||
- )
|
||||
- commits = [{"author_email": "root@localhost"}]
|
||||
- with pytest.raises(CannotMerge):
|
||||
- _get_reviewer_names_and_emails(
|
||||
- commits=commits, approvals=approvals, api=self.api
|
||||
- )
|
||||
-
|
||||
@patch("marge.user.User.fetch_by_id")
|
||||
def test_approvals_succeeds_with_independent_author(self, user_fetch_by_id):
|
||||
user_fetch_by_id.side_effect = lambda id, _: marge.user.User(
|
||||
13
pkgs/marge-bot/patches/wait-for-mr-update.patch
Normal file
13
pkgs/marge-bot/patches/wait-for-mr-update.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
diff --git i/marge/batch_job.py w/marge/batch_job.py
|
||||
index b6423d8..3db302f 100644
|
||||
--- i/marge/batch_job.py
|
||||
+++ w/marge/batch_job.py
|
||||
@@ -205,6 +205,8 @@ class BatchMergeJob(job.MergeJob):
|
||||
# Rebase and apply the trailers
|
||||
self.update_merge_request(merge_request, source_repo_url=source_repo_url)
|
||||
|
||||
+ time.sleep(10)
|
||||
+
|
||||
# This switches git to <target_branch>
|
||||
final_sha = self.merge_batch(
|
||||
merge_request.target_branch,
|
||||
Loading…
Add table
Add a link
Reference in a new issue