internal: use manifest build/payload pipelines (images#1766)

With the new images library changes to move the pipeline
roles out of the image types into the manifest we need
to tweak osbuild-composer to use the new way of getting
the payload and build pipelines.

This commit implements that new method based on the
manifest instead of the image type. See images pr#1766
for the rational of the change.
This commit is contained in:
Michael Vogt 2025-08-18 13:36:05 +02:00 committed by Tomáš Hozza
parent 36ccbf19b2
commit 9ba7f1a8b0
5 changed files with 25 additions and 20 deletions

View file

@ -256,8 +256,8 @@ func (s *Server) enqueueCompose(irs []imageRequest, channel string) (uuid.UUID,
id, err = s.workers.EnqueueOSBuildAsDependency(arch.Name(), &worker.OSBuildJob{
Targets: ir.targets,
PipelineNames: &worker.PipelineNames{
Build: ir.imageType.BuildPipelines(),
Payload: ir.imageType.PayloadPipelines(),
Build: manifestSource.BuildPipelines(),
Payload: manifestSource.PayloadPipelines(),
},
}, []uuid.UUID{manifestJobID}, channel)
if err != nil {
@ -408,8 +408,8 @@ func (s *Server) enqueueKojiCompose(taskID uint64, server, name, version, releas
buildID, err := s.workers.EnqueueOSBuildAsDependency(arch.Name(), &worker.OSBuildJob{
PipelineNames: &worker.PipelineNames{
Build: ir.imageType.BuildPipelines(),
Payload: ir.imageType.PayloadPipelines(),
Build: manifestSource.BuildPipelines(),
Payload: manifestSource.PayloadPipelines(),
},
Targets: targets,
ManifestDynArgsIdx: common.ToPtr(1),

View file

@ -2655,8 +2655,8 @@ func (api *API) composeHandler(writer http.ResponseWriter, request *http.Request
Manifest: mf,
Targets: targets,
PipelineNames: &worker.PipelineNames{
Build: imageType.BuildPipelines(),
Payload: imageType.PayloadPipelines(),
Build: manifest.BuildPipelines(),
Payload: manifest.PayloadPipelines(),
},
ImageBootMode: imageType.BootMode().String(),
}, "")

View file

@ -5,7 +5,6 @@ import (
"fmt"
"runtime/debug"
"github.com/osbuild/images/pkg/distro"
"github.com/osbuild/images/pkg/manifest"
"github.com/osbuild/images/pkg/osbuild"
"github.com/osbuild/images/pkg/rpmmd"
@ -368,6 +367,12 @@ type updateJobRequest struct {
Result interface{} `json:"result"`
}
// compat with images https://github.com/osbuild/images/pull/1766
var (
BuildPipelinesFallback = []string{"build"}
PayloadPipelinesFallback = []string{"os", "assembler"}
)
func (j *OSBuildJob) UnmarshalJSON(data []byte) error {
// handles unmarshalling old jobs in the queue that don't contain newer fields
// adds default/fallback values to missing data
@ -383,8 +388,8 @@ func (j *OSBuildJob) UnmarshalJSON(data []byte) error {
}
if compat.PipelineNames == nil {
compat.PipelineNames = &PipelineNames{
Build: distro.BuildPipelinesFallback(),
Payload: distro.PayloadPipelinesFallback(),
Build: BuildPipelinesFallback,
Payload: PayloadPipelinesFallback,
}
}
@ -439,8 +444,8 @@ func (j *OSBuildJobResult) UnmarshalJSON(data []byte) error {
}
if alias.PipelineNames == nil {
alias.PipelineNames = &PipelineNames{
Build: distro.BuildPipelinesFallback(),
Payload: distro.PayloadPipelinesFallback(),
Build: BuildPipelinesFallback,
Payload: PayloadPipelinesFallback,
}
}
*j = OSBuildJobResult(alias)

View file

@ -5,10 +5,10 @@ import (
"fmt"
"testing"
"github.com/osbuild/images/pkg/distro"
"github.com/stretchr/testify/assert"
"github.com/osbuild/osbuild-composer/internal/target"
"github.com/osbuild/osbuild-composer/internal/worker/clienterrors"
"github.com/stretchr/testify/assert"
)
func TestOSBuildJobResultTargetErrors(t *testing.T) {
@ -429,8 +429,8 @@ func TestOSBuildJobExportsCompatibilityUnmarshal(t *testing.T) {
},
},
PipelineNames: &PipelineNames{
Build: distro.BuildPipelinesFallback(),
Payload: distro.PayloadPipelinesFallback(),
Build: BuildPipelinesFallback,
Payload: PayloadPipelinesFallback,
},
},
expectedExports: []string{"archive"},
@ -456,8 +456,8 @@ func TestOSBuildJobExportsCompatibilityUnmarshal(t *testing.T) {
},
},
PipelineNames: &PipelineNames{
Build: distro.BuildPipelinesFallback(),
Payload: distro.PayloadPipelinesFallback(),
Build: BuildPipelinesFallback,
Payload: PayloadPipelinesFallback,
},
},
expectedExports: []string{"archive"},
@ -484,8 +484,8 @@ func TestOSBuildJobExportsCompatibilityUnmarshal(t *testing.T) {
},
},
PipelineNames: &PipelineNames{
Build: distro.BuildPipelinesFallback(),
Payload: distro.PayloadPipelinesFallback(),
Build: BuildPipelinesFallback,
Payload: PayloadPipelinesFallback,
},
},
expectedExports: []string{"archive"},

View file

@ -497,7 +497,7 @@ func TestMixedOSBuildJob(t *testing.T) {
BasePath: "/",
}
server := newTestServer(t, t.TempDir(), config, false)
fbPipelines := &worker.PipelineNames{Build: distro.BuildPipelinesFallback(), Payload: distro.PayloadPipelinesFallback()}
fbPipelines := &worker.PipelineNames{Build: worker.BuildPipelinesFallback, Payload: worker.PayloadPipelinesFallback}
oldJob := worker.OSBuildJob{
Manifest: emptyManifestV2,