chore: added standard labels for our builders (#1934)

Signed-off-by: Matej Vasek <mvasek@redhat.com>
This commit is contained in:
Matej Vasek 2023-08-22 08:35:54 +02:00 committed by GitHub
parent ae4ccc1786
commit d0fe80c408
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 39 additions and 2 deletions

View File

@ -2,6 +2,7 @@ package main
import (
"archive/tar"
"bytes"
"compress/gzip"
"context"
"encoding/base64"
@ -134,6 +135,7 @@ func buildBuilderImage(ctx context.Context, variant string) error {
Publish: false,
PullPolicy: image.PullIfNotPresent,
}
err = packClient.CreateBuilder(ctx, createBuilderOpts)
if err != nil {
return fmt.Errorf("canont create builder: %w", err)
@ -144,9 +146,43 @@ func buildBuilderImage(ctx context.Context, variant string) error {
return fmt.Errorf("cannot create docker client")
}
err = dockerClient.ImageTag(ctx, newBuilderImageTagged, newBuilderImageLatest)
imgBldOpts := types.ImageBuildOptions{
Tags: []string{newBuilderImageLatest, newBuilderImageTagged},
Labels: map[string]string{
"org.opencontainers.image.description": "Paketo Jammy builder enriched with Rust and Func-Go buildpacks.",
"org.opencontainers.image.source": "https://github.com/knative/func",
"org.opencontainers.image.vendor": "https://github.com/knative/func",
"org.opencontainers.image.url": "https://github.com/knative/func/pkgs/container/builder-jammy-" + variant,
"org.opencontainers.image.version": *release.Name,
},
}
dockerFile := "FROM " + newBuilderImageTagged
var buildCtxBuff bytes.Buffer
tw := tar.NewWriter(&buildCtxBuff)
hdr := tar.Header{Typeflag: tar.TypeReg, Name: "Dockerfile", Size: int64(len(dockerFile)), Mode: 0644}
err = tw.WriteHeader(&hdr)
if err != nil {
return fmt.Errorf("cannot tag latest image: %w", err)
return fmt.Errorf("cannot write tar header: %w", err)
}
_, err = tw.Write([]byte(dockerFile))
if err != nil {
return fmt.Errorf("cannot write docker file: %w", err)
}
_ = tw.Close()
imgBldResp, err := dockerClient.ImageBuild(ctx, &buildCtxBuff, imgBldOpts)
if err != nil {
return fmt.Errorf("cannot initialize build of image with additional labels: %w", err)
}
defer func(Body io.ReadCloser) {
_ = Body.Close()
}(imgBldResp.Body)
fd := os.Stdout.Fd()
isTerminal := term.IsTerminal(int(os.Stdout.Fd()))
err = jsonmessage.DisplayJSONMessagesStream(imgBldResp.Body, os.Stdout, fd, isTerminal, nil)
if err != nil {
return fmt.Errorf("cannot build image with additional labels: %w", err)
}
authConfig := registry.AuthConfig{
@ -253,6 +289,7 @@ func downloadBuilderToml(ctx context.Context, tarballUrl, builderTomlPath string
// Adds custom Rust and Go-Function buildpacks to the builder.
func patchBuilder(config *builder.Config) {
config.Description += "\nAddendum: this is modified builder that also contains Rust and Func-Go buildpacks."
additionalBuildpacks := []builder.ModuleConfig{
{
ModuleInfo: dist.ModuleInfo{