Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package digger-cli for openSUSE:Factory checked in at 2025-03-06 14:49:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/digger-cli (Old) and /work/SRC/openSUSE:Factory/.digger-cli.new.19136 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "digger-cli" Thu Mar 6 14:49:14 2025 rev:8 rq:1250550 version:0.6.87 Changes: -------- --- /work/SRC/openSUSE:Factory/digger-cli/digger-cli.changes 2025-03-05 13:47:56.327195920 +0100 +++ /work/SRC/openSUSE:Factory/.digger-cli.new.19136/digger-cli.changes 2025-03-06 14:50:16.609334906 +0100 @@ -1,0 +2,7 @@ +Thu Mar 06 06:19:45 UTC 2025 - [email protected] + +- Update to version 0.6.87: + * ensure link to workflow url always present (#1892) + * Update fly-pro.toml + +------------------------------------------------------------------- Old: ---- digger-cli-0.6.86.obscpio New: ---- digger-cli-0.6.87.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ digger-cli.spec ++++++ --- /var/tmp/diff_new_pack.s6DlS1/_old 2025-03-06 14:50:17.353366108 +0100 +++ /var/tmp/diff_new_pack.s6DlS1/_new 2025-03-06 14:50:17.357366276 +0100 @@ -19,7 +19,7 @@ %define executable_name digger Name: digger-cli -Version: 0.6.86 +Version: 0.6.87 Release: 0 Summary: CLI for the digger open source IaC orchestration tool License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.s6DlS1/_old 2025-03-06 14:50:17.393367786 +0100 +++ /var/tmp/diff_new_pack.s6DlS1/_new 2025-03-06 14:50:17.393367786 +0100 @@ -6,7 +6,7 @@ <param name="exclude">go.mod</param> <param name="exclude">go.work</param> <param name="exclude">go.work.sum</param> - <param name="revision">v0.6.86</param> + <param name="revision">v0.6.87</param> <param name="match-tag">v*</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.s6DlS1/_old 2025-03-06 14:50:17.413368624 +0100 +++ /var/tmp/diff_new_pack.s6DlS1/_new 2025-03-06 14:50:17.417368792 +0100 @@ -1,7 +1,7 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/diggerhq/digger</param> - <param name="changesrevision">3f0a92b320b0abfc89ed9a4bf5d04cc74feef26e</param></service><service name="tar_scm"> + <param name="changesrevision">84f1c0ed9c6d638d6df7ae11992bc2fb52ad73a6</param></service><service name="tar_scm"> <param name="url">https://github.com/johanneskastl/digger</param> <param name="changesrevision">8fe377068e53e2050ff4c745388d8428d2b13bb0</param></service></servicedata> (No newline at EOF) ++++++ digger-cli-0.6.86.obscpio -> digger-cli-0.6.87.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.86/backend/ci_backends/ci_backends.go new/digger-cli-0.6.87/backend/ci_backends/ci_backends.go --- old/digger-cli-0.6.86/backend/ci_backends/ci_backends.go 2025-03-02 22:45:57.000000000 +0100 +++ new/digger-cli-0.6.87/backend/ci_backends/ci_backends.go 2025-03-05 20:22:13.000000000 +0100 @@ -7,6 +7,7 @@ type CiBackend interface { TriggerWorkflow(spec spec.Spec, runName string, vcsToken string) error + GetWorkflowUrl(spec spec.Spec) (string, error) } type JenkinsCi struct{} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.86/backend/ci_backends/github_actions.go new/digger-cli-0.6.87/backend/ci_backends/github_actions.go --- old/digger-cli-0.6.86/backend/ci_backends/github_actions.go 2025-03-02 22:45:57.000000000 +0100 +++ new/digger-cli-0.6.87/backend/ci_backends/github_actions.go 2025-03-05 20:22:13.000000000 +0100 @@ -3,6 +3,8 @@ import ( "context" "encoding/json" + "fmt" + "github.com/diggerhq/digger/backend/utils" orchestrator_scheduler "github.com/diggerhq/digger/libs/scheduler" "github.com/diggerhq/digger/libs/spec" "github.com/google/go-github/v61/github" @@ -30,3 +32,18 @@ return err } + +func (g GithubActionCi) GetWorkflowUrl(spec spec.Spec) (string, error) { + if spec.JobId == "" { + log.Printf("Cannot get workflow URL: JobId is empty") + return "", fmt.Errorf("job ID is required to fetch workflow URL") + } + + _, workflowRunUrl, err := utils.GetWorkflowIdAndUrlFromDiggerJobId(g.Client, spec.VCS.RepoOwner, spec.VCS.RepoName, spec.JobId) + if err != nil { + log.Printf("Error getting workflow ID from job: %v", err) + return "", err + } else { + return workflowRunUrl, nil + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.86/backend/controllers/projects.go new/digger-cli-0.6.87/backend/controllers/projects.go --- old/digger-cli-0.6.86/backend/controllers/projects.go 2025-03-02 22:45:57.000000000 +0100 +++ new/digger-cli-0.6.87/backend/controllers/projects.go 2025-03-05 20:22:13.000000000 +0100 @@ -364,21 +364,6 @@ return } - client, _, err := utils.GetGithubClient(d.GithubClientProvider, job.Batch.GithubInstallationId, job.Batch.RepoFullName) - if err != nil { - log.Printf("Error Creating github client: %v", err) - } else { - _, workflowRunUrl, err := utils.GetWorkflowIdAndUrlFromDiggerJobId(client, job.Batch.RepoOwner, job.Batch.RepoName, job.DiggerJobID) - if err != nil { - log.Printf("Error getting workflow ID from job: %v", err) - } else { - job.WorkflowRunUrl = &workflowRunUrl - err = models.DB.UpdateDiggerJob(job) - if err != nil { - log.Printf("Error updating digger job: %v", err) - } - } - } case "succeeded": job.Status = orchestrator_scheduler.DiggerJobSucceeded job.TerraformOutput = request.TerraformOutput @@ -463,6 +448,24 @@ c.JSON(http.StatusInternalServerError, gin.H{"error": "Error saving job"}) return } + + // attempt to update workflow run url + client, _, err := utils.GetGithubClient(d.GithubClientProvider, job.Batch.GithubInstallationId, job.Batch.RepoFullName) + if err != nil { + log.Printf("Error Creating github client: %v", err) + } else { + _, workflowRunUrl, err := utils.GetWorkflowIdAndUrlFromDiggerJobId(client, job.Batch.RepoOwner, job.Batch.RepoName, job.DiggerJobID) + if err != nil { + log.Printf("Error getting workflow ID from job: %v", err) + } else if workflowRunUrl != "#" && workflowRunUrl != "" { + job.WorkflowRunUrl = &workflowRunUrl + err = models.DB.UpdateDiggerJob(job) + if err != nil { + log.Printf("Error updating digger job: %v", err) + } + } + } + job.StatusUpdatedAt = request.Timestamp err = models.DB.GormDB.Save(&job).Error if err != nil { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.86/backend/services/scheduler.go new/digger-cli-0.6.87/backend/services/scheduler.go --- old/digger-cli-0.6.86/backend/services/scheduler.go 2025-03-02 22:45:57.000000000 +0100 +++ new/digger-cli-0.6.87/backend/services/scheduler.go 2025-03-05 20:22:13.000000000 +0100 @@ -7,9 +7,12 @@ "github.com/diggerhq/digger/backend/models" "github.com/diggerhq/digger/backend/utils" orchestrator_scheduler "github.com/diggerhq/digger/libs/scheduler" + "github.com/diggerhq/digger/libs/spec" "github.com/google/go-github/v61/github" "github.com/google/uuid" "log" + "runtime/debug" + "time" ) func DiggerJobCompleted(client *github.Client, batchId *uuid.UUID, parentJob *models.DiggerJob, repoFullName string, repoOwner string, repoName string, workflowFileName string, gh utils.GithubClientProvider) error { @@ -131,5 +134,50 @@ return err } + go UpdateWorkflowUrlForJob(job, ciBackend, spec) + return nil } + +// This is meant to run asyncronously since it queries for job url +func UpdateWorkflowUrlForJob(job *models.DiggerJob, ciBackend ci_backends.CiBackend, spec *spec.Spec) { + defer func() { + if r := recover(); r != nil { + log.Printf("Recovered from panic in UpdateWorkflowUrlForJob handler: %v", r) + log.Printf("\n=== PANIC RECOVERED ===\n") + log.Printf("Error: %v\n", r) + log.Printf("Stack Trace:\n%s", string(debug.Stack())) + log.Printf("=== END PANIC ===\n") + } + }() + + batch := job.Batch + // for now we only perform this update for github + if batch.VCS != models.DiggerVCSGithub { + return + } + for n := 0; n < 30; n++ { + time.Sleep(1 * time.Second) + workflowUrl, err := ciBackend.GetWorkflowUrl(*spec) + if err != nil { + log.Printf("DiggerJobId %v: error while attempting to fetch workflow url: %v", job.DiggerJobID, err) + } else { + if workflowUrl == "#" || workflowUrl == "" { + log.Printf("DiggerJobId %v: got blank workflow url as response, ignoring", job.DiggerJobID) + } else { + job.WorkflowRunUrl = &workflowUrl + err = models.DB.UpdateDiggerJob(job) + if err != nil { + log.Printf("DiggerJobId %v: Error updating digger job: %v", job.DiggerJobID, err) + continue + } else { + log.Printf("DiggerJobId %v: successfully updated workflow run url to: %v for DiggerJobID: %v", job.DiggerJobID, workflowUrl, job.DiggerJobID) + } + + return + } + } + } + + // if we get to here its highly likely that the workflow job entirely failed to start for some reason +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.86/backend/tasks/runs_test.go new/digger-cli-0.6.87/backend/tasks/runs_test.go --- old/digger-cli-0.6.86/backend/tasks/runs_test.go 2025-03-02 22:45:57.000000000 +0100 +++ new/digger-cli-0.6.87/backend/tasks/runs_test.go 2025-03-05 20:22:13.000000000 +0100 @@ -28,6 +28,10 @@ return nil } +func (m MockCiBackend) GetWorkflowUrl(spec spec.Spec) (string, error) { + return "", nil +} + func setupSuite(tb testing.TB) (func(tb testing.TB), *models.Database) { log.Println("setup suite") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.86/backend/utils/github.go new/digger-cli-0.6.87/backend/utils/github.go --- old/digger-cli-0.6.86/backend/utils/github.go 2025-03-02 22:45:57.000000000 +0100 +++ new/digger-cli-0.6.87/backend/utils/github.go 2025-03-05 20:22:13.000000000 +0100 @@ -231,7 +231,6 @@ } for _, workflowRun := range runs.WorkflowRuns { - println(*workflowRun.ID) workflowjobs, _, err := client.Actions.ListWorkflowJobs(context.Background(), repoOwner, repoName, *workflowRun.ID, nil) if err != nil { return 0, "#", fmt.Errorf("error listing workflow jobs for run %v %v", workflowRun.ID, err) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.86/ee/backend/ci_backends/bitbucket_pipeline.go new/digger-cli-0.6.87/ee/backend/ci_backends/bitbucket_pipeline.go --- old/digger-cli-0.6.86/ee/backend/ci_backends/bitbucket_pipeline.go 2025-03-02 22:45:57.000000000 +0100 +++ new/digger-cli-0.6.87/ee/backend/ci_backends/bitbucket_pipeline.go 2025-03-05 20:22:13.000000000 +0100 @@ -37,3 +37,10 @@ _, err = bbp.Client.TriggerPipeline(bbp.Branch, variables) return err } + +// GetWorkflowUrl fetch workflow url after triggering a job +// since some CI don't return url automatically we split it out to become a +// followup method +func (bbp BitbucketPipelineCI) GetWorkflowUrl(spec spec.Spec) (string, error) { + return "", nil +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.86/ee/backend/ci_backends/buildkite.go new/digger-cli-0.6.87/ee/backend/ci_backends/buildkite.go --- old/digger-cli-0.6.86/ee/backend/ci_backends/buildkite.go 2025-03-02 22:45:57.000000000 +0100 +++ new/digger-cli-0.6.87/ee/backend/ci_backends/buildkite.go 2025-03-05 20:22:13.000000000 +0100 @@ -31,3 +31,7 @@ return err } + +func (b BuildkiteCi) GetWorkflowUrl(spec spec.Spec) (string, error) { + return "", nil +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.86/ee/backend/ci_backends/gitlab_pipeline.go new/digger-cli-0.6.87/ee/backend/ci_backends/gitlab_pipeline.go --- old/digger-cli-0.6.86/ee/backend/ci_backends/gitlab_pipeline.go 2025-03-02 22:45:57.000000000 +0100 +++ new/digger-cli-0.6.87/ee/backend/ci_backends/gitlab_pipeline.go 2025-03-05 20:22:13.000000000 +0100 @@ -59,3 +59,7 @@ return err } + +func (g GitlabPipelineCI) GetWorkflowUrl(spec spec.Spec) (string, error) { + return "", nil +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.86/ee/backend/controllers/bitbucket.go new/digger-cli-0.6.87/ee/backend/controllers/bitbucket.go --- old/digger-cli-0.6.86/ee/backend/controllers/bitbucket.go 2025-03-02 22:45:57.000000000 +0100 +++ new/digger-cli-0.6.87/ee/backend/controllers/bitbucket.go 2025-03-05 20:22:13.000000000 +0100 @@ -24,6 +24,7 @@ "log" "net/http" "os" + "runtime/debug" "strconv" "strings" ) @@ -139,6 +140,16 @@ } func handleIssueCommentEventBB(bitbucketProvider utils.BitbucketProvider, payload *BitbucketCommentCreatedEvent, ciBackendProvider ci_backends.CiBackendProvider, organisationId uint, vcsConnectionId *uint, bbAccessToken string) error { + defer func() { + if r := recover(); r != nil { + log.Printf("Recovered from panic in handleIssueCommentEventBB handler: %v", r) + log.Printf("\n=== PANIC RECOVERED ===\n") + log.Printf("Error: %v\n", r) + log.Printf("Stack Trace:\n%s", string(debug.Stack())) + log.Printf("=== END PANIC ===\n") + } + }() + repoFullName := payload.Repository.FullName repoOwner := payload.Repository.Owner.Username repoName := payload.Repository.Name diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.86/fly-pro.toml new/digger-cli-0.6.87/fly-pro.toml --- old/digger-cli-0.6.86/fly-pro.toml 2025-03-02 22:45:57.000000000 +0100 +++ new/digger-cli-0.6.87/fly-pro.toml 2025-03-05 20:22:13.000000000 +0100 @@ -12,7 +12,7 @@ JWT_AUTH = 'true' [build] - dockerfile = 'Dockerfile_backend' + dockerfile = 'Dockerfile_backend_ee' [[services]] protocol = 'tcp' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.86/next/ci_backends/ci_backends.go new/digger-cli-0.6.87/next/ci_backends/ci_backends.go --- old/digger-cli-0.6.86/next/ci_backends/ci_backends.go 2025-03-02 22:45:57.000000000 +0100 +++ new/digger-cli-0.6.87/next/ci_backends/ci_backends.go 2025-03-05 20:22:13.000000000 +0100 @@ -7,6 +7,7 @@ type CiBackend interface { TriggerWorkflow(spec spec.Spec, runName string, vcsToken string) error + GetWorkflowUrl(spec spec.Spec) (string, error) } type JenkinsCi struct{} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.86/next/ci_backends/github_actions.go new/digger-cli-0.6.87/next/ci_backends/github_actions.go --- old/digger-cli-0.6.86/next/ci_backends/github_actions.go 2025-03-02 22:45:57.000000000 +0100 +++ new/digger-cli-0.6.87/next/ci_backends/github_actions.go 2025-03-05 20:22:13.000000000 +0100 @@ -30,3 +30,7 @@ return err } + +func (g GithubActionCi) GetWorkflowUrl(spec spec.Spec) (string, error) { + return "", nil +} ++++++ digger-cli.obsinfo ++++++ --- /var/tmp/diff_new_pack.s6DlS1/_old 2025-03-06 14:50:18.301405865 +0100 +++ /var/tmp/diff_new_pack.s6DlS1/_new 2025-03-06 14:50:18.305406033 +0100 @@ -1,5 +1,5 @@ name: digger-cli -version: 0.6.86 -mtime: 1740951957 -commit: 3f0a92b320b0abfc89ed9a4bf5d04cc74feef26e +version: 0.6.87 +mtime: 1741202533 +commit: 84f1c0ed9c6d638d6df7ae11992bc2fb52ad73a6 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/digger-cli/vendor.tar.gz /work/SRC/openSUSE:Factory/.digger-cli.new.19136/vendor.tar.gz differ: char 5, line 1
