mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
[conductor] Tag engine versions (#120419)
* [conductor] Tag engine versions * Move tag to repository
This commit is contained in:
parent
25c2c22d29
commit
b2e37c6592
@ -264,21 +264,33 @@ class NextContext extends Context {
|
||||
case pb.ReleasePhase.PUBLISH_VERSION:
|
||||
stdio.printStatus('Please ensure that you have merged your framework PR and that');
|
||||
stdio.printStatus('post-submit CI has finished successfully.\n');
|
||||
final Remote upstream = Remote(
|
||||
final Remote frameworkUpstream = Remote(
|
||||
name: RemoteName.upstream,
|
||||
url: state.framework.upstream.url,
|
||||
);
|
||||
final FrameworkRepository framework = FrameworkRepository(
|
||||
checkouts,
|
||||
// We explicitly want to check out the merged version from upstream
|
||||
initialRef: '${upstream.name}/${state.framework.candidateBranch}',
|
||||
upstreamRemote: upstream,
|
||||
initialRef: '${frameworkUpstream.name}/${state.framework.candidateBranch}',
|
||||
upstreamRemote: frameworkUpstream,
|
||||
previousCheckoutLocation: state.framework.checkoutPath,
|
||||
);
|
||||
final String headRevision = await framework.reverseParse('HEAD');
|
||||
final String frameworkHead = await framework.reverseParse('HEAD');
|
||||
final Remote engineUpstream = Remote(
|
||||
name: RemoteName.upstream,
|
||||
url: state.engine.upstream.url,
|
||||
);
|
||||
final EngineRepository engine = EngineRepository(
|
||||
checkouts,
|
||||
// We explicitly want to check out the merged version from upstream
|
||||
initialRef: '${engineUpstream.name}/${state.engine.candidateBranch}',
|
||||
upstreamRemote: engineUpstream,
|
||||
previousCheckoutLocation: state.engine.checkoutPath,
|
||||
);
|
||||
final String engineHead = await engine.reverseParse('HEAD');
|
||||
if (autoAccept == false) {
|
||||
final bool response = await prompt(
|
||||
'Are you ready to tag commit $headRevision as ${state.releaseVersion}\n'
|
||||
'Are you ready to tag commit $frameworkHead as ${state.releaseVersion}\n'
|
||||
'and push to remote ${state.framework.upstream.url}?',
|
||||
);
|
||||
if (!response) {
|
||||
@ -287,7 +299,8 @@ class NextContext extends Context {
|
||||
return;
|
||||
}
|
||||
}
|
||||
await framework.tag(headRevision, state.releaseVersion, upstream.name);
|
||||
await framework.tag(frameworkHead, state.releaseVersion, frameworkUpstream.name);
|
||||
await engine.tag(engineHead, state.releaseVersion, engineUpstream.name);
|
||||
break;
|
||||
case pb.ReleasePhase.PUBLISH_CHANNEL:
|
||||
final Remote upstream = Remote(
|
||||
|
@ -319,6 +319,27 @@ abstract class Repository {
|
||||
);
|
||||
}
|
||||
|
||||
/// Tag [commit] and push the tag to the remote.
|
||||
Future<void> tag(String commit, String tagName, String remote) async {
|
||||
assert(commit.isNotEmpty);
|
||||
assert(tagName.isNotEmpty);
|
||||
assert(remote.isNotEmpty);
|
||||
stdio.printStatus('About to tag commit $commit as $tagName...');
|
||||
await git.run(
|
||||
<String>['tag', tagName, commit],
|
||||
'tag the commit with the version label',
|
||||
workingDirectory: (await checkoutDirectory).path,
|
||||
);
|
||||
stdio.printStatus('Tagging successful.');
|
||||
stdio.printStatus('About to push $tagName to remote $remote...');
|
||||
await git.run(
|
||||
<String>['push', remote, tagName],
|
||||
'publish the tag to the repo',
|
||||
workingDirectory: (await checkoutDirectory).path,
|
||||
);
|
||||
stdio.printStatus('Tag push successful.');
|
||||
}
|
||||
|
||||
/// List commits in reverse chronological order.
|
||||
Future<List<String>> revList(List<String> args) async {
|
||||
return (await git.getOutput(<String>['rev-list', ...args],
|
||||
@ -592,27 +613,6 @@ class FrameworkRepository extends Repository {
|
||||
);
|
||||
}
|
||||
|
||||
/// Tag [commit] and push the tag to the remote.
|
||||
Future<void> tag(String commit, String tagName, String remote) async {
|
||||
assert(commit.isNotEmpty);
|
||||
assert(tagName.isNotEmpty);
|
||||
assert(remote.isNotEmpty);
|
||||
stdio.printStatus('About to tag commit $commit as $tagName...');
|
||||
await git.run(
|
||||
<String>['tag', tagName, commit],
|
||||
'tag the commit with the version label',
|
||||
workingDirectory: (await checkoutDirectory).path,
|
||||
);
|
||||
stdio.printStatus('Tagging successful.');
|
||||
stdio.printStatus('About to push $tagName to remote $remote...');
|
||||
await git.run(
|
||||
<String>['push', remote, tagName],
|
||||
'publish the tag to the repo',
|
||||
workingDirectory: (await checkoutDirectory).path,
|
||||
);
|
||||
stdio.printStatus('Tag push successful.');
|
||||
}
|
||||
|
||||
@override
|
||||
Future<FrameworkRepository> cloneRepository(String? cloneName) async {
|
||||
assert(localUpstream);
|
||||
|
@ -758,6 +758,10 @@ void main() {
|
||||
candidateBranch: candidateBranch,
|
||||
upstream: pb.Remote(url: FrameworkRepository.defaultUpstream),
|
||||
),
|
||||
engine: pb.Repository(
|
||||
candidateBranch: candidateBranch,
|
||||
upstream: pb.Remote(url: EngineRepository.defaultUpstream),
|
||||
),
|
||||
releaseVersion: releaseVersion,
|
||||
);
|
||||
platform = FakePlatform(
|
||||
@ -773,6 +777,18 @@ void main() {
|
||||
stdio.stdin.add('n');
|
||||
final FakeProcessManager processManager = FakeProcessManager.list(
|
||||
<FakeCommand>[
|
||||
// Framework checkout
|
||||
const FakeCommand(
|
||||
command: <String>['git', 'fetch', 'upstream'],
|
||||
),
|
||||
const FakeCommand(
|
||||
command: <String>['git', 'checkout', '$remoteName/$candidateBranch'],
|
||||
),
|
||||
const FakeCommand(
|
||||
command: <String>['git', 'rev-parse', 'HEAD'],
|
||||
stdout: revision1,
|
||||
),
|
||||
// Engine checkout
|
||||
const FakeCommand(
|
||||
command: <String>['git', 'fetch', 'upstream'],
|
||||
),
|
||||
@ -818,6 +834,7 @@ void main() {
|
||||
test('updates state.currentPhase if user responds yes', () async {
|
||||
stdio.stdin.add('y');
|
||||
final FakeProcessManager processManager = FakeProcessManager.list(<FakeCommand>[
|
||||
// Framework checkout
|
||||
const FakeCommand(
|
||||
command: <String>['git', 'fetch', 'upstream'],
|
||||
),
|
||||
@ -828,12 +845,31 @@ void main() {
|
||||
command: <String>['git', 'rev-parse', 'HEAD'],
|
||||
stdout: revision1,
|
||||
),
|
||||
// Engine checkout
|
||||
const FakeCommand(
|
||||
command: <String>['git', 'fetch', 'upstream'],
|
||||
),
|
||||
const FakeCommand(
|
||||
command: <String>['git', 'checkout', '$remoteName/$candidateBranch'],
|
||||
),
|
||||
const FakeCommand(
|
||||
command: <String>['git', 'rev-parse', 'HEAD'],
|
||||
stdout: revision2,
|
||||
),
|
||||
// Framework tag
|
||||
const FakeCommand(
|
||||
command: <String>['git', 'tag', releaseVersion, revision1],
|
||||
),
|
||||
const FakeCommand(
|
||||
command: <String>['git', 'push', remoteName, releaseVersion],
|
||||
),
|
||||
// Engine tag
|
||||
const FakeCommand(
|
||||
command: <String>['git', 'tag', releaseVersion, revision2],
|
||||
),
|
||||
const FakeCommand(
|
||||
command: <String>['git', 'push', remoteName, releaseVersion],
|
||||
),
|
||||
]);
|
||||
final FakePlatform platform = FakePlatform(
|
||||
environment: <String, String>{
|
||||
|
Loading…
Reference in New Issue
Block a user