upload/koji: don't pass task_id to cg_init_build
Contrary to our assumption, we cannot initialize the build with the link to the task. We can only update the link once the build has completed. This seems like a bug in koji, but we keep it like this for now.
This commit is contained in:
parent
9a4c66db03
commit
e52830f530
7 changed files with 15 additions and 8 deletions
1
.github/workflows/tests.yml
vendored
1
.github/workflows/tests.yml
vendored
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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"`
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue