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 2026-05-06 19:18:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/digger-cli (Old) and /work/SRC/openSUSE:Factory/.digger-cli.new.30200 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "digger-cli" Wed May 6 19:18:33 2026 rev:50 rq:1351101 version:0.6.145 Changes: -------- --- /work/SRC/openSUSE:Factory/digger-cli/digger-cli.changes 2026-03-27 06:38:10.921972642 +0100 +++ /work/SRC/openSUSE:Factory/.digger-cli.new.30200/digger-cli.changes 2026-05-06 19:20:49.300313420 +0200 @@ -1,0 +2,18 @@ +Wed May 06 05:34:20 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 0.6.145: + * Feat/exclude drift (#2650) + * conditionally enable summary (#2619) + * Fix default image repos (backend ee -> ce), add podAnnotations + (#2598) + * fix: add target url to link to workflow run (#2606) + * docs: secuirty page (#2605) + * docs: recommend docker-compose guide (#2604) + * fix: upgrade azure/login to v2.2.0 to prevent cleanup warnings + (#2584) + * Update Slack invitation links in CONTRIBUTING.md (#2646) + * ui github setup link fix (#2642) + * add timeout to generate service client so it does not fail + (#2622) + +------------------------------------------------------------------- Old: ---- digger-cli-0.6.144.obscpio New: ---- digger-cli-0.6.145.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ digger-cli.spec ++++++ --- /var/tmp/diff_new_pack.ZsThQJ/_old 2026-05-06 19:20:50.476361855 +0200 +++ /var/tmp/diff_new_pack.ZsThQJ/_new 2026-05-06 19:20:50.476361855 +0200 @@ -19,7 +19,7 @@ %define executable_name digger Name: digger-cli -Version: 0.6.144 +Version: 0.6.145 Release: 0 Summary: CLI for the digger open source IaC orchestration tool License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.ZsThQJ/_old 2026-05-06 19:20:50.532364162 +0200 +++ /var/tmp/diff_new_pack.ZsThQJ/_new 2026-05-06 19:20:50.536364327 +0200 @@ -6,8 +6,8 @@ <param name="exclude">go.mod</param> <param name="exclude">go.work</param> <param name="exclude">go.work.sum</param> - <param name="revision">v0.6.144</param> - <param name="match-tag">v0.6.144</param> + <param name="revision">v0.6.145</param> + <param name="match-tag">v0.6.145</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.ZsThQJ/_old 2026-05-06 19:20:50.564365480 +0200 +++ /var/tmp/diff_new_pack.ZsThQJ/_new 2026-05-06 19:20:50.572365809 +0200 @@ -1,7 +1,7 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/diggerhq/digger</param> - <param name="changesrevision">fd5d38526e54518714a137b9e0dbc5dad9bee2dc</param></service><service name="tar_scm"> + <param name="changesrevision">5adb2843ebfde0c53d2d8c1295e4d90e4df38536</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.144.obscpio -> digger-cli-0.6.145.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/CONTRIBUTING.md new/digger-cli-0.6.145/CONTRIBUTING.md --- old/digger-cli-0.6.144/CONTRIBUTING.md 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/CONTRIBUTING.md 2026-05-05 00:47:58.000000000 +0200 @@ -4,7 +4,7 @@ **FEEDBACK:** The best way to contribute to Digger today is by using it within your organisation and providing feedback. If you are considering -using Digger please [drop us a line](https://join.slack.com/t/diggertalk/shared_invite/zt-1q6npg7ib-9dwRbJp8sQpSr2fvWzt9aA), +using Digger please [drop us a line](https://diggertalk.slack.com/join/shared_invite/zt-2p8l9npwx-VABojXOtSCeM7EWkgKB1Mw#/shared-invite/email), and we would be happy to set you up. ## Table of Contents @@ -68,7 +68,7 @@ ## How to contribute **If you are considering using digger within your organisation -please [reach out to us](https://join.slack.com/t/diggertalk/shared_invite/zt-1q6npg7ib-9dwRbJp8sQpSr2fvWzt9aA) +please [reach out to us](https://diggertalk.slack.com/join/shared_invite/zt-2p8l9npwx-VABojXOtSCeM7EWkgKB1Mw#/shared-invite/email) we would be happy to help onboard you to use it**. There are many ways to contribute to Digger, including: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/action.yml new/digger-cli-0.6.145/action.yml --- old/digger-cli-0.6.144/action.yml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/action.yml 2026-05-05 00:47:58.000000000 +0200 @@ -362,11 +362,15 @@ if: ${{ inputs.setup-aws == 'true' && inputs.aws-role-to-assume != '' }} - name: Configure OIDC Azure credentials - uses: azure/login@6c251865b4e6290e7b78be643ea2d005bc51f69a # v2.1.1 + uses: azure/login@a65d910e8af852a8061c627c456678983e180302 # v2.2.0 with: client-id: ${{ inputs.azure-client-id }} tenant-id: ${{ inputs.azure-tenant-id }} subscription-id: ${{ inputs.azure-subscription-id }} + env: + # Disable post-cleanup when Azure is not being used (v2.2.0+ feature) + # See: https://github.com/Azure/login/pull/484 + AZURE_LOGIN_POST_CLEANUP: ${{ inputs.setup-azure == 'true' && 'true' || 'false' }} if: ${{ inputs.setup-azure == 'true' && inputs.azure-client-id != '' }} # if terraform-cache-dir is set then we set it to that otherwise set it to '${{github.workspace}}/cache' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/backend/controllers/projects.go new/digger-cli-0.6.145/backend/controllers/projects.go --- old/digger-cli-0.6.144/backend/controllers/projects.go 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/backend/controllers/projects.go 2026-05-05 00:47:58.000000000 +0200 @@ -1031,6 +1031,13 @@ // if so, perform merge of PR (if configured to do so) batch := job.Batch + aiSummaryEnabled := false + if diggerConfigYml, err := digger_config.LoadDiggerConfigYamlFromString(batch.DiggerConfig); err != nil { + slog.Warn("Could not load digger config to check AI summary setting, defaulting to disabled", "batchId", batch.ID, "error", err) + } else { + aiSummaryEnabled = diggerConfigYml.Reporting != nil && diggerConfigYml.Reporting.AiSummary + } + slog.Info("Updating batch status after job update", "batchId", batch.ID, "jobId", jobId, @@ -1067,7 +1074,7 @@ // performing this in a goroutine to avoid huge latencies (added by ai summary gen) go func() { - err = UpdateCheckRunForBatch(d.GithubClientProvider, refreshedBatch) + err = UpdateCheckRunForBatch(d.GithubClientProvider, refreshedBatch, aiSummaryEnabled) if err != nil { slog.Warn("DIAGNOSTIC #7: Failed to update GitHub Check Run for batch (non-fatal)", "batchId", batch.ID, @@ -1100,7 +1107,7 @@ // performing this in a goroutine to avoid huge latencies (added by ai summary gen) go func() { - err = UpdateCheckRunForJob(d.GithubClientProvider, refreshedJob) + err = UpdateCheckRunForJob(d.GithubClientProvider, refreshedJob, aiSummaryEnabled) if err != nil { slog.Warn("DIAGNOSTIC #9: Failed to update GitHub Check Run for job (non-fatal)", "jobId", jobId, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/backend/controllers/projects_helpers.go new/digger-cli-0.6.145/backend/controllers/projects_helpers.go --- old/digger-cli-0.6.144/backend/controllers/projects_helpers.go 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/backend/controllers/projects_helpers.go 2026-05-05 00:47:58.000000000 +0200 @@ -128,8 +128,8 @@ batch := job.Batch summaryEndpoint := os.Getenv("DIGGER_AI_SUMMARY_ENDPOINT") if summaryEndpoint == "" { - slog.Error("AI summary endpoint not configured", "batch", batch.ID, "jobId", job.ID, "DiggerJobId", job.DiggerJobID) - return "", fmt.Errorf("could not generate AI summary, ai summary endpoint missing") + slog.Info("AI summary endpoint not configured, skipping", "batch", batch.ID, "jobId", job.ID, "DiggerJobId", job.DiggerJobID) + return "", nil } apiToken := os.Getenv("DIGGER_AI_SUMMARY_API_TOKEN") @@ -161,7 +161,7 @@ return summary, nil } -func UpdateCheckRunForBatch(gh utils.GithubClientProvider, batch *models.DiggerBatch) error { +func UpdateCheckRunForBatch(gh utils.GithubClientProvider, batch *models.DiggerBatch, aiSummaryEnabled bool) error { slog.Info("Updating PR status for batch", "batchId", batch.ID, "prNumber", batch.PrNumber, @@ -261,7 +261,7 @@ } var summary = "" - if batch.Status == orchestrator_scheduler.BatchJobSucceeded || batch.Status == orchestrator_scheduler.BatchJobFailed { + if aiSummaryEnabled && (batch.Status == orchestrator_scheduler.BatchJobSucceeded || batch.Status == orchestrator_scheduler.BatchJobFailed) { summary, err = GenerateChecksSummaryForBatch(batch) if err != nil { slog.Warn("Error generating checks summary for batch", "batchId", batch.ID, "error", err) @@ -304,8 +304,8 @@ allJobsHaveZeroChanges := true for _, job := range jobs { if job.DiggerJobSummary.ResourcesCreated > 0 || - job.DiggerJobSummary.ResourcesUpdated > 0 || - job.DiggerJobSummary.ResourcesDeleted > 0 { + job.DiggerJobSummary.ResourcesUpdated > 0 || + job.DiggerJobSummary.ResourcesDeleted > 0 { allJobsHaveZeroChanges = false break } @@ -401,7 +401,7 @@ } // more modern check runs on github have their own page -func UpdateCheckRunForJob(gh utils.GithubClientProvider, job *models.DiggerJob) error { +func UpdateCheckRunForJob(gh utils.GithubClientProvider, job *models.DiggerJob, aiSummaryEnabled bool) error { batch := job.Batch slog.Info("Updating PR Check run for job", "jobId", job.DiggerJobID, @@ -524,10 +524,10 @@ "```\n" var summary = "" - if job.Status == orchestrator_scheduler.DiggerJobSucceeded || job.Status == orchestrator_scheduler.DiggerJobFailed { + if aiSummaryEnabled && (job.Status == orchestrator_scheduler.DiggerJobSucceeded || job.Status == orchestrator_scheduler.DiggerJobFailed) { summary, err = GenerateChecksSummaryForJob(job) if err != nil { - slog.Warn("Error generating checks summary for batch", "batchId", batch.ID, "error", err) + slog.Warn("Error generating checks summary for job", "jobId", job.DiggerJobID, "batchId", batch.ID, "error", err) } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/backend/go.sum new/digger-cli-0.6.145/backend/go.sum --- old/digger-cli-0.6.144/backend/go.sum 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/backend/go.sum 2026-05-05 00:47:58.000000000 +0200 @@ -1,7 +1,5 @@ ariga.io/atlas-go-sdk v0.7.2 h1:pvS8tKVeRQuqdETBqj5qAQtVbQE88Gya6bOfY8YF3vU= ariga.io/atlas-go-sdk v0.7.2/go.mod h1:cFq7bnvHgKTWHCsU46mtkGxdl41rx2o7SjaLoh6cO8M= -ariga.io/atlas-provider-gorm v0.5.0 h1:DqYNWroKUiXmx2N6nf/I9lIWu6fpgB6OQx/JoelCTes= -ariga.io/atlas-provider-gorm v0.5.0/go.mod h1:8m6+N6+IgWMzPcR63c9sNOBoxfNk6yV6txBZBrgLg1o= ariga.io/atlas-provider-gorm v0.5.4 h1:64xboUDrP+JHdZOy4juPydHT5UP1kY152b5Gh/xNzmM= ariga.io/atlas-provider-gorm v0.5.4/go.mod h1:cXt4kxq8KIldPXHoWXC0HvSr8dVI0dIykZt3MZ4AmqE= c2sp.org/CCTV/age v0.0.0-20240306222714-3ec4d716e805 h1:u2qwJeEvnypw+OCPUHmoZE3IqwfuN5kgDfo5MLzpNM0= @@ -759,10 +757,6 @@ github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= -github.com/alecthomas/kong v0.7.1 h1:azoTh0IOfwlAX3qN9sHWTxACE2oV8Bg2gAwBsMwDQY4= -github.com/alecthomas/kong v0.7.1/go.mod h1:n1iCIO2xS46oE8ZfYCNDqdR0b0wZNrXAIAqro/2132U= -github.com/alecthomas/kong v1.9.0 h1:Wgg0ll5Ys7xDnpgYBuBn/wPeLGAuK0NvYmEcisJgrIs= -github.com/alecthomas/kong v1.9.0/go.mod h1:p2vqieVMeTAnaC83txKtXe8FLke2X07aruPWXyMPQrU= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -2847,7 +2841,6 @@ gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= gorm.io/gorm v1.23.10/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA= gorm.io/gorm v1.24.0/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA= -gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs= gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= gorm.io/gorm v1.30.1 h1:lSHg33jJTBxs2mgJRfRZeLDG+WZaHYCk3Wtfl6Ngzo4= gorm.io/gorm v1.30.1/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/backend/utils/ai.go new/digger-cli-0.6.145/backend/utils/ai.go --- old/digger-cli-0.6.144/backend/utils/ai.go 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/backend/utils/ai.go 2026-05-05 00:47:58.000000000 +0200 @@ -7,6 +7,7 @@ "io" "log/slog" "net/http" + "time" ) func GenerateTerraformCode(appCode string, generationEndpoint string, apiToken string) (string, error) { @@ -38,7 +39,7 @@ req.Header.Set("Authorization", "Bearer "+apiToken) // Make the request - client := &http.Client{} + client := &http.Client{Timeout: 30 * time.Second} resp, err := client.Do(req) if err != nil { slog.Error("Error making request to code generation API", "endpoint", generationEndpoint, "error", err) @@ -118,7 +119,7 @@ req.Header.Set("Authorization", "Bearer "+apiToken) // Make the request - client := &http.Client{} + client := &http.Client{Timeout: 30 * time.Second} resp, err := client.Do(req) if err != nil { slog.Error("Error making request to summary API", "endpoint", summaryEndpoint, "error", err) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/cli/pkg/drift/github_issue.go new/digger-cli-0.6.145/cli/pkg/drift/github_issue.go --- old/digger-cli-0.6.144/cli/pkg/drift/github_issue.go 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/cli/pkg/drift/github_issue.go 2026-05-05 00:47:58.000000000 +0200 @@ -16,6 +16,11 @@ log.Printf("Info: Sending drift notification regarding project: %v", projectName) title := fmt.Sprintf("Drift detected in project: %v", projectName) message := fmt.Sprintf(":bangbang: Drift detected in digger project %v details below: \n\n```\n%v\n```", projectName, plan) + const maxLen = 65536 + const truncMsg = "\n\n> ⚠️ Output truncated: plan exceeds GitHub's 65536 character limit. See job logs for full output." + if len(message) > maxLen { + message = message[:maxLen-len(truncMsg)] + truncMsg + } existingIssues, err := (*ghi.GithubService).ListIssues() if err != nil { log.Printf("failed to retrieve issues: %v", err) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/cli/pkg/github/github.go new/digger-cli-0.6.145/cli/pkg/github/github.go --- old/digger-cli-0.6.144/cli/pkg/github/github.go 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/cli/pkg/github/github.go 2026-05-05 00:47:58.000000000 +0200 @@ -215,6 +215,12 @@ continue } } + if len(diggerConfig.DriftIncludePatterns) > 0 || len(diggerConfig.DriftExcludePatterns) > 0 { + if !digger_config.MatchIncludeExcludePatternsToFile(projectConfig.Dir, diggerConfig.DriftIncludePatterns, diggerConfig.DriftExcludePatterns) { + slog.Info("Project excluded by drift patterns, skipping", "project", projectConfig.Name, "dir", projectConfig.Dir) + continue + } + } workflow := diggerConfig.Workflows[projectConfig.Workflow] stateEnvVars, commandEnvVars := digger_config.CollectTerraformEnvConfig(workflow.EnvVars, true) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/docs/ce/drift/backendless-scoping-projects.mdx new/digger-cli-0.6.145/docs/ce/drift/backendless-scoping-projects.mdx --- old/digger-cli-0.6.144/docs/ce/drift/backendless-scoping-projects.mdx 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/docs/ce/drift/backendless-scoping-projects.mdx 2026-05-05 00:47:58.000000000 +0200 @@ -1,11 +1,16 @@ --- title: "Backendless: Scope Drift to Specific Projects" -description: "Scope backendless drift checks to selected projects using dedicated config files" +description: "Scope backendless drift checks to selected projects using dedicated config file or patterns" --- -In Backendless mode, scope drift by pointing your scheduled workflow at a dedicated config file. -## Approach + + +In Backendless mode, digger provides two means scoping drift detection. + + + +## Using dedicated config - Create a dedicated `digger.yml` that lists only the projects or blocks you want scanned. - Point your drift workflow to that file using the `digger-filename` input. @@ -57,7 +62,31 @@ digger-filename: digger-drift-dev.yml ``` +## Using drift patterns + +Add `drift_include_patterns` and `drift_exclude_patterns` under `generate_projects` in your main `digger.yml`: + +```yaml +generate_projects: + blocks: + - block_name: infra + root_dir: "infra/" + workflow: default + include: "**" + drift_include_patterns: + - "infra/prod/**" + - "infra/staging/**" + drift_exclude_patterns: + - "infra/_global/**" +``` + +Only projects whose `dir` matches an include pattern and does not match an exclude pattern will run drift detection. Exclude patterns are evaluated after include patterns. + ## Notes -- There is no per-project drift filter in the action; scoping via a dedicated config file is the recommended approach. -- You can also mark projects with `drift_detection: false` in your main config to disable drift checks for them. +- Patterns use [doublestar](https://github.com/bmatcuk/doublestar) glob matching against the project directory path. +- Both fields default to `[]`. If `drift_include_patterns` is empty, all projects are included. + +## Related + +- [Backendless Drift via GitHub Actions](/ce/drift/backendless-github-actions) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/docs/ce/local-development/overview.mdx new/digger-cli-0.6.145/docs/ce/local-development/overview.mdx --- old/digger-cli-0.6.144/docs/ce/local-development/overview.mdx 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/docs/ce/local-development/overview.mdx 2026-05-05 00:47:58.000000000 +0200 @@ -5,6 +5,10 @@ This section describes the recommended development workflow now that the full stack is available in `self-hosting/docker-compose`. +<Tip> + If you don't need to run services locally, use the [Docker Compose self-hosting guide](/self-hosting/docker-compose) instead. To run only selected services locally, skip to [Core services](#core-services) below. +</Tip> + ## Recommended baseline Start with Docker Compose for everything, then move a single service to host runtime when you need faster iteration. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/docs/ce/reference/digger.yml.mdx new/digger-cli-0.6.145/docs/ce/reference/digger.yml.mdx --- old/digger-cli-0.6.144/docs/ce/reference/digger.yml.mdx 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/docs/ce/reference/digger.yml.mdx 2026-05-05 00:47:58.000000000 +0200 @@ -227,29 +227,17 @@ Workflows and configurations to run on events. See [Workflow Configuration](#workflow-configuration). </ParamField> -<AccordionGroup> - <Accordion title="Reporting Configuration"> - Configure reporting options using the `reporting` key. - - <ParamField path="reporting.ai_summary" type="boolean" default="false"> - Enable AI-generated summaries of plan output. See [AI Summaries](/ce/features/ai-summaries). - </ParamField> - - <ParamField path="reporting.comments_enabled" type="boolean" default="true"> - Enable posting plan/apply results as PR comments. - </ParamField> - </Accordion> +<ParamField path="reporting.ai_summary" type="boolean" default="false"> + Enable AI-generated summaries of plan output. See [AI Summaries](/ce/features/ai-summaries). +</ParamField> - <Accordion title="Dependency Configuration"> - Configure dependency handling using the `dependency_configuration` key. +<ParamField path="reporting.comments_enabled" type="boolean" default="true"> + Enable posting plan/apply results as PR comments. +</ParamField> - <ParamField path="dependency_configuration.mode" type="string" default="hard"> - Dependency execution mode: - - `hard` - Execute dependency projects even if they weren't changed - - `soft` - Skip dependency projects if they weren't changed - </ParamField> - </Accordion> -</AccordionGroup> +<ParamField path="dependency_configuration.mode" type="string" default="hard"> + Dependency execution mode: `hard` executes dependency projects even if unchanged, `soft` skips them if unchanged. +</ParamField> --- @@ -389,6 +377,14 @@ Terragrunt-specific parsing configuration. See [Terragrunt Parsing](/ce/reference/terragrunt-parsing) for all options. </ParamField> +<ParamField path="drift_include_patterns" type="array" default="[]"> + Glob patterns matched against each project's `dir`. Only matching projects run drift detection. If empty, all projects are included. See [Backendless: Scope Drift to Specific Projects](/ce/drift/backendless-scoping-projects). +</ParamField> + +<ParamField path="drift_exclude_patterns" type="array" default="[]"> + Glob patterns matched against each project's `dir`. Matching projects are skipped during drift detection. Evaluated after `drift_include_patterns`. +</ParamField> + <ParamField path="aws_role_to_assume" type="object"> Default AWS role configuration for all generated projects. See [AWS Role Configuration](#aws-role-configuration). </ParamField> @@ -512,7 +508,7 @@ Configure plan and apply stages. <ParamField path="filter_regex" type="string"> - Regular expression to filter which files trigger this stage. + Regular expression to mask sensitive values from plan output and PR comments. Matches are replaced with `<REDACTED>`. See [Masking sensitive values](/ce/howto/masking-sensitive-values). </ParamField> <ParamField path="steps" type="array" default="[]"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/docs/ce/securing-digger/external-provider.mdx new/digger-cli-0.6.145/docs/ce/securing-digger/external-provider.mdx --- old/digger-cli-0.6.144/docs/ce/securing-digger/external-provider.mdx 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/docs/ce/securing-digger/external-provider.mdx 1970-01-01 01:00:00.000000000 +0100 @@ -1,16 +0,0 @@ ---- -title: "External providers code execution" ---- - -Digger executes terraform in github actions within previlliged environments. Since terraform has the ability -to execute arbitrary code based on data blocks or external providers this can lead to a user with malicious -intent to expose the environment variables within the CI environment, potentially leaking cloud secrets. - -How to avoid this? ---- -Currently we are exploring solutions to avoid this security threat. The first thing you should do is to -not use long-lived credentials to connect to your cloud account. Instead rely on OIDC for short-lived -credentials to minimise the exposure from this threat. Secondly its important to ensure that only trusted -individuals are allowed to update the terraform code. We are also working on additional solutions to secure -against this threat. For more details and to engage in the discussion please take a look at this github issue: -https://github.com/diggerhq/digger/issues/1530 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/docs/ce/security/overview.mdx new/digger-cli-0.6.145/docs/ce/security/overview.mdx --- old/digger-cli-0.6.144/docs/ce/security/overview.mdx 1970-01-01 01:00:00.000000000 +0100 +++ new/digger-cli-0.6.145/docs/ce/security/overview.mdx 2026-05-05 00:47:58.000000000 +0200 @@ -0,0 +1,127 @@ +--- +title: "Security overview" +description: "Security considerations for self-hosted OpenTaco deployments." +--- + +If you run OpenTaco on a shared server, or within a network that hosts other services, those services may be vulnerable to exploitation by proxy or other means. + +This is a non-exhaustive list of security considerations when running the self-hosted version of OpenTaco. For deployment options, see [Self-hosting with Docker Compose](/self-hosting/docker-compose). + +## Credential security + +Prefer short-lived credentials over static keys. Digger supports OIDC-based authentication for both AWS and GCP, which eliminates the need to store long-lived access keys as CI secrets. + +<Tabs> + <Tab title="AWS"> + Use `aws-role-to-assume` with `id-token: write` permissions instead of `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`. + + See [AWS: Authenticate with OIDC](/ce/cloud-providers/authenticating-with-oidc-on-aws) for setup. + </Tab> + <Tab title="GCP"> + Use Workload Identity Federation with a service account binding instead of a service account key file. + + See [GCP: Federated OIDC access](/ce/gcp/federated-oidc-access) for setup. + </Tab> +</Tabs> + +For multi-account setups, assign per-project IAM roles so each project only has access to its own infrastructure: + +```yaml +projects: + - name: prod + dir: prod + aws_role_to_assume: + state: "arn:aws:iam::ACCOUNT_ID:role/digger-state-prod" + command: "arn:aws:iam::ACCOUNT_ID:role/digger-apply-prod" + aws_role_region: us-east-1 +``` + +See [Project-level roles](/ce/howto/project-level-roles) and [Segregate cloud accounts](/ce/howto/segregate-cloud-accounts). + +<Warning> + Terraform supports `data` blocks and external providers that can execute arbitrary code inside your CI runner. A contributor with write access to your Terraform code could use this to exfiltrate CI environment variables, including cloud credentials. Mitigate by enforcing OIDC (short-lived credentials) and restricting who can merge Terraform changes. +</Warning> + +## Access control + +Control who can trigger applies and under what conditions. + +**Apply requirements** gate applies on PR state. For production projects, require both approval and an up-to-date branch: + +```yaml +projects: + - name: prod + dir: prod + apply_requirements: [mergeable, approved, undiverged] +``` + +See [Apply requirements](/ce/howto/apply-requirements) for all options. + +**CODEOWNERS** ensures the right team reviews changes before Digger allows an apply. Since Digger checks GitHub's mergeability status before applying, CODEOWNERS enforcement requires no additional Digger configuration — only a branch protection rule on your default branch with "Require review from Code Owners" enabled. + +See [Codeowners integration](/ce/howto/codeowners). + +**Auth methods** for the self-hosted orchestrator backend — use JWT auth (via Frontegg) for production. Basic auth is convenient for testing but not recommended for production workloads. + +See [Auth methods](/ce/self-host/auth-methods). + +**RBAC** for Terraform state access is available in the state management backend when using S3 storage. Scope permissions to specific directories using resource paths like `dev/*` or `myapp/prod`. + +See [RBAC](/ce/state-management/rbac). + +## Secret handling + +Prevent sensitive values from appearing in Terraform plan output and PR comments using `filter_regex`: + +```yaml +workflows: + default: + plan: + filter_regex: "((?i)secret:\\s\"?)[^\"]+" + steps: + - init + - plan +``` + +Any match is replaced with `<REDACTED>` in logs and PR comments. See [Masking sensitive values](/ce/howto/masking-sensitive-values). + +## Kubernetes + +When deploying with Helm, do not set secret values inline in your chart values file for production deployments. Pre-create Kubernetes secrets and reference them: + +```yaml +# values-opentaco.yaml +ui: + useExistingSecret: true + existingSecretName: ui-secrets +``` + +Create the secrets from your env files: + +```bash +kubectl create secret generic ui-secrets \ + --from-env-file=helm-charts/secrets-example/ui.env \ + -n opentaco --dry-run=client -o yaml | kubectl apply -f - +``` + +Use the [External Secrets Operator](https://external-secrets.io/) or your organization's preferred secret lifecycle tool (Vault, AWS Secrets Manager, etc.) to manage rotation. + +Keep the `opentaco` and `traefik` namespaces isolated. The platform reference chart is a quickstart baseline — it is not a production-hardening blueprint. + +<Note> + To run Digger jobs inside your cluster's VPC, use the [Actions Runner Controller (ARC)](https://github.com/actions/actions-runner-controller) to provision GitHub Actions self-hosted runners directly in Kubernetes. See [Private runners](/ce/features/private-runners). +</Note> + +## Related + +- [AWS: Authenticate with OIDC](/ce/cloud-providers/authenticating-with-oidc-on-aws) +- [GCP: Federated OIDC access](/ce/gcp/federated-oidc-access) +- [Project-level roles](/ce/howto/project-level-roles) +- [Segregate cloud accounts](/ce/howto/segregate-cloud-accounts) +- [Apply requirements](/ce/howto/apply-requirements) +- [Codeowners integration](/ce/howto/codeowners) +- [Auth methods](/ce/self-host/auth-methods) +- [RBAC](/ce/state-management/rbac) +- [Masking sensitive values](/ce/howto/masking-sensitive-values) +- [Private runners](/ce/features/private-runners) +- [Self-hosting on Kubernetes](/self-hosting/kubernetes) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/docs/docs.json new/digger-cli-0.6.145/docs/docs.json --- old/digger-cli-0.6.144/docs/docs.json 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/docs/docs.json 2026-05-05 00:47:58.000000000 +0200 @@ -146,6 +146,12 @@ ] }, { + "group": "Security", + "pages": [ + "ce/security/overview" + ] + }, + { "group": "PR Automation", "pages": [ "ce/features/overview", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/docs/self-hosting/kubernetes.mdx new/digger-cli-0.6.145/docs/self-hosting/kubernetes.mdx --- old/digger-cli-0.6.144/docs/self-hosting/kubernetes.mdx 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/docs/self-hosting/kubernetes.mdx 2026-05-05 00:47:58.000000000 +0200 @@ -68,7 +68,7 @@ If you deployed the platform reference chart, you can also start from: ```bash - cp helm-charts/opentaco/helm.platform-reference.yaml values-opentaco.yaml + cp helm-charts/opentaco/values.platform-reference.yaml values-opentaco.yaml ``` Skeleton structure for `values-opentaco.yaml`: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/drift/controllers/drift.go new/digger-cli-0.6.145/drift/controllers/drift.go --- old/digger-cli-0.6.144/drift/controllers/drift.go 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/drift/controllers/drift.go 2026-05-05 00:47:58.000000000 +0200 @@ -82,6 +82,16 @@ c.JSON(http.StatusInternalServerError, gin.H{"error": fmt.Sprintf("could not find project %v in digger.yml", theProject)}) return } + + // Apply drift include/exclude patterns from generate_projects config + if len(config.DriftIncludePatterns) > 0 || len(config.DriftExcludePatterns) > 0 { + if !dg_configuration.MatchIncludeExcludePatternsToFile(theProject.Dir, config.DriftIncludePatterns, config.DriftExcludePatterns) { + log.Printf("Project %v dir %v excluded by drift patterns, skipping", project.Name, theProject.Dir) + c.String(http.StatusOK, "project excluded by drift patterns") + return + } + } + projects := []dg_configuration.Project{*theProject} jobsForImpactedProjects, err := generic.CreateJobsForProjects(projects, command, "drift", repoFullName, "digger", config.Workflows, &issueNumber, nil, branch, branch, false) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/libs/ci/github/github.go new/digger-cli-0.6.145/libs/ci/github/github.go --- old/digger-cli-0.6.144/libs/ci/github/github.go 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/libs/ci/github/github.go 2026-05-05 00:47:58.000000000 +0200 @@ -10,6 +10,7 @@ "github.com/diggerhq/digger/libs/ci" "github.com/diggerhq/digger/libs/ci/generic" + "github.com/diggerhq/digger/libs/comment_utils" "github.com/diggerhq/digger/libs/scheduler" "github.com/diggerhq/digger/libs/digger_config" @@ -349,11 +350,13 @@ // 422 Validation Failed [{Resource:Status Field:description Code:custom Message:description is too long (maximum is 140 characters)}] // since description isn't shown in ui setting to blank for now description := "" + targetURl := comment_utils.GetWorkflowUrl() _, _, err = svc.Client.Repositories.CreateStatus(context.Background(), svc.Owner, svc.RepoName, *pr.Head.SHA, &github.RepoStatus{ State: &status, Context: &statusContext, Description: &description, + TargetURL: &targetURl, }) return err } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/libs/digger_config/config.go new/digger-cli-0.6.145/libs/digger_config/config.go --- old/digger-cli-0.6.144/libs/digger_config/config.go 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/libs/digger_config/config.go 2026-05-05 00:47:58.000000000 +0200 @@ -31,6 +31,8 @@ TraverseToNestedProjects bool Reporting ReporterConfig ReportTerraformOutputs bool + DriftExcludePatterns []string + DriftIncludePatterns []string } type ReporterConfig struct { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/libs/digger_config/converters.go new/digger-cli-0.6.145/libs/digger_config/converters.go --- old/digger-cli-0.6.144/libs/digger_config/converters.go 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/libs/digger_config/converters.go 2026-05-05 00:47:58.000000000 +0200 @@ -292,6 +292,11 @@ diggerConfig.MentionDriftedProjectsInPR = false } + if diggerYaml.GenerateProjectsConfig != nil { + diggerConfig.DriftExcludePatterns = diggerYaml.GenerateProjectsConfig.DriftExcludePatterns + diggerConfig.DriftIncludePatterns = diggerYaml.GenerateProjectsConfig.DriftIncludePatterns + } + if diggerYaml.PrLocks != nil { diggerConfig.PrLocks = *diggerYaml.PrLocks } else { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/libs/digger_config/yaml.go new/digger-cli-0.6.145/libs/digger_config/yaml.go --- old/digger-cli-0.6.144/libs/digger_config/yaml.go 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/libs/digger_config/yaml.go 2026-05-05 00:47:58.000000000 +0200 @@ -159,6 +159,8 @@ TerragruntParsingConfig *TerragruntParsingConfig `yaml:"terragrunt_parsing,omitempty"` AwsRoleToAssume *AssumeRoleForProjectConfig `yaml:"aws_role_to_assume,omitempty"` AwsCognitoOidcConfig *AwsCognitoOidcConfig `yaml:"aws_cognito_oidc,omitempty"` + DriftExcludePatterns []string `yaml:"drift_exclude_patterns,omitempty"` + DriftIncludePatterns []string `yaml:"drift_include_patterns,omitempty"` } type TerragruntParsingConfig struct { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/README.md new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/README.md --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/README.md 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/README.md 2026-05-05 00:47:58.000000000 +0200 @@ -68,7 +68,7 @@ ```yaml global: - imageRegistry: ghcr.io/diggerhq/digger # ✅ Public registry (no auth needed) + imageRegistry: ghcr.io/diggerhq # ✅ Public registry (no auth needed) # Or use your private registry: # imageRegistry: us-central1-docker.pkg.dev/YOUR-PROJECT/YOUR-REPO ``` @@ -159,7 +159,7 @@ kubectl create secret generic ui-secrets \ --from-env-file=.secrets/ui.env -n opentaco -kubectl create secret generic backend-secrets \ +kubectl create secret generic taco-orchestrator-secrets \ --from-env-file=.secrets/digger-backend.env -n opentaco kubectl create secret generic statesman-secrets \ @@ -281,10 +281,10 @@ kubectl get pods -n opentaco # Check logs -kubectl logs -f deployment/opentaco-statesman -n opentaco -c statesman +kubectl logs -f deployment/opentaco-taco-statesman -n opentaco -c statesman # Access UI locally -kubectl port-forward svc/opentaco-ui 3030:3030 -n opentaco +kubectl port-forward svc/opentaco-taco-ui 3030:3030 -n opentaco open http://localhost:3030 ``` @@ -294,19 +294,21 @@ ```bash # From within the cluster: -http://opentaco-digger-backend-web:3000 -http://opentaco-drift:3004 -http://opentaco-statesman:8080 -http://opentaco-ui:3030 +http://opentaco-taco-orchestrator-web:3000 +http://opentaco-taco-drift:3004 +http://opentaco-taco-statesman:8080 +http://opentaco-taco-ui:3030 ``` These URLs are configured in `ui.env`: ```bash -ORCHESTRATOR_BACKEND_URL="http://opentaco-digger-backend-web:3000" -DRIFT_REPORTING_BACKEND_URL="http://opentaco-drift:3004" -STATESMAN_BACKEND_URL="http://opentaco-statesman:8080" +ORCHESTRATOR_BACKEND_URL="http://opentaco-taco-orchestrator-web:3000" +DRIFT_REPORTING_BACKEND_URL="http://opentaco-taco-drift:3004" +STATESMAN_BACKEND_URL="http://opentaco-taco-statesman:8080" ``` +If you install with a release name other than `opentaco`, adjust these hostnames to match that release prefix. + ## Upgrading ```bash @@ -343,7 +345,7 @@ kubectl get secrets -n opentaco # Verify secret contents -kubectl get secret backend-secrets -n opentaco -o jsonpath='{.data}' | jq 'keys' +kubectl get secret taco-orchestrator-secrets -n opentaco -o jsonpath='{.data}' | jq 'keys' ``` ### Cloud SQL connection issues diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/opentaco/Chart.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/opentaco/Chart.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/opentaco/Chart.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/opentaco/Chart.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -2,7 +2,7 @@ name: opentaco description: OpenTaco - Complete Infrastructure-as-Code platform deployment type: application -version: 0.1.1-public +version: 0.1.2-public appVersion: "0.1.0" # Umbrella chart that deploys all OpenTaco components @@ -17,7 +17,7 @@ dependencies: # Taco Orchestrator - terraform orchestration backend - name: taco-orchestrator - version: "0.1.1-public" + version: "0.1.2-public" repository: "oci://ghcr.io/diggerhq/helm-charts" condition: taco-orchestrator.enabled tags: @@ -25,7 +25,7 @@ # Taco Statesman - IaC state management - name: taco-statesman - version: "0.1.1-public" + version: "0.1.2-public" repository: "oci://ghcr.io/diggerhq/helm-charts" condition: taco-statesman.enabled tags: @@ -33,7 +33,7 @@ # Taco Sidecar - sandbox sidecar service - name: taco-sidecar - version: "0.1.3-public" + version: "0.1.4-public" repository: "oci://ghcr.io/diggerhq/helm-charts" condition: taco-sidecar.enabled tags: @@ -41,7 +41,7 @@ # Token Service - API token management - name: taco-token-service - version: "0.1.1-public" + version: "0.1.2-public" repository: "oci://ghcr.io/diggerhq/helm-charts" condition: taco-token-service.enabled tags: @@ -49,7 +49,7 @@ # Drift Detection - name: taco-drift - version: "0.1.1-public" + version: "0.1.2-public" repository: "oci://ghcr.io/diggerhq/helm-charts" condition: taco-drift.enabled tags: @@ -57,7 +57,7 @@ # Taco UI - React frontend - name: taco-ui - version: "0.1.2-public" + version: "0.1.3-public" repository: "oci://ghcr.io/diggerhq/helm-charts" condition: taco-ui.enabled tags: @@ -73,4 +73,3 @@ - iac - opentaco - digger - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/opentaco/helm.platform-reference.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/opentaco/helm.platform-reference.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/opentaco/helm.platform-reference.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/opentaco/helm.platform-reference.yaml 1970-01-01 01:00:00.000000000 +0100 @@ -1,100 +0,0 @@ -# This values file is intended to be used together with the -# `opentaco-platform-reference` chart. It contains overrides aligned with -# the platform reference CloudNativePG and MinIO resources. - -global: - imageRegistry: ghcr.io/diggerhq - -taco-orchestrator: - digger: - image: - repository: digger_backend - cloudSql: - enabled: false - config: - loadProjectsOnPush: true - backgroundJobsClientType: local-exec - projectsRefreshBin: /app/projects_refesh_main - postgres: - host: postgresql-shared-rw.opentaco.svc.cluster.local - port: "5432" - user: orchestrator - database: orchestrator - sslmode: disable - existingSecretName: postgresql-orchestrator-app - existingSecretKey: password - -taco-statesman: - taco: - # Public URL used in Terraform Cloud snippets and signed URLs. - # Replace with your externally reachable host. - image: - repository: digger/taco-statesman - publicBaseUrl: https://your-domain.com - # OPENTACO_SECRET_KEY is required in statesman-secrets for signed URL flows. - storage: - type: s3 - s3: - bucket: opentaco - region: us-east-1 - endpoint: http://minio.opentaco.svc.cluster.local:9000 - accessKeyId: minioadmin - secretAccessKey: change-me-minio-password - awsRegion: us-east-1 - queryBackend: postgres - allowXForwardedFor: true - postgres: - host: postgresql-shared-rw.opentaco.svc.cluster.local - port: "5432" - user: statesman - database: statesman - sslmode: disable - existingSecretName: postgresql-statesman-app - existingSecretKey: password - cloudSql: - enabled: false - -taco-token-service: - tokenService: - image: - repository: digger/taco-token-service - secret: - useExistingSecret: false - database: - backend: postgres - postgres: - host: postgresql-shared-rw.opentaco.svc.cluster.local - port: 5432 - user: token - dbname: token - sslmode: disable - secretName: postgresql-token-app - secretKey: password - cloudSql: - enabled: false - -taco-drift: - drift: - image: - repository: digger/drift - # Drift needs hostnames in drift-secrets: - # - DIGGER_APP_URL=https://your-domain.com - # - DIGGER_HOSTNAME=http://opentaco-taco-drift:3004 - # - DIGGER_DRIFT_REPORTER_HOSTNAME=https://your-domain.com - cronjobs: - enabled: true - -taco-ui: - ui: - image: - repository: digger/taco-ui - -taco-sidecar: - enabled: true - sidecar: - secret: - useExistingSecret: false - # existingSecretName: opentaco-taco-sidecar-secrets - sandboxRunner: e2b - e2bApiKey: E2B_API_KEY_PLACEHOLDER - e2bBareBonesTemplateId: E2B_TEMPLATE_ID_PLACEHOLDER diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/opentaco/values-production.yaml.example new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/opentaco/values-production.yaml.example --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/opentaco/values-production.yaml.example 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/opentaco/values-production.yaml.example 2026-05-05 00:47:58.000000000 +0200 @@ -2,7 +2,7 @@ # Copy this file and customize for your environment. global: - imageRegistry: ghcr.io/diggerhq/digger + imageRegistry: ghcr.io/diggerhq imagePullPolicy: IfNotPresent # ============================================================================ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/opentaco/values-test.yaml.example new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/opentaco/values-test.yaml.example --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/opentaco/values-test.yaml.example 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/opentaco/values-test.yaml.example 2026-05-05 00:47:58.000000000 +0200 @@ -5,7 +5,7 @@ # Global Configuration # ============================================================================ global: - imageRegistry: ghcr.io/diggerhq/digger + imageRegistry: ghcr.io/diggerhq imagePullPolicy: IfNotPresent # Note: imagePullSecrets not needed for public GHCR images # imagePullSecrets: @@ -80,4 +80,3 @@ allowedHosts: "localhost" ingress: enabled: false # Using port-forward for testing - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/opentaco/values.platform-reference.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/opentaco/values.platform-reference.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/opentaco/values.platform-reference.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/opentaco/values.platform-reference.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -0,0 +1,100 @@ +# This values file is intended to be used together with the +# `opentaco-platform-reference` chart. It contains overrides aligned with +# the platform reference CloudNativePG and MinIO resources. + +global: + imageRegistry: ghcr.io/diggerhq + +taco-orchestrator: + digger: + image: + repository: digger_backend + cloudSql: + enabled: false + config: + loadProjectsOnPush: true + backgroundJobsClientType: local-exec + projectsRefreshBin: /app/projects_refesh_main + postgres: + host: postgresql-shared-rw.opentaco.svc.cluster.local + port: "5432" + user: orchestrator + database: orchestrator + sslmode: disable + existingSecretName: postgresql-orchestrator-app + existingSecretKey: password + +taco-statesman: + taco: + # Public URL used in Terraform Cloud snippets and signed URLs. + # Replace with your externally reachable host. + image: + repository: digger/taco-statesman + publicBaseUrl: https://your-domain.com + # OPENTACO_SECRET_KEY is required in statesman-secrets for signed URL flows. + storage: + type: s3 + s3: + bucket: opentaco + region: us-east-1 + endpoint: http://minio.opentaco.svc.cluster.local:9000 + accessKeyId: minioadmin + secretAccessKey: change-me-minio-password + awsRegion: us-east-1 + queryBackend: postgres + allowXForwardedFor: true + postgres: + host: postgresql-shared-rw.opentaco.svc.cluster.local + port: "5432" + user: statesman + database: statesman + sslmode: disable + existingSecretName: postgresql-statesman-app + existingSecretKey: password + cloudSql: + enabled: false + +taco-token-service: + tokenService: + image: + repository: digger/taco-token-service + secret: + useExistingSecret: false + database: + backend: postgres + postgres: + host: postgresql-shared-rw.opentaco.svc.cluster.local + port: 5432 + user: token + dbname: token + sslmode: disable + secretName: postgresql-token-app + secretKey: password + cloudSql: + enabled: false + +taco-drift: + drift: + image: + repository: digger/drift + # Drift needs hostnames in drift-secrets: + # - DIGGER_APP_URL=https://your-domain.com + # - DIGGER_HOSTNAME=http://opentaco-taco-drift:3004 + # - DIGGER_DRIFT_REPORTER_HOSTNAME=https://your-domain.com + cronjobs: + enabled: true + +taco-ui: + ui: + image: + repository: digger/taco-ui + +taco-sidecar: + enabled: true + sidecar: + secret: + useExistingSecret: false + # existingSecretName: opentaco-taco-sidecar-secrets + sandboxRunner: e2b + e2bApiKey: E2B_API_KEY_PLACEHOLDER + e2bBareBonesTemplateId: E2B_TEMPLATE_ID_PLACEHOLDER diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/opentaco/values.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/opentaco/values.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/opentaco/values.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/opentaco/values.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -13,7 +13,11 @@ # ============================================================================ global: # Image registry for all custom images - imageRegistry: ghcr.io/diggerhq/digger + imageRegistry: ghcr.io/diggerhq + + # Pod annotations applied to all subchart workloads by default. + # Each subchart can override these keys via its own podAnnotations map. + podAnnotations: {} # Image pull policy imagePullPolicy: IfNotPresent @@ -45,7 +49,7 @@ digger: image: - repository: digger-backend-ee + repository: digger_backend tag: "latest" replicaCount: 1 @@ -92,7 +96,7 @@ taco: image: - repository: taco-statesman + repository: digger/taco-statesman tag: "latest" replicaCount: 1 @@ -142,7 +146,7 @@ tokenService: image: - repository: taco-token-service + repository: digger/taco-token-service tag: "v0.1.0" pullPolicy: "IfNotPresent" @@ -199,7 +203,7 @@ drift: image: - repository: drift + repository: digger/drift tag: "latest" replicaCount: 1 @@ -246,7 +250,7 @@ ui: image: - repository: taco-ui + repository: digger/taco-ui tag: "v0.1.0" replicaCount: 1 @@ -264,10 +268,12 @@ # Backend service URLs (for server-side API calls) backends: - orchestratorUrl: "http://taco-orchestrator:3000" - driftReportingUrl: "http://taco-drift:3004" - statesmanUrl: "http://taco-statesman:8080" - tokensServiceUrl: "http://taco-token-service:8081" + # These defaults assume release name "opentaco". + # If you install with a different release name, update these hostnames. + orchestratorUrl: "http://opentaco-taco-orchestrator-web:3000" + driftReportingUrl: "http://opentaco-taco-drift:3004" + statesmanUrl: "http://opentaco-taco-statesman:8080" + tokensServiceUrl: "http://opentaco-taco-token-service:8081" ingress: enabled: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-drift/Chart.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-drift/Chart.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-drift/Chart.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-drift/Chart.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -2,6 +2,6 @@ name: taco-drift description: Taco Drift - Automated infrastructure drift detection and reporting service type: application -version: 0.1.1-public +version: 0.1.2-public appVersion: "v0.1.0" icon: https://raw.githubusercontent.com/diggerhq/digger/main/docs/logo/digger-logo.png diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-drift/templates/cronjobs.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-drift/templates/cronjobs.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-drift/templates/cronjobs.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-drift/templates/cronjobs.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -5,6 +5,7 @@ {{- else }} {{- $driftSecretName = printf "%s-secret" (include "digger-drift.fullname" .) -}} {{- end }} +{{- $podAnnotations := mergeOverwrite (dict) (default (dict) .Values.global.podAnnotations) (default (dict) .Values.drift.podAnnotations) -}} apiVersion: batch/v1 kind: CronJob metadata: @@ -23,6 +24,10 @@ spec: template: metadata: + {{- if $podAnnotations }} + annotations: + {{- toYaml $podAnnotations | nindent 12 }} + {{- end }} labels: app.kubernetes.io/name: {{ include "digger-drift.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} @@ -68,6 +73,10 @@ spec: template: metadata: + {{- if $podAnnotations }} + annotations: + {{- toYaml $podAnnotations | nindent 12 }} + {{- end }} labels: app.kubernetes.io/name: {{ include "digger-drift.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-drift/templates/deployment.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-drift/templates/deployment.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-drift/templates/deployment.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-drift/templates/deployment.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -11,6 +11,11 @@ {{- include "digger-drift.selectorLabels" . | nindent 6 }} template: metadata: + {{- $podAnnotations := mergeOverwrite (dict) (default (dict) .Values.global.podAnnotations) (default (dict) .Values.drift.podAnnotations) }} + {{- if $podAnnotations }} + annotations: + {{- toYaml $podAnnotations | nindent 8 }} + {{- end }} labels: {{- include "digger-drift.selectorLabels" . | nindent 8 }} spec: @@ -22,7 +27,7 @@ {{- end }} containers: - name: {{ .Chart.Name }} - image: "{{ .Values.global.imageRegistry | default "ghcr.io/diggerhq/digger" }}/{{ .Values.drift.image.repository }}:{{ .Values.drift.image.tag | default .Chart.AppVersion }}" + image: "{{ .Values.drift.image.registry | default .Values.global.imageRegistry | default "ghcr.io/diggerhq" }}/{{ .Values.drift.image.repository }}:{{ .Values.drift.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.drift.image.pullPolicy | default "IfNotPresent" }} ports: - name: http diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-drift/values.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-drift/values.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-drift/values.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-drift/values.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -12,13 +12,19 @@ # Note: Full registry path comes from global.imageRegistry # Public image: ghcr.io/diggerhq/digger/drift image: - repository: drift + # Optional per-chart registry override. Falls back to global.imageRegistry. + registry: "" + repository: digger/drift tag: "latest" pullPolicy: "IfNotPresent" # Number of replicas replicaCount: 1 + # Pod annotations for drift pods. + # These override matching keys from global.podAnnotations. + podAnnotations: {} + # Custom environment variables customEnv: [] # - name: MY_CUSTOM_ENV @@ -107,3 +113,4 @@ # Global configuration (optional) global: imagePullSecrets: [] + podAnnotations: {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-orchestrator/Chart.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-orchestrator/Chart.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-orchestrator/Chart.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-orchestrator/Chart.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -15,7 +15,7 @@ # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.1.1-public +version: 0.1.2-public # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-orchestrator/templates/backend-deployment.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-orchestrator/templates/backend-deployment.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-orchestrator/templates/backend-deployment.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-orchestrator/templates/backend-deployment.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -11,6 +11,11 @@ app: {{ include "taco-orchestrator.name" . }}-web template: metadata: + {{- $podAnnotations := mergeOverwrite (dict) (default (dict) .Values.global.podAnnotations) (default (dict) .Values.digger.podAnnotations) }} + {{- if $podAnnotations }} + annotations: + {{- toYaml $podAnnotations | nindent 8 }} + {{- end }} labels: app: {{ include "taco-orchestrator.name" . }}-web {{- include "taco-orchestrator.selectorLabels" . | nindent 8 }} @@ -42,7 +47,7 @@ {{- end }} containers: - name: web - image: "{{ .Values.global.imageRegistry | default "ghcr.io/diggerhq/digger" }}/{{ .Values.digger.image.repository }}:{{ .Values.digger.image.tag }}" + image: "{{ .Values.digger.image.registry | default .Values.global.imageRegistry | default "ghcr.io/diggerhq" }}/{{ .Values.digger.image.repository }}:{{ .Values.digger.image.tag }}" imagePullPolicy: {{ .Values.digger.image.pullPolicy | default "IfNotPresent" }} ports: - name: http diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-orchestrator/tests/deployments_test.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-orchestrator/tests/deployments_test.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-orchestrator/tests/deployments_test.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-orchestrator/tests/deployments_test.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -39,3 +39,34 @@ limits: cpu: "500m" memory: "200Mi" + + - it: should combine global imageRegistry with unqualified repository + set: + global.imageRegistry: registry.example.com/acme + digger.image.repository: digger_backend + digger.image.tag: v1.2.3 + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: registry.example.com/acme/digger_backend:v1.2.3 + + - it: should prefer digger image registry over global imageRegistry + set: + global.imageRegistry: registry.example.com/global + digger.image.registry: registry.example.com/service + digger.image.repository: digger_backend + digger.image.tag: v1.2.3 + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: registry.example.com/service/digger_backend:v1.2.3 + + - it: should always combine registry and repository path + set: + global.imageRegistry: registry.example.com/acme + digger.image.repository: diggerhq/digger_backend + digger.image.tag: v1.2.3 + asserts: + - equal: + path: spec.template.spec.containers[0].image + value: registry.example.com/acme/diggerhq/digger_backend:v1.2.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-orchestrator/values.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-orchestrator/values.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-orchestrator/values.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-orchestrator/values.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -12,13 +12,19 @@ replicaCount: 1 # Image configuration - # Note: Full registry path comes from global.imageRegistry - # Public image: ghcr.io/diggerhq/digger/digger-backend-ee + # Repository path is combined with digger.image.registry/global.imageRegistry. + # Example rendered image: ghcr.io/diggerhq/digger_backend:latest image: - repository: digger-backend-ee + # Optional per-chart registry override. Falls back to global.imageRegistry. + registry: "" + repository: digger_backend tag: "latest" pullPolicy: IfNotPresent + # Pod annotations for orchestrator pods. + # These override matching keys from global.podAnnotations. + podAnnotations: {} + # RBAC configuration for Job spawning # The orchestrator needs permissions to create and manage Kubernetes Jobs rbac: @@ -177,3 +183,4 @@ # Global configuration (optional) global: imagePullSecrets: [] + podAnnotations: {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-sidecar/Chart.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-sidecar/Chart.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-sidecar/Chart.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-sidecar/Chart.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -2,7 +2,7 @@ name: taco-sidecar description: Sandbox sidecar service for OpenTaco remote Terraform/OpenTofu runs type: application -version: 0.1.3-public +version: 0.1.4-public appVersion: "0.1.0.1" keywords: - terraform diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-sidecar/templates/deployment.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-sidecar/templates/deployment.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-sidecar/templates/deployment.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-sidecar/templates/deployment.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -11,12 +11,17 @@ {{- include "taco-sidecar.selectorLabels" . | nindent 6 }} template: metadata: + {{- $podAnnotations := mergeOverwrite (dict) (default (dict) .Values.global.podAnnotations) (default (dict) .Values.sidecar.podAnnotations) }} + {{- if $podAnnotations }} + annotations: + {{- toYaml $podAnnotations | nindent 8 }} + {{- end }} labels: {{- include "taco-sidecar.selectorLabels" . | nindent 8 }} spec: containers: - name: sidecar - image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" + image: "{{ .Values.sidecar.image.registry | default .Values.global.imageRegistry | default "ghcr.io/diggerhq" }}/{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" imagePullPolicy: {{ .Values.sidecar.image.pullPolicy }} ports: - name: http diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-sidecar/values.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-sidecar/values.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-sidecar/values.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-sidecar/values.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -1,11 +1,17 @@ sidecar: image: - repository: ghcr.io/diggerhq/sandbox-sidecar + # Optional per-chart registry override. Falls back to global.imageRegistry. + registry: "" + repository: sandbox-sidecar tag: "latest" pullPolicy: IfNotPresent replicaCount: 1 + # Pod annotations for sidecar pods. + # These override matching keys from global.podAnnotations. + podAnnotations: {} + service: type: ClusterIP port: 9100 @@ -51,3 +57,7 @@ nodeSelector: {} tolerations: [] affinity: {} + +global: + imageRegistry: "" + podAnnotations: {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-statesman/Chart.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-statesman/Chart.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-statesman/Chart.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-statesman/Chart.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -2,6 +2,6 @@ name: taco-statesman description: Taco Statesman - Infrastructure-as-Code state management and coordination service type: application -version: 0.1.1-public +version: 0.1.2-public appVersion: "v0.1.0" icon: https://raw.githubusercontent.com/diggerhq/digger/main/docs/logo/digger-logo.png diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-statesman/templates/deployment.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-statesman/templates/deployment.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-statesman/templates/deployment.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-statesman/templates/deployment.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -11,6 +11,11 @@ {{- include "taco-statesman.selectorLabels" . | nindent 6 }} template: metadata: + {{- $podAnnotations := mergeOverwrite (dict) (default (dict) .Values.global.podAnnotations) (default (dict) .Values.taco.podAnnotations) }} + {{- if $podAnnotations }} + annotations: + {{- toYaml $podAnnotations | nindent 8 }} + {{- end }} labels: {{- include "taco-statesman.selectorLabels" . | nindent 8 }} spec: @@ -25,7 +30,7 @@ {{- end }} containers: - name: {{ .Chart.Name }} - image: "{{ .Values.global.imageRegistry | default "ghcr.io/diggerhq/digger" }}/{{ .Values.taco.image.repository }}:{{ .Values.taco.image.tag | default .Chart.AppVersion }}" + image: "{{ .Values.taco.image.registry | default .Values.global.imageRegistry | default "ghcr.io/diggerhq" }}/{{ .Values.taco.image.repository }}:{{ .Values.taco.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.taco.image.pullPolicy | default "IfNotPresent" }} ports: - name: http diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-statesman/values.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-statesman/values.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-statesman/values.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-statesman/values.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -12,13 +12,19 @@ # Note: Full registry path comes from global.imageRegistry # Public image: ghcr.io/diggerhq/digger/taco-statesman image: - repository: taco-statesman + # Optional per-chart registry override. Falls back to global.imageRegistry. + registry: "" + repository: digger/taco-statesman tag: "latest" pullPolicy: "IfNotPresent" # Number of replicas replicaCount: 1 + # Pod annotations for statesman pods. + # These override matching keys from global.podAnnotations. + podAnnotations: {} + # Service configuration # Creates: OPENTACO_PORT (set automatically from port) service: @@ -154,3 +160,4 @@ # Global configuration (optional) global: imagePullSecrets: [] + podAnnotations: {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-token-service/Chart.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-token-service/Chart.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-token-service/Chart.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-token-service/Chart.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -2,6 +2,6 @@ name: taco-token-service description: A Helm chart for Taco Token Service type: application -version: 0.1.1-public +version: 0.1.2-public appVersion: "v0.1.0" icon: https://raw.githubusercontent.com/diggerhq/digger/main/docs/logo/digger-logo.png diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-token-service/templates/deployment.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-token-service/templates/deployment.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-token-service/templates/deployment.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-token-service/templates/deployment.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -11,6 +11,11 @@ {{- include "taco-token-service.selectorLabels" . | nindent 6 }} template: metadata: + {{- $podAnnotations := mergeOverwrite (dict) (default (dict) .Values.global.podAnnotations) (default (dict) .Values.tokenService.podAnnotations) }} + {{- if $podAnnotations }} + annotations: + {{- toYaml $podAnnotations | nindent 8 }} + {{- end }} labels: {{- include "taco-token-service.selectorLabels" . | nindent 8 }} spec: @@ -19,7 +24,7 @@ {{- end }} containers: - name: token-service - image: "{{ .Values.global.imageRegistry | default "ghcr.io/diggerhq/digger" }}/{{ .Values.tokenService.image.repository }}:{{ .Values.tokenService.image.tag | default .Chart.AppVersion }}" + image: "{{ .Values.tokenService.image.registry | default .Values.global.imageRegistry | default "ghcr.io/diggerhq" }}/{{ .Values.tokenService.image.repository }}:{{ .Values.tokenService.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.tokenService.image.pullPolicy | default "IfNotPresent" }} ports: - name: http diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-token-service/values.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-token-service/values.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-token-service/values.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-token-service/values.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -3,13 +3,19 @@ tokenService: # Image configuration image: - repository: taco-token-service + # Optional per-chart registry override. Falls back to global.imageRegistry. + registry: "" + repository: digger/taco-token-service tag: "v0.1.0" pullPolicy: "IfNotPresent" # Number of replicas replicaCount: 1 + # Pod annotations for token-service pods. + # These override matching keys from global.podAnnotations. + podAnnotations: {} + # Service configuration service: type: ClusterIP @@ -59,3 +65,4 @@ # Global configuration (optional) global: imagePullSecrets: [] + podAnnotations: {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-ui/Chart.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-ui/Chart.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-ui/Chart.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-ui/Chart.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -2,6 +2,6 @@ name: taco-ui description: Taco UI - Web-based frontend for OpenTaco infrastructure management platform type: application -version: 0.1.2-public +version: 0.1.3-public appVersion: "v0.1.1" icon: https://raw.githubusercontent.com/diggerhq/digger/main/docs/logo/digger-logo.png diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-ui/templates/deployment.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-ui/templates/deployment.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-ui/templates/deployment.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-ui/templates/deployment.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -11,6 +11,11 @@ {{- include "taco-ui.selectorLabels" . | nindent 6 }} template: metadata: + {{- $podAnnotations := mergeOverwrite (dict) (default (dict) .Values.global.podAnnotations) (default (dict) .Values.ui.podAnnotations) }} + {{- if $podAnnotations }} + annotations: + {{- toYaml $podAnnotations | nindent 8 }} + {{- end }} labels: {{- include "taco-ui.selectorLabels" . | nindent 8 }} spec: @@ -22,7 +27,7 @@ {{- end }} containers: - name: {{ .Chart.Name }} - image: "{{ .Values.global.imageRegistry | default "ghcr.io/diggerhq/digger" }}/{{ .Values.ui.image.repository }}:{{ .Values.ui.image.tag | default .Chart.AppVersion }}" + image: "{{ .Values.ui.image.registry | default .Values.global.imageRegistry | default "ghcr.io/diggerhq" }}/{{ .Values.ui.image.repository }}:{{ .Values.ui.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.ui.image.pullPolicy | default "IfNotPresent" }} ports: - name: http diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-ui/values.yaml new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-ui/values.yaml --- old/digger-cli-0.6.144/self-hosting/kubernetes/helm-charts/taco-ui/values.yaml 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/self-hosting/kubernetes/helm-charts/taco-ui/values.yaml 2026-05-05 00:47:58.000000000 +0200 @@ -17,13 +17,19 @@ # Note: Full registry path comes from global.imageRegistry # Public image: ghcr.io/diggerhq/digger/taco-ui image: - repository: taco-ui + # Optional per-chart registry override. Falls back to global.imageRegistry. + registry: "" + repository: digger/taco-ui tag: "latest" pullPolicy: "IfNotPresent" # Number of replicas replicaCount: 1 + # Pod annotations for ui pods. + # These override matching keys from global.podAnnotations. + podAnnotations: {} + # Service configuration # Creates: PORT (set automatically from port) service: @@ -128,3 +134,4 @@ # Global configuration (optional) global: imagePullSecrets: [] + podAnnotations: {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/ui/src/lib/env.server.ts new/digger-cli-0.6.145/ui/src/lib/env.server.ts --- old/digger-cli-0.6.144/ui/src/lib/env.server.ts 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/ui/src/lib/env.server.ts 2026-05-05 00:47:58.000000000 +0200 @@ -10,6 +10,7 @@ PUBLIC_HOSTNAME: string STATESMAN_BACKEND_URL: string WORKOS_REDIRECT_URI: string + ORCHESTRATOR_GITHUB_APP_URL: string POSTHOG_KEY?: string POSTHOG_HOST?: string } @@ -21,6 +22,7 @@ PUBLIC_HOSTNAME: process.env.PUBLIC_URL?.replace('https://', '').replace('http://', '') ?? '', STATESMAN_BACKEND_URL: process.env.STATESMAN_BACKEND_URL ?? '', WORKOS_REDIRECT_URI: process.env.WORKOS_REDIRECT_URI ?? '', + ORCHESTRATOR_GITHUB_APP_URL: process.env.ORCHESTRATOR_GITHUB_APP_URL ?? '', POSTHOG_KEY: process.env.POSTHOG_KEY || process.env.NEXT_PUBLIC_POSTHOG_KEY || process.env.VITE_PUBLIC_POSTHOG_KEY || '', POSTHOG_HOST: process.env.POSTHOG_HOST || process.env.NEXT_PUBLIC_POSTHOG_HOST || process.env.VITE_PUBLIC_POSTHOG_HOST || 'https://app.posthog.com', } as Env diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.144/ui/src/routes/_authenticated/_dashboard/dashboard/onboarding.tsx new/digger-cli-0.6.145/ui/src/routes/_authenticated/_dashboard/dashboard/onboarding.tsx --- old/digger-cli-0.6.144/ui/src/routes/_authenticated/_dashboard/dashboard/onboarding.tsx 2026-03-24 02:40:13.000000000 +0100 +++ new/digger-cli-0.6.145/ui/src/routes/_authenticated/_dashboard/dashboard/onboarding.tsx 2026-05-05 00:47:58.000000000 +0200 @@ -17,7 +17,7 @@ loader: async ({ context }) => { const { user, organisationId, publicServerConfig } = context const publicHostname = publicServerConfig?.PUBLIC_HOSTNAME || '' - const githubAppUrl = '/orchestrator/github/setup' + const githubAppUrl = publicServerConfig?.ORCHESTRATOR_GITHUB_APP_URL || '' return { user, organisationId, publicHostname, githubAppUrl } }, }) ++++++ digger-cli.obsinfo ++++++ --- /var/tmp/diff_new_pack.ZsThQJ/_old 2026-05-06 19:20:52.884461034 +0200 +++ /var/tmp/diff_new_pack.ZsThQJ/_new 2026-05-06 19:20:52.892461364 +0200 @@ -1,5 +1,5 @@ name: digger-cli -version: 0.6.144 -mtime: 1774316413 -commit: fd5d38526e54518714a137b9e0dbc5dad9bee2dc +version: 0.6.145 +mtime: 1777934878 +commit: 5adb2843ebfde0c53d2d8c1295e4d90e4df38536 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/digger-cli/vendor.tar.gz /work/SRC/openSUSE:Factory/.digger-cli.new.30200/vendor.tar.gz differ: char 32, line 2
