@@ -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