Renovate Bot #257
Closed
opened 2026-05-25 17:35:30 +00:00 by guettli
·
5 comments
No Branch/Tag Specified
main
issue-563-agentloop-validation
dummy-pr-test
issue-560-fix-firebase-run-url
issue-539-stable-imap-uid
issue-533-shared-email-list
plan-issue-555
drop-nix
plan-issue-484
plan-issue-539
plan-issue-535
plan-issue-474
plan-issue-533
fix-dagger-engineless-precommit
issue-521-fix-deploy-yml-wait-time-api
issue-502-fix-email-id-collision-mailbox
issue-492-eliminate-duplicate-build-runner
issue-494-website-change-detection
issue-491-parallelize-check
issue-478-fix-stalwart-dual-stack-bind
issue-475-allowed-addresses-glob
issue-473-search-result-reorder
issue-453-update-agentloop-defaults
issue-466-structured-search
issue-505-exclude-chaos-monkey-from-regular-ci
issue-509-fix-search-result-sorting
fix-ink-sparkle-remaining-tests
issue-506-fix-search-emails-tests
issue-504-runner-wait-time
issue-488-search-notes
issue-472-changelog-issue-links
issue-501-folder-search-local-sqlite
issue-486-fix-stale-test-shader-mismatch
fix/prevent-settled-search-rerun-473
issue-467-fix-search-stale-results
issue-446-installed-versions-in-changelog
issue-462-fix-pr
issue-448-chaos-monkey-test
issue-436-notes-on-emails
issue-429-unify-mail-display
issue-422-move-to-folder-create-new
issue-414-ensure-not-run-as-root
issue-424-unify-email-list-views
issue-419-trusted-senders-page
issue-425-fix-prs
test-foo
issue-421-bug-report
issue-383-fix-ci
issue-394-fix-deploy-flutter-version
issue-391-fix-ci-double-trigger
issue-376-combined-inbox-v2
issue-376-combined-inbox
issue-384-fix-open-prs
sops-migrate
issue-339-safe-first-on-imap-fetch
issue-340-try-catch-measure-height
issue-342-pin-intl-version
issue-341-guard-threademails-last
issue-335-agentloop-code-test
issue-329-fix
issue-315-fix
issue-320-fix
issue-325-fix
issue-312-fix
issue-311-fix
issue-305-fix
issue-304-fix
issue-299-fix
issue-300-fix
issue-298-fix
issue-296-fix
issue-294-fix
issue-289-fix
issue-288-fix
issue-287-fix
issue-286-fix
issue-277-fix
issue-282-fix
issue-280-fix
issue-272-fix
issue-268-fix
issue-267-fix
issue-266-fix
issue-258-fix
issue-260-fix
issue-257-fix
issue-253-fix
issue-216-fix
issue-251-fix
issue-249-fix
issue-question-fixes
issue-235-fix
issue-236-fix-v2
issue-237-fix
issue-236-fix
issue-228-fix
issue-217-fix
issue-214-fix
issue-213-fix
issue-208-fix
issue-205-fix
issue-204-fix
issue-203-fix
issue-202-fix
issue-129-fix
issue-161-fix
issue-160-fix
issue-201-fix
issue-210-fix
issue-198-fix
issue-200-fix
issue-144-fix
issue-199-fix
fix/playstore-upload-use-requests
issue-193-fix
issue-186-fix
issue-185-fix
issue-192-fix
issue-183-fix
issue-175-fix
issue-172-fix
issue-171-fix
issue-167-fix
issue-136-fix
issue-162-fix
issue-179-fix
issue-155-fix
issue-154-fix
issue-152-fix
issue-151-fix
issue-141-fix
issue-150-fix
issue-164-fix
migrate-to-dagger
task/d1-ci-matrix
task/a4-typeconverter-json
task/u7-onboarding-walkthrough
task/d3-sync-doc
task/a5-layer-boundary-lint
task/t5-golden-tests
task/p5-date-cache
task/s4-link-handling
task/p3-html-parse-isolate
task/u8-mark-all-read
task/u3-recent-searches
task/a3-jmap-injectable-http-client
task/r5-tls-error-handling
fix/playstore-redirect-retry
task/t3-repository-contract-tests
task/p2-email-list-pagination
task/p1-fts5-search
fix/playstore-upload-timeout
task/a1-email-detail-notifier
fix/upgrade-workmanager-0.9
fix/android-core-library-desugaring
task/p4-db-indexes
task/r3-html-error-boundary
task/d2-check-coverage
task/a2-email-tile
task/t4-migration-tests
task/t2-widget-tests
task/t1-email-repo-coverage
task/u6-connection-status
task/u4-push-notifications
task/u2-draft-sync
task/u1-list-unsubscribe
task/s2-hostname-validation
task/r6-reliability-fuzz-tests
task/r4-sync-error-banner
task/r2-force-resync
task/r1-undo-history-persistence
No results found.
Labels
Clear labels
NeedSupervisor
State/InProgress
State/Later
State/Planned
automerge
ci-failure
do-not-merge
loop/code
loop/code-ci-pending
loop/code-done
loop/code-in-process
loop/merge
loop/merge-done
loop/merge-in-process
loop/plan
loop/plan-done
loop/plan-in-process
Issue escalated to a human supervisor; agentloop will skip it until cleared.
Eligible for automatic merge by CI
Issue opened by agentloop to track a failing CI workflow; used for deduplication.
Plan PR — review only, do not merge.
Add to run the built-in "code" prompt; override at prompts/code.md.
Prompt "code" finished; waiting for the PR's CI to pass before advancing.
Prompt "code" finished successfully.
Agent for the "code" prompt is currently running on this issue.
Managed by agentloop
Managed by agentloop
Managed by agentloop
Add to run the built-in "plan" prompt; override at prompts/plan.md.
Prompt "plan" finished successfully.
Agent for the "plan" prompt is currently running on this issue.
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: guettli/sharedinbox#257
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Renovate Bot should run once per day via Forgejo Actions to keep dependencies up to date.
Renovate natively supports Forgejo as a platform: https://docs.renovatebot.com/modules/platform/forgejo/
Implementation
renovate.json— Renovate config covering pub, Dockerfile, and Forgejo Actions workflowsci/main.go—Renovate()Dagger function usingRENOVATE_PLATFORM=forgejoand endpointhttps://codeberg.org.forgejo/workflows/renovate.yml— daily cron (06:00 UTC) workflow callingtask renovateTaskfile.yml—renovatetask wrapping the Dagger callSecret
Repository secret name:
RENOVATE_FORGEJO_TOKENNeeds scopes: repo (read/write), user (read), issue (read/write), organization (read).
Implementation Plan: Renovate Bot via Dagger Forgejo Action (Issue #257)
This plan extends PR #226 (branch
issue-216-fix), which addedrenovate.jsonwith basic configuration for pub, Dockerfile, and Forgejo Actions dependency updates.Context
PR #226 already provides:
renovate.json: configures Renovate to scanpub(pubspec.yaml),Dockerfile, and.forgejo/workflows/action versionsWhat is missing: a Forgejo Actions workflow that actually runs Renovate once per day, calling it via Dagger.
Approach: Dagger function wrapping the official Renovate container
The cleanest way to satisfy "Call Renovate via Dagger" while keeping the action small is:
Renovate()function toci/main.gothat spins up the officialrenovate/renovateDocker image inside a Dagger container, passes the required environment variables, and executes Renovate against the repository..forgejo/workflows/renovate.ymlthat runs on a daily cron, sets up the remote Dagger engine (via the existingscripts/setup_dagger_remote.sh), and callsdagger call -m ci --source=. renovate.This keeps the workflow YAML tiny — just the Dagger engine setup and a single
dagger call— exactly as done inci.yml.Files to Change
1.
ci/main.goAdd a new exported Dagger function:
Key points:
WithSecretVariable(notWithEnvVariable) for the token so it is never logged.RENOVATE_PLATFORM=giteais the correct Renovate platform identifier for Forgejo/Codeberg.RENOVATE_ENDPOINTpoints to Codeberg's API.2.
.forgejo/workflows/renovate.ymlA minimal new workflow file:
New Secret Required
A new Codeberg repository secret must be added:
RENOVATE_TOKENsharedinbox@thomas-guettler.deaccount (or a dedicated bot account) with Contents: Read/Write and Issues/PRs: Read/Write permissions on theguettli/sharedinboxrepository.Renovate container image pinning
renovate/renovate:latestshould be pinned to a specific version (e.g.,renovate/renovate:39) to avoid unexpected breakage and to allow Renovate itself to update the pin via itsdockermanager (self-update). The exact version to use at implementation time should be the latest stable major.Risks and Open Questions
Renovate platform value: Forgejo is treated as
giteaplatform in Renovate. This is documented and stable, but worth verifying that the current Renovate version supports Codeberg's Forgejo version.Token permissions: The token must have write access to create branches and open PRs. If a dedicated bot account is not available, the maintainer's token can be used but it is less auditable.
Self-hosted runner availability: The
renovatejob uses the sameubuntu-latestself-hosted runner as other jobs. If the runner is busy or offline, the daily run is simply skipped (no retry). This is acceptable for a dependency-update job.Dagger module path: The existing workflows call
dagger call -m ci --source=.. This works because the Dagger module is at the repo root (thedagger.jsonis at root level, with the Go source inci/). The newRenovatefunction fits naturally into the existingCistruct inci/main.go.No source mount needed: Unlike build/test functions, Renovate clones the repository itself. Passing
--source=.todagger callis still required as a module argument, but theRenovatefunction does not need to use it (it can acceptSource *dagger.Directoryas an optional unused param, or the Dagger module SDK may require it as the receiver field — verify at implementation time).Cron timing: 06:00 UTC daily is a reasonable default (low runner contention, early-morning for CEST). Can be adjusted.
Summary of Changes
ci/main.goRenovate(ctx, renovateToken)function.forgejo/workflows/renovate.ymldagger call … renovateRENOVATE_TOKENNo changes to
renovate.json(already correct in PR #226). No changes toTaskfile.yml(optional: arenovate:task could be added for local testing, but the issue says keep it small).Planning complete. To resume this session:
Automatic merge of PR #262 failed (PR is still open after the merge command). Please merge manually.
Automatic merge of PR #262 failed (PR is still open after the merge command). Please merge manually.
All required components are now in main:\n-
renovate.json— Renovate configuration\n-ci/main.go—Renovate()Dagger function usingRENOVATE_PLATFORM=giteaand Codeberg endpoint\n-.forgejo/workflows/renovate.yml— daily cron (06:00 UTC) workflow\n-Taskfile.yml—renovatetask\n\nClosing as implemented.