Diff for "QAShepherd"

Not logged in - Log In / Register

Differences between revisions 10 and 11
Revision 10 as of 2010-08-04 19:14:47
Size: 3448
Editor: mars
Comment:
Revision 11 as of 2010-08-04 19:16:05
Size: 3527
Editor: mars
Comment:
Deletions are marked like this. Additions are marked like this.
Line 16: Line 16:
  * ''As a quicker version we can rsync the report to some static location.''

QA Shepherd project developer notes

Design notes for the Shepherd project.

Algorithm details can be found on the QAProcessContinuousRollouts page.

User stories

  • As a LOSA, I want to read an HTML report that tells me the latest fully QA'd revision of stable is, so that I can deploy that revision to production.

  • As a user, I want to read an HTML report that tells me whether my branch has been promoted from QA to production, so I do not have to rely on yet more email to tell me what is going on. (Ursinha, gary)
    • We probably want to publish this on https://qa.launchpad.net

    • As a quicker version we can rsync the report to some static location.

  • As an operator and developer, I want to read in the log files the detailed reasons that the shepherd took a particular action, so that debugging the tool is easier. (mars)
    • the log should record both the current state of the change sources and the state transitions that the shepherd executes based on said current state.

  • As an operator, I want to run the parts of the rollout process individually and on-demand, so that resolving problems is easier. (mars)
    • This implies a small sharp script for each part - finding branches, doing promotion, reporting the system state.

  • As an operator, I want to run any script without worrying if another copy of the script is already running and stomping on the data, so that on-demand runs and maintenance are safer and easier.
    • This implies a single-instance log, like a PID file.

    • As an operator, I want a loud warning if a PID file is more than X minutes old, so I have some foreknowledge that a hang or crash is blocking further updates from happening. (mars)
  • As a user, I want to be warned once a day by email that my branch is ready for QA, so that I remember to do it. (mars, Ursinha)
  • As a user, I want a message sent to a mailing list when a branch has been sitting in QA for more than X days, so that someone can roll back the branch and unblock updates. (mars, Ursinha)
    • This implies a QA policy with a grace period.

  • As an operator, I want to toggle a switch that keeps the scripts from running, so that I can do maintenance and updates without hunting down and disabling a bunch of cron scripts. (mars)
    • Probably dropping a maintenance.txt file on disk would do this.

    • As a user, I want the log file and HTML reports to tell me when updates were aborted because a maintenance.txt is in place, so that I know why updates aren't happening. (mars)
    • As an operator, I want the log file and HTML reports to tell me how long ago the maintenance.txt file was created, so I know if someone forgot to remove the file by accident. (mars)
  • As an operator, I would like the script to be deployed as the lpqateam user, so that I can find all of the parts of the QA process in the same place. (Ursinha, matsubara, gary)
  • As an operator, I want a single push-button command to set maintenance mode, update the code, then remove maintenance mode again, so that I am less likely to make mistakes when deploying a new version. (mars)
    • Need both maintenance.txt and some way to wait for executing scripts to finish their work before proceeding.

Other notes

  • The QA tagger can pass the revno, branch name, and linked bugs through to the shepherd using its database. This saves the shepherd from doing the work.

QAShepherd (last edited 2010-08-06 15:05:06 by mars)