protected override DockerImageBuildSettings GetBuildSettings(DockerDepsImage dockerImage, string registry) { var buildSettings = base.GetBuildSettings(dockerImage, registry); var workDir = GetWorkingDir(dockerImage); var image = dockerImage as DockerImage; buildSettings.File = $"{workDir}/Dockerfile.build"; buildSettings.BuildArg = new[] { $"DOTNET_VERSION={image!.Version}", $"TAG={image.Distro}" };
protected override DockerImageBuildSettings GetBuildSettings(DockerDepsImage dockerImage, string registry) { var buildSettings = base.GetBuildSettings(dockerImage, registry); var workDir = GetWorkingDir(dockerImage); buildSettings.File = $"{workDir}/Dockerfile"; return(buildSettings); }
protected virtual void DockerImage(BuildContext context, DockerDepsImage dockerImage) { var buildSettings = GetBuildSettings(dockerImage, context.DockerRegistry); context.DockerBuild(buildSettings, GetWorkingDir(dockerImage).ToString(), "--output type=docker"); var dockerTags = GetDockerTags(dockerImage, context.DockerRegistry, dockerImage.Architecture).ToArray(); foreach (var tag in dockerTags) { context.DockerPush(tag); } }
protected virtual DockerImageBuildSettings GetBuildSettings(DockerDepsImage dockerImage, string registry) { var arch = dockerImage.Architecture; var dockerTags = GetDockerTags(dockerImage, registry, arch).ToArray(); var buildSettings = new DockerImageBuildSettings { Rm = true, Tag = dockerTags, Platform = string.Join(",", $"linux/{arch.ToString().ToLower()}"), Pull = true, }; return(buildSettings); }
protected override IEnumerable <string> GetDockerTags(DockerDepsImage dockerImage, string dockerRegistry, Architecture?arch = null) { var tags = new[] { $"{dockerRegistry}/{Constants.DockerImageDeps}:{dockerImage.Distro}", }; if (!arch.HasValue) { return(tags); } var suffix = arch.Value.ToSuffix(); return(tags.Select(x => $"{x}-{suffix}")); }
protected void DockerManifest(BuildContext context, DockerDepsImage dockerImage, bool skipArm64Image = false) { var manifestTags = GetDockerTags(dockerImage, context.DockerRegistry); foreach (var tag in manifestTags) { var amd64Tag = $"{tag}-{Architecture.Amd64.ToSuffix()}"; if (skipArm64Image) { context.DockerManifestCreate(tag, amd64Tag); } else { var arm64Tag = $"{tag}-{Architecture.Arm64.ToSuffix()}"; context.DockerManifestCreate(tag, amd64Tag, arm64Tag); } context.DockerManifestPush(tag); context.DockerManifestRemove(tag); } }
protected override DirectoryPath GetWorkingDir(DockerDepsImage dockerImage) => DirectoryPath.FromString("./src/linux");
protected override void DockerImage(BuildContext context, DockerDepsImage dockerImage) { GenerateDockerfile(context, GetWorkingDir(dockerImage), (dockerImage as DockerImage) !.Variant); base.DockerImage(context, dockerImage); }
protected abstract IEnumerable <string> GetDockerTags(DockerDepsImage dockerImage, string dockerRegistry, Architecture?arch = null);
protected abstract DirectoryPath GetWorkingDir(DockerDepsImage dockerImage);