conductor_state.proto 2.65 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
syntax = "proto3";

package conductor_state;

// A git remote
message Remote {
  string name = 1;
  string url = 2;
}

enum ReleasePhase {
  // Release was started with `conductor start` and repositories cloned.
13 14 15
  APPLY_ENGINE_CHERRYPICKS = 0;
  CODESIGN_ENGINE_BINARIES = 1;
  APPLY_FRAMEWORK_CHERRYPICKS = 2;
16 17

  // Git tag applied to framework RC branch HEAD and pushed upstream.
18
  PUBLISH_VERSION = 3;
19 20 21 22

  // RC branch HEAD pushed to upstream release branch.
  //
  // For example, flutter-1.2-candidate.3 -> upstream/beta
23
  PUBLISH_CHANNEL = 4;
24 25

  // Package artifacts verified to exist on cloud storage.
26 27 28 29
  VERIFY_RELEASE = 5;

  // There is no further work to be done.
  RELEASE_COMPLETED = 6;
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
}

enum CherrypickState {
  // The cherrypick has not yet been applied.
  PENDING = 0;

  // The cherrypick has not been applied and will require manual resolution.
  PENDING_WITH_CONFLICT = 1;

  // The cherrypick has been successfully applied to the local checkout.
  //
  // This state requires Cherrypick.appliedRevision to also be set.
  COMPLETED = 2;

  // The cherrypick will NOT be applied in this release.
  ABANDONED = 3;
}

message Cherrypick {
  // The revision on trunk to cherrypick.
  string trunkRevision = 1;

  // Once applied, the actual commit revision of the cherrypick.
  string appliedRevision = 2;

  CherrypickState state = 3;
}

message Repository {
  // The development git branch the release is based on.
  //
  // Must be of the form /flutter-(\d+)\.(\d+)-candidate\.(\d+)/
  string candidateBranch = 1;

  // The commit hash at the tip of the branch before cherrypicks were applied.
  string startingGitHead = 2;

  // The difference in commits between this and [startingGitHead] is the number
  // of cherrypicks that have been currently applied.
  string currentGitHead = 3;

  // Path to the git checkout on local disk.
  string checkoutPath = 4;

  // The remote commits will be fetched from.
  Remote upstream = 5;

Jan Mewes's avatar
Jan Mewes committed
77
  // The remote cherrypicks will be pushed to create a Pull Request.
78 79 80 81 82 83
  //
  // This should be a mirror owned by the user conducting the release.
  Remote mirror = 6;

  // Desired cherrypicks.
  repeated Cherrypick cherrypicks = 7;
84 85 86

  // Only for engine repositories.
  string dartRevision = 8;
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
}

message ConductorState {
  // One of 'stable', 'beta', or 'dev'
  string releaseChannel = 1;

  // The name of the release.
  string releaseVersion = 2;

  Repository engine = 4;
  Repository framework = 5;
  int64 createdDate = 6;
  int64 lastUpdatedDate = 7;

  repeated string logs = 8;

103 104
  // The current [ReleasePhase] that has yet to be completed.
  ReleasePhase currentPhase = 9;
105 106

  // Commit hash of the Conductor tool.
107
  string conductorVersion = 10;
108
}