Beispiel #1
0
    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}" };
Beispiel #2
0
    protected override DockerImageBuildSettings GetBuildSettings(DockerDepsImage dockerImage, string registry)
    {
        var buildSettings = base.GetBuildSettings(dockerImage, registry);

        var workDir = GetWorkingDir(dockerImage);

        buildSettings.File = $"{workDir}/Dockerfile";

        return(buildSettings);
    }
Beispiel #3
0
    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);
        }
    }
Beispiel #4
0
    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);
    }
Beispiel #5
0
    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}"));
    }
Beispiel #6
0
    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);
        }
    }
Beispiel #7
0
 protected override DirectoryPath GetWorkingDir(DockerDepsImage dockerImage) => DirectoryPath.FromString("./src/linux");
Beispiel #8
0
 protected override void DockerImage(BuildContext context, DockerDepsImage dockerImage)
 {
     GenerateDockerfile(context, GetWorkingDir(dockerImage), (dockerImage as DockerImage) !.Variant);
     base.DockerImage(context, dockerImage);
 }
Beispiel #9
0
 protected abstract IEnumerable <string> GetDockerTags(DockerDepsImage dockerImage, string dockerRegistry, Architecture?arch = null);
Beispiel #10
0
 protected abstract DirectoryPath GetWorkingDir(DockerDepsImage dockerImage);