aboutsummaryrefslogtreecommitdiff
path: root/mod/mod-ci-github.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2024-10-21 11:10:47 +0200
committerFrancois Kritzinger <francois@codesynthesis.com>2024-10-22 07:56:00 +0200
commitde4d7616b37f7d0c3bb3a2f0a3a60e4693472675 (patch)
tree2bfd3f954ee4f865eaf5930dbe5a3967041dc87c /mod/mod-ci-github.cxx
parent639e53e0e1cc2f60f1560ace50bd11951c5744b1 (diff)
Sketch
Diffstat (limited to 'mod/mod-ci-github.cxx')
-rw-r--r--mod/mod-ci-github.cxx58
1 files changed, 44 insertions, 14 deletions
diff --git a/mod/mod-ci-github.cxx b/mod/mod-ci-github.cxx
index a8cb919..56f6d89 100644
--- a/mod/mod-ci-github.cxx
+++ b/mod/mod-ci-github.cxx
@@ -573,6 +573,8 @@ namespace brep
error << "check suite " << nid << " (re-requested): unable to cancel";
}
+ // @@@ Use repo+head ad service id.
+
// Start CI for the check suite.
//
repository_location rl (cs.repository.clone_url + '#' +
@@ -822,24 +824,30 @@ namespace brep
return true;
}
- // Note: only handles pull requests (not check suites).
- //
function<optional<string> (const tenant_service&)> ci_github::
- build_unloaded (tenant_service&& ts,
- const diag_epilogue& log_writer) const noexcept
+ build_unloaded_pre_check (service_data&& sd,
+ const diag_epilogue& log_writer) const noexcept
{
NOTIFICATION_DIAG (log_writer);
- service_data sd;
- try
- {
- sd = service_data (*ts.data);
- }
- catch (const invalid_argument& e)
- {
- error << "failed to parse service data: " << e;
- return nullptr;
- }
+ // Note: PR only (but both local and remove).
+ //
+ // - Ask for test merge commit.
+ // - If not ready, get called again.
+ // - If not mergeable, behind, of different head, cancel itself and ignore.
+ // - Otherwise, create unloaded CI tenant (with proper duplicate mode
+ // based on re_request) and cancel itself.
+
+ return nullptr;
+ }
+
+ function<optional<string> (const tenant_service&)> ci_github::
+ build_unloaded_load (service_data&& sd,
+ const diag_epilogue& log_writer) const noexcept
+ {
+ // @@@ TODO: load the tenant: should be the same for both branch push and
+ // PR.
+ //
// Get a new installation access token if the current one has expired.
//
@@ -1196,6 +1204,28 @@ namespace brep
};
}
+ function<optional<string> (const tenant_service&)> ci_github::
+ build_unloaded (tenant_service&& ts,
+ const diag_epilogue& log_writer) const noexcept
+ {
+ NOTIFICATION_DIAG (log_writer);
+
+ service_data sd;
+ try
+ {
+ sd = service_data (*ts.data);
+ }
+ catch (const invalid_argument& e)
+ {
+ error << "failed to parse service data: " << e;
+ return nullptr;
+ }
+
+ return sd.pre_check
+ ? build_unloaded_pre_check (move (sd), log_writer)
+ : build_unloaded_load (move (sd), log_writer)
+ }
+
// Build state change notifications (see tenant-services.hxx for
// background). Mapping our state transitions to GitHub pose multiple
// problems: