You've already forked woodpecker
							
							
				mirror of
				https://github.com/woodpecker-ci/woodpecker.git
				synced 2025-10-30 23:27:39 +02:00 
			
		
		
		
	enable granular step data for matrix
This commit is contained in:
		| @@ -258,6 +258,8 @@ func PostApproval(c *gin.Context) { | ||||
| 	// | ||||
| 	// publish topic | ||||
| 	// | ||||
| 	buildCopy := *build | ||||
| 	buildCopy.Procs = model.Tree(buildCopy.Procs) | ||||
| 	message := pubsub.Message{ | ||||
| 		Labels: map[string]string{ | ||||
| 			"repo":    repo.FullName, | ||||
| @@ -267,10 +269,11 @@ func PostApproval(c *gin.Context) { | ||||
| 	message.Data, _ = json.Marshal(model.Event{ | ||||
| 		Type:  model.Enqueued, | ||||
| 		Repo:  *repo, | ||||
| 		Build: *build, | ||||
| 		Build: buildCopy, | ||||
| 	}) | ||||
| 	// TODO remove global reference | ||||
| 	config.pubsub.Publish(c, "topic/events", message) | ||||
|  | ||||
| 	// | ||||
| 	// end publish topic | ||||
| 	// | ||||
| @@ -517,6 +520,8 @@ func PostBuild(c *gin.Context) { | ||||
| 	// | ||||
| 	// publish topic | ||||
| 	// | ||||
| 	buildCopy := *build | ||||
| 	buildCopy.Procs = model.Tree(buildCopy.Procs) | ||||
| 	message := pubsub.Message{ | ||||
| 		Labels: map[string]string{ | ||||
| 			"repo":    repo.FullName, | ||||
| @@ -526,7 +531,7 @@ func PostBuild(c *gin.Context) { | ||||
| 	message.Data, _ = json.Marshal(model.Event{ | ||||
| 		Type:  model.Enqueued, | ||||
| 		Repo:  *repo, | ||||
| 		Build: *build, | ||||
| 		Build: buildCopy, | ||||
| 	}) | ||||
| 	// TODO remove global reference | ||||
| 	config.pubsub.Publish(c, "topic/events", message) | ||||
|   | ||||
| @@ -293,7 +293,10 @@ func PostHook(c *gin.Context) { | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	store.FromContext(c).ProcCreate(build.Procs) | ||||
| 	err = store.FromContext(c).ProcCreate(build.Procs) | ||||
| 	if err != nil { | ||||
| 		logrus.Errorf("error persisting procs %s/%d: %s", repo.FullName, build.Number, err) | ||||
| 	} | ||||
|  | ||||
| 	// | ||||
| 	// publish topic | ||||
| @@ -304,10 +307,12 @@ func PostHook(c *gin.Context) { | ||||
| 			"private": strconv.FormatBool(repo.IsPrivate), | ||||
| 		}, | ||||
| 	} | ||||
| 	buildCopy := *build | ||||
| 	buildCopy.Procs = model.Tree(buildCopy.Procs) | ||||
| 	message.Data, _ = json.Marshal(model.Event{ | ||||
| 		Type:  model.Enqueued, | ||||
| 		Repo:  *repo, | ||||
| 		Build: *build, | ||||
| 		Build: buildCopy, | ||||
| 	}) | ||||
| 	// TODO remove global reference | ||||
| 	config.pubsub.Publish(c, "topic/events", message) | ||||
|   | ||||
| @@ -153,6 +153,7 @@ func (s *RPC) Update(c context.Context, id string, state rpc.State) error { | ||||
| 	} | ||||
|  | ||||
| 	build.Procs, _ = s.store.ProcList(build) | ||||
| 	build.Procs = model.Tree(build.Procs) | ||||
| 	message := pubsub.Message{ | ||||
| 		Labels: map[string]string{ | ||||
| 			"repo":    repo.FullName, | ||||
| @@ -305,29 +306,34 @@ func (s *RPC) Done(c context.Context, id string, state rpc.State) error { | ||||
| 		log.Printf("error: done: cannot ack proc_id %d: %s", procID, err) | ||||
| 	} | ||||
|  | ||||
| 	done := false | ||||
| 	status := model.StatusSuccess | ||||
| 	// TODO handle this error | ||||
| 	procs, _ := s.store.ProcList(build) | ||||
| 	for _, p := range procs { | ||||
| 		if p.Running() && p.PPID == proc.PID { | ||||
| 			p.State = model.StatusSkipped | ||||
| 			if p.Started != 0 { | ||||
| 				p.State = model.StatusKilled | ||||
| 				p.State = model.StatusSuccess // for deamons that are killed | ||||
| 				p.Stopped = proc.Stopped | ||||
| 			} | ||||
| 			if err := s.store.ProcUpdate(p); err != nil { | ||||
| 				log.Printf("error: done: cannot update proc_id %d child state: %s", p.ID, err) | ||||
| 			} | ||||
| 		} | ||||
| 		if !p.Running() && p.PPID == 0 { | ||||
| 			done = true | ||||
| 	} | ||||
|  | ||||
| 	running := false | ||||
| 	status := model.StatusSuccess | ||||
| 	for _, p := range procs { | ||||
| 		if p.PPID == 0 { | ||||
| 			if p.Running() { | ||||
| 				running = true | ||||
| 			} | ||||
| 			if p.Failing() { | ||||
| 				status = model.StatusFailure | ||||
| 				status = p.State | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	if done { | ||||
| 	if !running { | ||||
| 		build.Status = status | ||||
| 		build.Finished = proc.Stopped | ||||
| 		if err := s.store.UpdateBuild(build); err != nil { | ||||
| @@ -339,7 +345,7 @@ func (s *RPC) Done(c context.Context, id string, state rpc.State) error { | ||||
| 		log.Printf("error: done: cannot close build_id %d logger: %s", proc.ID, err) | ||||
| 	} | ||||
|  | ||||
| 	build.Procs = procs | ||||
| 	build.Procs = model.Tree(procs) | ||||
| 	message := pubsub.Message{ | ||||
| 		Labels: map[string]string{ | ||||
| 			"repo":    repo.FullName, | ||||
|   | ||||
| @@ -16,7 +16,6 @@ CREATE TABLE procs ( | ||||
| ,proc_platform   VARCHAR(250) | ||||
| ,proc_environ    VARCHAR(2000) | ||||
| ,UNIQUE(proc_build_id, proc_pid) | ||||
| ,UNIQUE(proc_build_id, proc_name) | ||||
| ); | ||||
|  | ||||
| CREATE INDEX proc_build_ix ON procs (proc_build_id); | ||||
|   | ||||
| @@ -17,7 +17,6 @@ CREATE TABLE procs ( | ||||
| ,proc_environ    VARCHAR(2000) | ||||
|  | ||||
| ,UNIQUE(proc_build_id, proc_pid) | ||||
| ,UNIQUE(proc_build_id, proc_name) | ||||
| ); | ||||
|  | ||||
| CREATE INDEX proc_build_ix ON procs (proc_build_id); | ||||
|   | ||||
| @@ -16,7 +16,6 @@ CREATE TABLE procs ( | ||||
| ,proc_platform   TEXT | ||||
| ,proc_environ    TEXT | ||||
| ,UNIQUE(proc_build_id, proc_pid) | ||||
| ,UNIQUE(proc_build_id, proc_name) | ||||
| ); | ||||
|  | ||||
| CREATE INDEX proc_build_ix ON procs (proc_build_id); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user