This is an archive of the discontinued Mercurial Phabricator instance.

ci: implement a "try server"
Changes PlannedPublic

Authored by indygreg on Sep 29 2019, 8:53 PM.

Details

Reviewers
None
Group Reviewers
hg-reviewers
Summary

This commit implements a new CI component which allows privileged users
to upload Mercurial bundles and have automation run against them. The
functionality is similar to what exists in contrib/automation/automation.py
for running tests on remote AWS infrastructure. The big difference is
most of the heavy work is handled by the CI system instead of by the
client invoking AWS APIs directly. This makes it easier to scale and
doesn't require the user to have substantial privileges for an AWS
account.

This commit also introduces a client-side ci.py command line tool
for interacting with the CI system. This tool provides a try
sub-command for generating a Mercurial bundle and directly invoking
a Lambda function with it.

Diff Detail

Lint
Lint Skipped
Unit
Unit Tests Skipped

Event Timeline

indygreg created this revision.Sep 29 2019, 8:53 PM
indygreg planned changes to this revision.Sep 29 2019, 8:58 PM

This is less polished than the commit implementing the CI system. And it exposes some cracks in the design of the CI system (such as a missing abstraction for controlling what to run). But it does work.

I still need to flush out how users are created, as getting credentials to the requesting user could be a bit annoying. We probably also want to configure MFA requirements to help mitigate abuse of the access keys. But it's a start and I'm potentially comfortable with this running during the Sprint to give people a way to quickly run tests.

indygreg edited the summary of this revision. (Show Details)Sep 30 2019, 11:57 PM
indygreg updated this revision to Diff 16717.
indygreg updated this revision to Diff 16853.Oct 5 2019, 2:36 PM
indygreg updated this revision to Diff 16854.Oct 5 2019, 3:04 PM
indygreg planned changes to this revision.Oct 16 2019, 10:50 PM