52 lines
1.5 KiB
Go
52 lines
1.5 KiB
Go
package pipeline
|
|
|
|
import (
|
|
"github.com/osbuild/osbuild-composer/internal/osbuild2"
|
|
)
|
|
|
|
// OSTreeCommitPipeline represents an ostree with one commit.
|
|
type OSTreeCommitPipeline struct {
|
|
Pipeline
|
|
OSVersion string
|
|
|
|
treePipeline *OSPipeline
|
|
ref string
|
|
}
|
|
|
|
// NewOSTreeCommitPipeline creates a new OSTree commit pipeline. The
|
|
// treePipeline is the tree representing the content of the commit.
|
|
// ref is the ref to create the commit under.
|
|
func NewOSTreeCommitPipeline(buildPipeline *BuildPipeline, treePipeline *OSPipeline, ref string) OSTreeCommitPipeline {
|
|
return OSTreeCommitPipeline{
|
|
Pipeline: New("ostree-commit", buildPipeline, nil),
|
|
treePipeline: treePipeline,
|
|
ref: ref,
|
|
}
|
|
}
|
|
|
|
// Ref returns the OSTree ref of the commit.
|
|
func (p OSTreeCommitPipeline) Ref() string {
|
|
return p.ref
|
|
}
|
|
|
|
func (p OSTreeCommitPipeline) Serialize() osbuild2.Pipeline {
|
|
pipeline := p.Pipeline.Serialize()
|
|
|
|
pipeline.AddStage(osbuild2.NewOSTreeInitStage(&osbuild2.OSTreeInitStageOptions{Path: "/repo"}))
|
|
|
|
commitStageInput := new(osbuild2.OSTreeCommitStageInput)
|
|
commitStageInput.Type = "org.osbuild.tree"
|
|
commitStageInput.Origin = "org.osbuild.pipeline"
|
|
commitStageInput.References = osbuild2.OSTreeCommitStageReferences{"name:" + p.treePipeline.Name()}
|
|
|
|
pipeline.AddStage(osbuild2.NewOSTreeCommitStage(
|
|
&osbuild2.OSTreeCommitStageOptions{
|
|
Ref: p.Ref(),
|
|
OSVersion: p.OSVersion,
|
|
Parent: p.treePipeline.OSTreeParent(),
|
|
},
|
|
&osbuild2.OSTreeCommitStageInputs{Tree: commitStageInput}),
|
|
)
|
|
|
|
return pipeline
|
|
}
|