diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 67c9922ae..51dcad5f4 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -85,6 +85,7 @@ jobs: - name: Run unit tests run: | sudo internal/upload/koji/run-koji-container.sh start + koji --server=http://localhost/kojihub --user kojiadmin --password kojipass --authtype=password make-task image env KRB5_CONFIG=../../../.github/krb5.conf go test -v -race -covermode atomic -coverprofile=coverage.txt -tags koji_test ./internal/upload/koji sudo internal/upload/koji/run-koji-container.sh stop diff --git a/cmd/osbuild-koji/main.go b/cmd/osbuild-koji/main.go index 1fe8d44f6..0fb0bd1a7 100644 --- a/cmd/osbuild-koji/main.go +++ b/cmd/osbuild-koji/main.go @@ -14,7 +14,9 @@ import ( ) func main() { + var taskID int var server, user, password, name, version, release, arch, filename string + flag.IntVar(&taskID, "task-id", 0, "id of owning task") flag.StringVar(&server, "server", "", "url to API") flag.StringVar(&user, "user", "", "koji username") flag.StringVar(&password, "password", "", "koji password") @@ -58,6 +60,7 @@ func main() { } build := koji.ImageBuild{ + TaskID: uint64(taskID), Name: name, Version: version, Release: release, @@ -101,7 +104,7 @@ func main() { }, } - initResult, err := k.CGInitBuild(nil, build.Name, build.Version, build.Release) + initResult, err := k.CGInitBuild(build.Name, build.Version, build.Release) if err != nil { println(err.Error()) return diff --git a/cmd/osbuild-worker/main.go b/cmd/osbuild-worker/main.go index 14afc455b..1c16d2d1d 100644 --- a/cmd/osbuild-worker/main.go +++ b/cmd/osbuild-worker/main.go @@ -228,6 +228,7 @@ func RunJob(job worker.Job, store string) (*osbuild.Result, error) { build := koji.ImageBuild{ BuildID: options.BuildID, + TaskID: options.TaskID, Name: options.Name, Version: options.Version, Release: options.Release, diff --git a/internal/kojiapi/server.go b/internal/kojiapi/server.go index 5d97d2ef6..f3205be3a 100644 --- a/internal/kojiapi/server.go +++ b/internal/kojiapi/server.go @@ -150,7 +150,7 @@ func (server *Server) PostCompose(w http.ResponseWriter, r *http.Request) { } }() - buildInfo, err := k.CGInitBuild(&request.Koji.TaskId, request.Name, request.Version, request.Release) + buildInfo, err := k.CGInitBuild(request.Name, request.Version, request.Release) if err != nil { http.Error(w, fmt.Sprintf("Could not initialize build with koji: %v", err), http.StatusBadRequest) return @@ -159,6 +159,7 @@ func (server *Server) PostCompose(w http.ResponseWriter, r *http.Request) { id, err := server.workers.Enqueue(ir.manifest, []*target.Target{ target.NewKojiTarget(&target.KojiTargetOptions{ BuildID: uint64(buildInfo.BuildID), + TaskID: uint64(request.Koji.TaskId), Token: buildInfo.Token, Name: request.Name, Version: request.Version, diff --git a/internal/target/koji_target.go b/internal/target/koji_target.go index 535429124..6b059e3ab 100644 --- a/internal/target/koji_target.go +++ b/internal/target/koji_target.go @@ -2,6 +2,7 @@ package target type KojiTargetOptions struct { BuildID uint64 `json:"build_id"` + TaskID uint64 `json:"task_id"` Token string `json:"token"` Name string `json:"name"` Version string `json:"version"` diff --git a/internal/upload/koji/koji.go b/internal/upload/koji/koji.go index 8dfc07a2a..b114695d4 100644 --- a/internal/upload/koji/koji.go +++ b/internal/upload/koji/koji.go @@ -29,6 +29,7 @@ type ImageBuildExtra struct { type ImageBuild struct { BuildID uint64 `json:"build_id"` + TaskID uint64 `json:"task_id"` Name string `json:"name"` Version string `json:"version"` Release string `json:"release"` @@ -216,15 +217,13 @@ func (k *Koji) Logout() error { } // CGInitBuild reserves a build ID and initializes a build -func (k *Koji) CGInitBuild(taskID *int, name, version, release string) (*CGInitBuildResult, error) { +func (k *Koji) CGInitBuild(name, version, release string) (*CGInitBuildResult, error) { var buildInfo struct { - TaskID *int `xmlrpc:"task_id,omitempty"` Name string `xmlrpc:"name"` Version string `xmlrpc:"version"` Release string `xmlrpc:"release"` } - buildInfo.TaskID = taskID buildInfo.Name = name buildInfo.Version = version buildInfo.Release = release diff --git a/internal/upload/koji/koji_test.go b/internal/upload/koji/koji_test.go index de5422eaf..b59fedf42 100644 --- a/internal/upload/koji/koji_test.go +++ b/internal/upload/koji/koji_test.go @@ -56,7 +56,7 @@ func TestKojiRefund(t *testing.T) { } }() - initResult, err := k.CGInitBuild(nil, "name", "verison", "release") + initResult, err := k.CGInitBuild("name", "verison", "release") require.NoError(t, err) err = k.CGCancelBuild(initResult.BuildID, initResult.Token) @@ -65,7 +65,7 @@ func TestKojiRefund(t *testing.T) { err = k.CGCancelBuild(initResult.BuildID, initResult.Token) require.Error(t, err) - initResult, err = k.CGInitBuild(nil, "name", "verison", "release") + initResult, err = k.CGInitBuild("name", "verison", "release") require.NoError(t, err) err = k.CGFailBuild(initResult.BuildID, initResult.Token) @@ -135,6 +135,7 @@ func TestKojiImport(t *testing.T) { // Import the build build := koji.ImageBuild{ + TaskID: 1, Name: buildName, Version: "1", Release: "1", @@ -178,7 +179,7 @@ func TestKojiImport(t *testing.T) { }, } - initResult, err := k.CGInitBuild(nil, build.Name, build.Version, build.Release) + initResult, err := k.CGInitBuild(build.Name, build.Version, build.Release) require.NoError(t, err) build.BuildID = uint64(initResult.BuildID)