aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mod/mod-ci-github.cxx122
1 files changed, 46 insertions, 76 deletions
diff --git a/mod/mod-ci-github.cxx b/mod/mod-ci-github.cxx
index 95bfe99..0d0940a 100644
--- a/mod/mod-ci-github.cxx
+++ b/mod/mod-ci-github.cxx
@@ -1793,48 +1793,33 @@ namespace brep
//
if (iat != nullptr)
{
- // Update the check run if we have a node id, otherwise create a new
- // one.
+ // Update the check run if we have a node id, otherwise create a new one
+ // (as requested by handle_check_run_rerequest(); see above).
//
- if (cr->node_id)
- {
- if (gq_update_check_run (error,
- *cr,
- iat->token,
- sd.repository_node_id,
- *cr->node_id,
- details_url (b),
- build_state::building))
- {
- // Do nothing further if the state was already built on GitHub (note
- // that this is based on the above-mentioned special GitHub
- // semantics of preventing changes to the built status).
- //
- if (cr->state == build_state::built)
- {
- warn << "check run " << bid << ": already in built state on GitHub";
- return nullptr;
- }
-
- assert (cr->state == build_state::building);
- l3 ([&]{trace << "updated check_run { " << *cr << " }";});
- }
- }
- else
- {
- // Create a new check run as requested by build_building() (see above).
+ bool updated (cr->node_id.has_value ());
+
+ if (gq_update_or_create_check_run (error,
+ *cr,
+ iat->token,
+ sd.repository_node_id,
+ cr->node_id,
+ sd.report_sha,
+ details_url (b),
+ build_state::building))
+ {
+ // Do nothing further if the state was already built on GitHub (note
+ // that this is based on the above-mentioned special GitHub
+ // semantics of preventing changes to the built status).
//
- if (gq_create_check_run (error,
- *cr,
- iat->token,
- sd.repository_node_id,
- sd.report_sha,
- details_url (b),
- build_state::building))
+ if (updated && cr->state == build_state::built)
{
- assert (cr->state == build_state::building);
- l3 ([&]{trace << "created check_run { " << *cr << " }";});
+ warn << "check run " << bid << ": already in built state on GitHub";
+ return nullptr;
}
+
+ assert (cr->state == build_state::building);
+ l3 ([&]{trace << (updated ? "updated" : "created")
+ << " check_run { " << *cr << " }";});
}
}
@@ -2105,45 +2090,30 @@ namespace brep
circle (*b.status) + ' ' + ucase (to_string (*b.status)),
move (sm));
- if (cr.node_id)
- {
- // Update existing check run to built.
- //
- if (gq_update_check_run (error,
- cr,
- iat->token,
- sd.repository_node_id,
- *cr.node_id,
- details_url (b),
- build_state::built,
- move (br)))
- {
- assert (cr.state == build_state::built);
- l3 ([&]{trace << "updated check_run { " << cr << " }";});
- }
- }
- else
+ // Update existing or create new check run if cr.node_id is absent.
+ //
+ // Note that we don't have build hints so will be creating this check
+ // run with the full build id as name. In the unlikely event that an out
+ // of order build_queued() were to run before we've saved this check run
+ // to the service data it will create another check run with the
+ // shortened name which will never get to the built state.
+ //
+ bool updated (cr.node_id.has_value ());
+
+ if (gq_update_or_create_check_run (error,
+ cr,
+ iat->token,
+ sd.repository_node_id,
+ cr.node_id,
+ sd.report_sha,
+ details_url (b),
+ build_state::built,
+ move (br)))
{
- // Create new check run.
- //
- // Note that we don't have build hints so will be creating this check
- // run with the full build id as name. In the unlikely event that an
- // out of order build_queued() were to run before we've saved this
- // check run to the service data it will create another check run with
- // the shortened name which will never get to the built state.
- //
- if (gq_create_check_run (error,
- cr,
- iat->token,
- sd.repository_node_id,
- sd.report_sha,
- details_url (b),
- build_state::built,
- move (br)))
- {
- assert (cr.state == build_state::built);
- l3 ([&]{trace << "created check_run { " << cr << " }";});
- }
+ assert (cr.state == build_state::built);
+
+ l3 ([&]{trace << (updated ? "updated" : "created")
+ << " check_run { " << cr << " }";});
}
if (cr.state_synced)