func (s *Server) ListJobBuilds(pipelineDB db.PipelineDB) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { jobName := r.FormValue(":job_name") builds, err := pipelineDB.GetAllJobBuilds(jobName) if err != nil { w.WriteHeader(http.StatusNotFound) return } w.WriteHeader(http.StatusOK) resources := make([]atc.Build, len(builds)) for i := 0; i < len(builds); i++ { resources[i] = present.Build(builds[i]) } json.NewEncoder(w).Encode(resources) }) }
func (server *server) GetBuild(pipelineDB db.PipelineDB) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { jobName := r.FormValue(":job") if len(jobName) == 0 { w.WriteHeader(http.StatusBadRequest) return } buildName := r.FormValue(":build") if len(buildName) == 0 { w.WriteHeader(http.StatusBadRequest) return } config, _, err := pipelineDB.GetConfig() if err != nil { server.logger.Error("failed-to-load-config", err) w.WriteHeader(http.StatusInternalServerError) return } job, found := config.Jobs.Lookup(jobName) if !found { w.WriteHeader(http.StatusNotFound) return } log := server.logger.Session("get-build", lager.Data{ "job": job.Name, "build": buildName, }) build, err := pipelineDB.GetJobBuild(jobName, buildName) if err != nil { log.Error("get-build-failed", err) w.WriteHeader(http.StatusInternalServerError) return } inputs, outputs, err := pipelineDB.GetBuildResources(build.ID) if err != nil { log.Error("failed-to-get-build-resources", err) w.WriteHeader(http.StatusInternalServerError) return } bs, err := pipelineDB.GetAllJobBuilds(jobName) if err != nil { log.Error("get-all-builds-failed", err) w.WriteHeader(http.StatusInternalServerError) return } templateData := TemplateData{ GroupStates: group.States(config.Groups, func(g atc.GroupConfig) bool { for _, groupJob := range g.Jobs { if groupJob == job.Name { return true } } return false }), Job: job, Builds: bs, Build: build, Inputs: inputs, Outputs: outputs, PipelineName: pipelineDB.GetPipelineName(), } err = server.template.Execute(w, templateData) if err != nil { log.Fatal("failed-to-task-template", err, lager.Data{ "template-data": templateData, }) } }) }