private Task <bool> ExecuteAsync() { var args = new[] { "push", "-u", UserName, "-p", Password, ImageName, PublishDir }; var psi = new ProcessStartInfo { FileName = OrasExe, Arguments = ArgumentEscaper.EscapeAndConcatenate(args), RedirectStandardOutput = true, RedirectStandardError = true }; using (var proc = Process.Start(psi)) { proc.WaitForExit(); Log.LogMessage(MessageImportance.High, proc.StandardError.ReadToEnd()); var bufferedOutput = proc.StandardOutput.ReadToEnd(); Log.LogMessage(MessageImportance.High, bufferedOutput); var shaLine = bufferedOutput.Split('\n').Where(s => s.Contains("Digest: sha256:")).FirstOrDefault(); var layerSha = shaLine.Substring(shaLine.IndexOf("sha256")); var registryName = ImageName.Split('/').First(); var repoName = ImageName.Substring(ImageName.IndexOf('/') + 1).Split(':').First(); var tagName = ImageName.Split(':').Last(); Log.LogMessage(MessageImportance.High, registryName); Log.LogMessage(MessageImportance.High, repoName); Log.LogMessage(MessageImportance.High, tagName); } return(Task.FromResult(true)); }
private async Task PullImage(CancellationToken ct) { _logger.LogInformation("Pulling container image: {}", ImageName); var tagSplitIdx = ImageName.LastIndexOf(":", StringComparison.InvariantCultureIgnoreCase); var createParameters = new ImagesCreateParameters { FromImage = ImageName.Substring(0, tagSplitIdx), Tag = ImageName.Substring(tagSplitIdx + 1), }; await DockerClient.Images.CreateImageAsync( createParameters, new AuthConfig(), new Progress <JSONMessage>(m => { _logger.LogTrace("[{}] {}", m.Status, m.ProgressMessage); }), ct); // we should not catch exceptions thrown by inspect because the image is // expected to be available since we've just pulled it var image = await DockerClient.Images.InspectImageAsync(ImageName, ct); ImageId = image.ID; }