Skip to content

Commit 0f3584e

Browse files
committed
🎨 推送镜像时 tag 不为 latest 则推送 latest
1 parent b487943 commit 0f3584e

File tree

1 file changed

+23
-22
lines changed

1 file changed

+23
-22
lines changed

src/Tools.Build/Commands/IServerPublishCommand.cs

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -495,44 +495,45 @@ void KillProcess()
495495
var tag_with_push_array = domains.SelectMany(domain => proj_datas.ToArray().Select(y => KeyValuePair.Create(y.Key, (y.Value, domain)))).ToArray();
496496

497497
await ForEachAsync(
498-
tag_with_push_array,
499-
cancellationToken,
500-
async (item, cancellationToken) =>
498+
tag_with_push_array,
499+
cancellationToken,
500+
async (item, cancellationToken) =>
501501
{
502502
var proj = item.Key;
503503
(_, _, var dockerfileTag, _) = item.Value.Value;
504504
var domain = item.Value.domain;
505+
var targetTag = $"{domain}/{push_name}/{dockerfileTag}";
505506

506-
var tagProcess = Process.Start(new ProcessStartInfo
507-
{
508-
FileName = "docker",
509-
Arguments = $"tag {dockerfileTag} {domain}/{push_name}/{dockerfileTag}:{tag_ver}",
510-
});
511-
tagProcess.ThrowIsNull();
512-
try
513-
{
514-
await tagProcess.WaitForExitAsync(cancellationToken);
515-
}
516-
finally
507+
// 推送指定版本
508+
await RunDockerCommandAsync($"tag {dockerfileTag} {targetTag}:{tag_ver}", cancellationToken);
509+
await RunDockerCommandAsync($"push {targetTag}:{tag_ver}", cancellationToken);
510+
511+
// 如果不是latest,额外推送latest
512+
if (tag_ver != "latest")
517513
{
518-
tagProcess.KillEntireProcessTree();
514+
await RunDockerCommandAsync($"tag {dockerfileTag} {targetTag}:latest", cancellationToken);
515+
await RunDockerCommandAsync($"push {targetTag}:latest", cancellationToken);
519516
}
517+
});
520518

521-
var pushProcess = Process.Start(new ProcessStartInfo
519+
// 提取的公共方法
520+
async Task RunDockerCommandAsync(string arguments, CancellationToken cancellationToken)
521+
{
522+
var process = Process.Start(new ProcessStartInfo
522523
{
523524
FileName = "docker",
524-
Arguments = $"push {domain}/{push_name}/{dockerfileTag}:{tag_ver}",
525-
});
526-
pushProcess.ThrowIsNull();
525+
Arguments = arguments,
526+
}).ThrowIsNull();
527+
527528
try
528529
{
529-
await pushProcess.WaitForExitAsync(cancellationToken);
530+
await process.WaitForExitAsync(cancellationToken);
530531
}
531532
finally
532533
{
533-
pushProcess.KillEntireProcessTree();
534+
process.KillEntireProcessTree();
534535
}
535-
});
536+
}
536537
}
537538

538539
#endregion

0 commit comments

Comments
 (0)