26 Commits

Author SHA1 Message Date
082e159a96 chore(deps): update harbor.alexlebens.net/images/site-profile docker tag to v3.13.0 (#4791)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 27s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 2m4s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-profile](https://gitea.alexlebens.dev/alexlebens/site-profile) | minor | `3.12.1` → `3.13.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-profile (harbor.alexlebens.net/images/site-profile)</summary>

### [`v3.13.0`](https://gitea.alexlebens.dev/alexlebens/site-profile/releases/tag/3.13.0)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.12.1...3.13.0)

##### Bug Fixes

- change execution mode ([a6c889f](a6c889f76a))

##### Features

- add and update pre-commit ([148fe8e](148fe8eeff))
- add fallback ([787479e](787479e077))
- add fallback ([220c29f](220c29f4f7))
- add fallback to run animations on switch ([954112e](954112e30e))
- add semantic-release/npm ([91c9a4b](91c9a4bb91))
- change paths ([9319228](9319228ef6))
- consolidate css into tailwind ([dfeb181](dfeb181a1d))
- downgrade to astro 5 ([f35c73b](f35c73b028))
- move scripts to script folder ([641c7cb](641c7cb33f))
- refactor static paths and photoswipe on blog page, move script to base layout ([93a53ca](93a53cab3d))
- remove react ([e3179b0](e3179b0480))
- revert shiki css changes ([c4104a5](c4104a52d1))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4791
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-16 17:59:28 +00:00
e865676f76 chore(deps): update helm release meilisearch to v0.28.0 (#4788)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 1m53s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 4m24s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [meilisearch](https://github.com/meilisearch/meilisearch-kubernetes/tree/main/charts/meilisearch) ([source](https://github.com/meilisearch/meilisearch-kubernetes)) | minor | `0.27.0` → `0.28.0` |

---

### Release Notes

<details>
<summary>meilisearch/meilisearch-kubernetes (meilisearch)</summary>

### [`v0.28.0`](https://github.com/meilisearch/meilisearch-kubernetes/releases/tag/meilisearch-0.28.0)

[Compare Source](https://github.com/meilisearch/meilisearch-kubernetes/compare/meilisearch-0.27.0...meilisearch-0.28.0)

A Helm chart for the Meilisearch search engine

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiY2hhcnQiXX0=-->

Reviewed-on: #4788
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-16 16:03:10 +00:00
1899074f21 chore(deps): update helm release traefik-crds to v1.15.0 (#4787)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 1m12s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 1m17s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [traefik-crds](https://traefik.io/) ([source](https://github.com/traefik/traefik-helm-chart)) | minor | `1.14.0` → `1.15.0` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiY2hhcnQiXX0=-->

Reviewed-on: #4787
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-16 15:54:02 +00:00
33c9d0648f chore(config): migrate Renovate config (#4786)
All checks were successful
renovate / renovate (push) Successful in 5m43s
The Renovate config in this repository needs migrating. Typically this is because one or more configuration options you are using have been renamed.

  You don't need to merge this PR right away, because Renovate will continue to migrate these fields internally each time it runs. But later some of these fields may be fully deprecated and the migrations removed. So it's a good idea to merge this migration PR soon.

🔕 **Ignore**: Close this PR and you won't be reminded about config migration again, but one day your current config may no longer be valid.

 Got questions? Does something look wrong to you? Please don't hesitate to [request help here](https://github.com/renovatebot/renovate/discussions).

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).

Reviewed-on: #4786
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-16 15:27:26 +00:00
dfdbc6bff5 dev (#4785)
All checks were successful
renovate / renovate (push) Successful in 3m53s
render-manifests / render-manifests (push) Successful in 6m23s
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Reviewed-on: #4785
2026-03-16 05:14:58 +00:00
b50508a71a dev (#4776)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 1m1s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 2m27s
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Reviewed-on: #4776
2026-03-15 22:51:25 +00:00
61cbec9fdd chore(deps): update harbor.alexlebens.net/images/site-documentation docker tag to v0.3.0 (#4775)
Some checks failed
lint-test-helm / lint-helm (push) Successful in 24s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [harbor.alexlebens.net/images/site-documentation](https://gitea.alexlebens.dev/alexlebens/site-documentation) | minor | `0.2.0` → `0.3.0` |

---

### Release Notes

<details>
<summary>alexlebens/site-documentation (harbor.alexlebens.net/images/site-documentation)</summary>

### [`v0.3.0`](https://gitea.alexlebens.dev/alexlebens/site-documentation/blob/HEAD/CHANGELOG.md#030-2026-03-15)

[Compare Source](https://gitea.alexlebens.dev/alexlebens/site-documentation/compare/0.2.0...0.3.0)

##### Features

- add and update pre-commit ([972bbff](972bbffb41))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4775
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 22:50:30 +00:00
742d074c3f chore(deps): update ghcr.io/linuxserver/plex:1.43.0 docker digest to 84f8646 (#4773)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 1m37s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 3m49s
2026-03-15 22:34:42 +00:00
06b288e17c Merge (#4771)
Some checks failed
lint-test-helm / lint-helm (push) Successful in 42s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Has been cancelled
Reviewed-on: #4771
2026-03-15 22:32:42 +00:00
2278a4f048 feat: add and update pre-commit (#4770)
All checks were successful
renovate / renovate (push) Successful in 1m12s
Reviewed-on: #4770
2026-03-15 21:57:31 +00:00
cdd4b0162a feat: remove old workflows (#4769)
All checks were successful
renovate / renovate (push) Successful in 2m46s
Reviewed-on: #4769
2026-03-15 21:50:42 +00:00
2e7be7edbe feat: remove push render
All checks were successful
renovate / renovate (push) Successful in 2m6s
2026-03-15 16:42:36 -05:00
383f29e421 feat: use vars
All checks were successful
renovate / renovate (push) Successful in 3m8s
2026-03-15 16:27:31 -05:00
b43cdeba18 feat: use PR instead of date
All checks were successful
renovate / renovate (push) Successful in 1m48s
2026-03-15 16:16:30 -05:00
bde7552ae1 feat: more specific condition for push event 2026-03-15 16:16:30 -05:00
3830d32c67 chore(deps): update freikin/dawarich docker tag to v1.3.4 (#4767)
All checks were successful
lint-test-helm / lint-helm (push) Successful in 29s
lint-test-helm / validate-kubeconform (push) Has been skipped
render-manifests / render-manifests (push) Successful in 33s
renovate / renovate (push) Successful in 2m44s
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [freikin/dawarich](https://github.com/Freika/dawarich) | patch | `1.3.3` → `1.3.4` |

---

### Release Notes

<details>
<summary>Freika/dawarich (freikin/dawarich)</summary>

### [`v1.3.4`](https://github.com/Freika/dawarich/blob/HEAD/CHANGELOG.md#134---2026-03-15)

[Compare Source](https://github.com/Freika/dawarich/compare/1.3.3...1.3.4)

##### Changed

- Redesigned onboarding modal with two paths: "I have data" (inline file import) and "Start tracking" (app download + QR code). New users with existing location data can now start importing within 2 clicks of signing up.
- Onboarding completion is now persisted server-side (`settings.onboarding_completed`) instead of relying solely on localStorage, preventing the modal from reappearing after browser data clears.
- Route opacity data migration now runs as a background job instead of inline during migration, improving deployment reliability for large instances.

##### Fixed

- Fix admin and supporter tooltip overflowing the page on narrow screens. [#&#8203;1449](https://github.com/Freika/dawarich/issues/1449)
- Fix date navigation arrow tooltips overlapping with the navbar on map pages. [#&#8203;2229](https://github.com/Freika/dawarich/issues/2229) [#&#8203;2100](https://github.com/Freika/dawarich/issues/2100)
- Fix infinite loading spinner when a trip has no points in its date range. [#&#8203;2293](https://github.com/Freika/dawarich/issues/2293)
- Fix Insights monthly digest panels disappearing when switching months. [#&#8203;2305](https://github.com/Freika/dawarich/issues/2305)
- Fix suggested visit confirm/decline not removing the visit from the list. [#&#8203;2307](https://github.com/Freika/dawarich/issues/2307)
- Fix Stats page reloading when clicking "countries, cities" link. [#&#8203;2270](https://github.com/Freika/dawarich/issues/2270)
- Fix map base layer selection not being restored after page reload (Maps v1). [#&#8203;2093](https://github.com/Freika/dawarich/issues/2093)
- Fix duplicate country names in stats caused by geocoder returning different spellings. [#&#8203;2044](https://github.com/Freika/dawarich/issues/2044)
- Fix total distance display overlapping layer picker when distance is in miles. [#&#8203;2017](https://github.com/Freika/dawarich/issues/2017)
- Fix default route opacity displaying as 6000% for new users. [#&#8203;1891](https://github.com/Freika/dawarich/issues/1891)
- Fix shared month stats map missing hexagons from the last day of the month. [#&#8203;1934](https://github.com/Freika/dawarich/issues/1934)
- Fix Nominatim reverse geocoder producing all places named "Suggested place" instead of actual place names. [#&#8203;2182](https://github.com/Freika/dawarich/issues/2182)
- Fix IDL-crossing route segmenter returning inconsistent coordinate types. `unwrapCoordinates` now always returns a uniform array-of-arrays structure. [#&#8203;2038](https://github.com/Freika/dawarich/issues/2038)
- Fix a migration taking too long. [#&#8203;2375](https://github.com/Freika/dawarich/issues/2375)
- Fix family sharing not including the requesting user's own location. [#&#8203;2153](https://github.com/Freika/dawarich/issues/2153)
- The "Destroy" button on the trip page is now orange. [#&#8203;2348](https://github.com/Freika/dawarich/issues/2348)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXV0b21lcmdlIiwiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4767
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 21:06:09 +00:00
92892732d0 chore(deps): update dependency freika/dawarich to v1.3.4 (#4766)
All checks were successful
render-manifests / render-manifests (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 17s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 1m33s
2026-03-15 20:49:21 +00:00
d71b0597cc chore(deps): update dependency binwiederhier/ntfy to v2.19.0 (#4755)
Some checks failed
lint-test-helm / lint-helm (push) Successful in 11s
lint-test-helm / validate-kubeconform (push) Has been skipped
render-manifests / render-manifests (push) Successful in 33s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [binwiederhier/ntfy](https://github.com/binwiederhier/ntfy) | minor | `2.18.0` → `2.19.0` |
| [binwiederhier/ntfy](https://ntfy.sh/) ([source](https://github.com/binwiederhier/ntfy)) | minor | `v2.18.0` → `v2.19.0` |

---

### Release Notes

<details>
<summary>binwiederhier/ntfy (binwiederhier/ntfy)</summary>

### [`v2.19.0`](https://github.com/binwiederhier/ntfy/releases/tag/v2.19.0)

[Compare Source](https://github.com/binwiederhier/ntfy/compare/v2.18.0...v2.19.0)

This is a fast-follow release that enables Postgres read replica support.

To offload read-heavy queries from the primary database, you can optionally configure one or more read replicas using the `database-replica-urls` option. When configured, non-critical read-only queries (e.g. fetching messages, checking access permissions, etc) are distributed across the replicas using round-robin, while all writes and correctness-critical reads continue to go to the primary. If a replica becomes unhealthy, ntfy automatically falls back to the primary until the replica recovers.

**Features:**

- Support [PostgreSQL read replicas](https://docs.ntfy.sh/config/#postgresql-experimental) for offloading non-critical read queries via `database-replica-urls` config option ([#&#8203;1648](https://github.com/binwiederhier/ntfy/pull/1648))
- Add interactive [config generator](https://docs.ntfy.sh/config/#config-generator) to the documentation to help create server configuration files ([#&#8203;1654](https://github.com/binwiederhier/ntfy/pull/1654))

**Bug fixes + maintenance:**

- Web: Throttle notification sound in web app to play at most once every 2 seconds (similar to [#&#8203;1550](https://github.com/binwiederhier/ntfy/issues/1550), thanks to [@&#8203;jlaffaye](https://github.com/jlaffaye) for reporting)
- Web: Add hover tooltips to icon buttons in web app account and preferences pages ([#&#8203;1565](https://github.com/binwiederhier/ntfy/issues/1565), thanks to [@&#8203;jermanuts](https://github.com/jermanuts) for reporting)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4755
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 20:46:41 +00:00
1a70faa2e9 feat: use the user url for messages
All checks were successful
renovate / renovate (push) Successful in 2m4s
2026-03-15 15:40:46 -05:00
e1e54e567d feat: more specific condition for push event 2026-03-15 15:40:46 -05:00
3daa236d8c chore(deps): update kube-prometheus-stack docker tag to v82.10.4 (#4763)
All checks were successful
render-manifests / render-manifests (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 1m8s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 1m45s
2026-03-15 20:38:33 +00:00
d764dbc6d2 chore(deps): update helm release generic-device-plugin to v0.20.22 (#4761)
Some checks failed
render-manifests / render-manifests (push) Has been skipped
lint-test-helm / lint-helm (push) Successful in 12s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Has been cancelled
2026-03-15 20:36:24 +00:00
44104ba195 chore(deps): update dependency outline/outline to v1.6.0 (#4756)
Some checks failed
lint-test-helm / lint-helm (push) Successful in 22s
lint-test-helm / validate-kubeconform (push) Has been skipped
render-manifests / render-manifests (push) Successful in 32s
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [outline/outline](https://github.com/outline/outline) | minor | `1.5.0` → `1.6.0` |

---

### Release Notes

<details>
<summary>outline/outline (outline/outline)</summary>

### [`v1.6.0`](https://github.com/outline/outline/releases/tag/v1.6.0)

[Compare Source](https://github.com/outline/outline/compare/v1.5.0...v1.6.0)

#### What's Changed

##### Highlights

- Added a built-in MCP (Model Context Protocol) server, allowing AI assistants like Claude, Cursor, and Mistral to securely interact with the knowledge base. This is disabled by default for existing workspaces – see more details in the [docs](https://docs.getoutline.com/s/guide/doc/mcp-6j9jtENNKL).
- New GitLab integration allows previewing issues, merge requests, and projects in documents. Connect GitLab cloud, self-hosted, or both!
- A new "Present" mode allows presenting any document as formatted slides based on headers and dividers. See [docs](https://docs.getoutline.com/s/guide/doc/present-mode-yMGzaY7A9L).

##### Other Improvements

- Fortran and ABAP language support added to code blocks in [#&#8203;11471](https://github.com/outline/outline/pull/11471)
- OAuth provider now supports dynamic client registration in [#&#8203;11462](https://github.com/outline/outline/pull/11462)
- Added support for rich Linear, GitHub, and GitLab project mentions
- It is now possible to insert templates from the block menu in [#&#8203;11647](https://github.com/outline/outline/pull/11647)
- Embed integrations shown in the editor are now configurable in **Settings -> Integrations -> Embeds** in [#&#8203;11612](https://github.com/outline/outline/pull/11612)
- Toggle blocks can now be closed/open by clicking on the title in [#&#8203;11469](https://github.com/outline/outline/pull/11469)
- Add `Meta+Shift+I` shortcut for opening Insights in [#&#8203;11492](https://github.com/outline/outline/pull/11492)
- Added webhook category for file attachments in [#&#8203;11494](https://github.com/outline/outline/pull/11494)
- Child documents are now shown in the markdown for shared documents in [#&#8203;11495](https://github.com/outline/outline/pull/11495)
- Much smaller initial javascript bundle in [#&#8203;11518](https://github.com/outline/outline/pull/11518)
- Added support for configurable proxy IP header in environment settings by [@&#8203;ashleysommer](https://github.com/ashleysommer) in [#&#8203;11595](https://github.com/outline/outline/pull/11595)
- Added text wrap option for code blocks in [#&#8203;11614](https://github.com/outline/outline/pull/11614)
- Support rendering any shared doc as Markdown by adding `.md` extension ([example](https://docs.getoutline.com/s/guide.md)) in [#&#8203;11668](https://github.com/outline/outline/pull/11668)
- Added support for the ELK layout engine in Mermaid diagrams in [#&#8203;11631](https://github.com/outline/outline/pull/11631)
- Added FontAwesome icon support to Mermaid diagrams in [#&#8203;11704](https://github.com/outline/outline/pull/11704)
- There is now an option to toggle all notifications in [#&#8203;11713](https://github.com/outline/outline/pull/11713)
- Added an "Open in Desktop" option to document menu in [#&#8203;11729](https://github.com/outline/outline/pull/11729)
- It is now possible to toggle the preview display for attached PDFs in [#&#8203;11746](https://github.com/outline/outline/pull/11746)
- `CMD+Shift+L` shortcut now works to toggle theme on publicly shared pages in [#&#8203;11750](https://github.com/outline/outline/pull/11750)
- Discord will no longer re-prompt authorization for existing grants by [@&#8203;lrstanley](https://github.com/lrstanley) in [#&#8203;11757](https://github.com/outline/outline/pull/11757)
- Small facelift of integrations directory in [#&#8203;11516](https://github.com/outline/outline/pull/11516) and group management
- API: Added new `templates.list`, `templates.create`, `templates.info` etc endpoints to manage templates in [#&#8203;11027](https://github.com/outline/outline/pull/11027)

##### Fixes

- Fixed an issue with pagination on search results in [#&#8203;11489](https://github.com/outline/outline/pull/11489)
- Fixed an issue where the find and replace dialog immediately closes when opened on mobile devices in [#&#8203;11497](https://github.com/outline/outline/pull/11497)
- Improved caching behavior by ignoring the browser cache for the diagram extension in [#&#8203;11498](https://github.com/outline/outline/pull/11498)
- Fixed an issue where the read-only collection editor would not remount correctly when navigating in [#&#8203;11499](https://github.com/outline/outline/pull/11499)
- Fixed overly greedy background highlighting in the editor in [#&#8203;11500](https://github.com/outline/outline/pull/11500)
- Resolved multiple issues related to sticky headers on tables in [#&#8203;11501](https://github.com/outline/outline/pull/11501)
- Improved performance by applying initial decorations earlier for toggle blocks in [#&#8203;11493](https://github.com/outline/outline/pull/11493)
- Improved the accuracy of touch device detection in [#&#8203;11515](https://github.com/outline/outline/pull/11515)
- Improved performance by protecting against thundering herd issues in the SSO access validation task in [#&#8203;11532](https://github.com/outline/outline/pull/11532)
- Improved performance by optimizing a slow database query in the notification helper in [#&#8203;11534](https://github.com/outline/outline/pull/11534)
- Improved performance by moving image downloads outside of database transactions in [#&#8203;11528](https://github.com/outline/outline/pull/11528)
- Fixed an issue where a duplicate Korean IME character would be inserted when pressing Enter in the search bar by [@&#8203;huiseo](https://github.com/huiseo) in [#&#8203;11543](https://github.com/outline/outline/pull/11543)
- Fixed an issue where split comment marks were not correctly updated or deleted in [#&#8203;11537](https://github.com/outline/outline/pull/11537)
- Added handling for network failures in the installation info endpoint for isolated environments in [#&#8203;11546](https://github.com/outline/outline/pull/11546)
- Fixed a printing error caused by timing issues with React's `queueMicrotask` in [#&#8203;11551](https://github.com/outline/outline/pull/11551)
- Improved performance by optimizing the user memberships query in [#&#8203;11553](https://github.com/outline/outline/pull/11553)
- Fixed styling issues by adding a read-only guard on table cell selections in [#&#8203;11555](https://github.com/outline/outline/pull/11555)
- Fixed an issue in the Notion importer where child page mentions were being ignored in [#&#8203;11567](https://github.com/outline/outline/pull/11567)
- Fixed an issue with the misuse of database transactions in document revision endpoints in [#&#8203;11574](https://github.com/outline/outline/pull/11574)
- Fixed an issue by properly wrapping the content of toggle blocks in [#&#8203;11577](https://github.com/outline/outline/pull/11577)
- Improved performance by caching user collection IDs in [#&#8203;11579](https://github.com/outline/outline/pull/11579)
- Fixed a memory leak where failed webhooks were held in memory after a timeout in [#&#8203;11580](https://github.com/outline/outline/pull/11580)
- Improved database performance by removing unnecessarily complex joins in [#&#8203;11581](https://github.com/outline/outline/pull/11581)
- Fixed horizontal text overflow issues in notification emails in [#&#8203;11584](https://github.com/outline/outline/pull/11584)
- Fixed support for toggling nested lists within completed checkbox items in [#&#8203;11583](https://github.com/outline/outline/pull/11583)
- Fixed an issue where an empty state would briefly flash in the mention menu in [#&#8203;11587](https://github.com/outline/outline/pull/11587)
- Fixed issues by normalizing the edit state in the collection overview in [#&#8203;11586](https://github.com/outline/outline/pull/11586)
- Improved performance to prevent database lockups when presenting lists of imported documents in [#&#8203;11591](https://github.com/outline/outline/pull/11591)
- Fixed UUID escaping for custom emojis during document creation via the API in [#&#8203;11594](https://github.com/outline/outline/pull/11594)
- Fixed an issue where searches within public docs were incorrectly including internal popularity scores in [#&#8203;11598](https://github.com/outline/outline/pull/11598)
- Fixed an issue with the rank ordering of search results in [#&#8203;11599](https://github.com/outline/outline/pull/11599)
- Improved the appearance and functionality of the search popover on public documents in [#&#8203;11601](https://github.com/outline/outline/pull/11601)
- Fixed visual and functional issues with the notifications popover in [#&#8203;11602](https://github.com/outline/outline/pull/11602)
- Increased the request timeout for file creation to better support uploading large files in [#&#8203;11570](https://github.com/outline/outline/pull/11570)
- Fixed a misalignment issue with the right sidebar header in [#&#8203;11539](https://github.com/outline/outline/pull/11539)
- Fixed issues related to rendering Mermaid diagrams in [#&#8203;11604](https://github.com/outline/outline/pull/11604)
- Fixed a visual issue where the search sorting control would wrap onto its own line in [#&#8203;11606](https://github.com/outline/outline/pull/11606)
- Made a variety of performance improvements to the `ProsemirrorHelper` in [#&#8203;11554](https://github.com/outline/outline/pull/11554)
- Fixed an issue where the sidebar would briefly flash upon initial page load in [#&#8203;11607](https://github.com/outline/outline/pull/11607)
- Ensured that documents are removed from the starred list when they are archived in [#&#8203;11611](https://github.com/outline/outline/pull/11611)
- Improved performance by verifying websocket connections before querying the database in [#&#8203;11620](https://github.com/outline/outline/pull/11620)
- Updated the rate limiter to use a combination of user ID and IP address for better accuracy in [#&#8203;11613](https://github.com/outline/outline/pull/11613)
- Fixed an issue to ensure diagram file formats (PNG/SVG) are preserved when editing in [#&#8203;11622](https://github.com/outline/outline/pull/11622)
- Added a security limit of 10 attempts for OTP (One-Time Password) logins in [#&#8203;11623](https://github.com/outline/outline/pull/11623)
- Fixed issues related to avatar uploads in [#&#8203;11624](https://github.com/outline/outline/pull/11624)
- Improved performance by including the collection's `updatedAt` property in websocket payloads in [#&#8203;11628](https://github.com/outline/outline/pull/11628)
- Improved performance by adding API request deduplication in [#&#8203;11629](https://github.com/outline/outline/pull/11629)
- Upgraded `framer-motion` to version 5 to resolve issues with tab animations in [#&#8203;11632](https://github.com/outline/outline/pull/11632)
- Fixed an issue by skipping link unfurling attempts for non-HTTP/HTTPS URLs in [#&#8203;11640](https://github.com/outline/outline/pull/11640)
- Improved reliability by validating OAuth client IDs as UUIDs before querying the database in [#&#8203;11653](https://github.com/outline/outline/pull/11653)
- Fixed an issue to ensure sourced permissions are correctly rebuilt when a document is moved in [#&#8203;11229](https://github.com/outline/outline/pull/11229)
- Improved navigation visuals by highlighting the parent menu item when its submenu is open in [#&#8203;11659](https://github.com/outline/outline/pull/11659)
- Fixed an issue where the ESC key was not working to close the Share popover in [#&#8203;11662](https://github.com/outline/outline/pull/11662)
- Removed the hidden star control from document list items on mobile devices in [#&#8203;11655](https://github.com/outline/outline/pull/11655)
- Fixed an issue that caused database deadlocks when inserting into subscriptions in [#&#8203;11667](https://github.com/outline/outline/pull/11667)
- Removed the deprecated `datadog-metrics` library in [#&#8203;11665](https://github.com/outline/outline/pull/11665)
- Fixed an issue where @&#8203;mentions on mobile were being inserted at the incorrect position in [#&#8203;11671](https://github.com/outline/outline/pull/11671)
- Fixed incorrect visual nesting of items in the document explorer in [#&#8203;11680](https://github.com/outline/outline/pull/11680)
- Improved the accuracy of user membership policy checks in [#&#8203;11687](https://github.com/outline/outline/pull/11687)
- Improved performance by avoiding the instantiation of unnecessary editor extensions in read-only mode in [#&#8203;11681](https://github.com/outline/outline/pull/11681)
- Added a missing check for enabled passkeys in the verification endpoint in [#&#8203;11689](https://github.com/outline/outline/pull/11689)
- Increased the font size within code blocks for better readability in [#&#8203;11690](https://github.com/outline/outline/pull/11690)
- Fixed an issue to ensure comments on nodes are correctly stripped when duplicating a document in [#&#8203;11700](https://github.com/outline/outline/pull/11700)
- Moved warning-level logs from Sentry to standard logging outputs in [#&#8203;11708](https://github.com/outline/outline/pull/11708)
- Added support for the German (`de_DE`) long-date format in localized time display by [@&#8203;iljalukin](https://github.com/iljalukin) in [#&#8203;11720](https://github.com/outline/outline/pull/11720)
- Removed the deprecated usage of `ALLOWED_DOMAINS` and `GOOGLE_ALLOWED_DOMAINS` environment variables by [@&#8203;akshat-kumar-singhal](https://github.com/akshat-kumar-singhal) in [#&#8203;11718](https://github.com/outline/outline/pull/11718)
- Improved database performance by optimizing query pagination in [#&#8203;11726](https://github.com/outline/outline/pull/11726)
- Fixed a visual issue where the document explorer would jump when hovered over with the pointer in [#&#8203;11727](https://github.com/outline/outline/pull/11727)
- Fixed incorrect policy enforcement for file operations in [#&#8203;11728](https://github.com/outline/outline/pull/11728)
- Fixed an issue by properly filtering relationships returned from the list endpoint in [#&#8203;11738](https://github.com/outline/outline/pull/11738)
- Ensured that "Passkey" is only displayed on login screen if the workspace has actually used them in [#&#8203;11748](https://github.com/outline/outline/pull/11748)
- Changed the default behavior so that PDF attachments are no longer embedded automatically upon drag upload in [#&#8203;11745](https://github.com/outline/outline/pull/11745)
- Fixed an issue that caused stale collaborator IDs to be retained in [#&#8203;11749](https://github.com/outline/outline/pull/11749)
- Moved the group management interface to a dedicated sub-page for better organization in [#&#8203;11755](https://github.com/outline/outline/pull/11755)

#### New Contributors

- [@&#8203;ashleysommer](https://github.com/ashleysommer) made their first contribution in [#&#8203;11595](https://github.com/outline/outline/pull/11595)
- [@&#8203;iljalukin](https://github.com/iljalukin) made their first contribution in [#&#8203;11720](https://github.com/outline/outline/pull/11720)
- [@&#8203;akshat-kumar-singhal](https://github.com/akshat-kumar-singhal) made their first contribution in [#&#8203;11718](https://github.com/outline/outline/pull/11718)
- [@&#8203;Daniel15](https://github.com/Daniel15) made their first contribution in [#&#8203;11731](https://github.com/outline/outline/pull/11731)
- [@&#8203;lrstanley](https://github.com/lrstanley) made their first contribution in [#&#8203;11757](https://github.com/outline/outline/pull/11757)

**Full Changelog**: <https://github.com/outline/outline/compare/v1.5.0...v1.6.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4756
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 20:32:01 +00:00
45754be712 chore(deps): update outlinewiki/outline docker tag to v1.6.0 (#4757)
Some checks failed
lint-test-helm / validate-kubeconform (push) Has been cancelled
lint-test-helm / lint-helm (push) Has started running
render-manifests / render-manifests (push) Has started running
renovate / renovate (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [outlinewiki/outline](https://github.com/outline/outline) | minor | `1.5.0` → `1.6.0` |

---

### Release Notes

<details>
<summary>outline/outline (outlinewiki/outline)</summary>

### [`v1.6.0`](https://github.com/outline/outline/releases/tag/v1.6.0)

[Compare Source](https://github.com/outline/outline/compare/v1.5.0...v1.6.0)

##### What's Changed

##### Highlights

- Added a built-in MCP (Model Context Protocol) server, allowing AI assistants like Claude, Cursor, and Mistral to securely interact with the knowledge base. This is disabled by default for existing workspaces – see more details in the [docs](https://docs.getoutline.com/s/guide/doc/mcp-6j9jtENNKL).
- New GitLab integration allows previewing issues, merge requests, and projects in documents. Connect GitLab cloud, self-hosted, or both!
- A new "Present" mode allows presenting any document as formatted slides based on headers and dividers. See [docs](https://docs.getoutline.com/s/guide/doc/present-mode-yMGzaY7A9L).

##### Other Improvements

- Fortran and ABAP language support added to code blocks in [#&#8203;11471](https://github.com/outline/outline/pull/11471)
- OAuth provider now supports dynamic client registration in [#&#8203;11462](https://github.com/outline/outline/pull/11462)
- Added support for rich Linear, GitHub, and GitLab project mentions
- It is now possible to insert templates from the block menu in [#&#8203;11647](https://github.com/outline/outline/pull/11647)
- Embed integrations shown in the editor are now configurable in **Settings -> Integrations -> Embeds** in [#&#8203;11612](https://github.com/outline/outline/pull/11612)
- Toggle blocks can now be closed/open by clicking on the title in [#&#8203;11469](https://github.com/outline/outline/pull/11469)
- Add `Meta+Shift+I` shortcut for opening Insights in [#&#8203;11492](https://github.com/outline/outline/pull/11492)
- Added webhook category for file attachments in [#&#8203;11494](https://github.com/outline/outline/pull/11494)
- Child documents are now shown in the markdown for shared documents in [#&#8203;11495](https://github.com/outline/outline/pull/11495)
- Much smaller initial javascript bundle in [#&#8203;11518](https://github.com/outline/outline/pull/11518)
- Added support for configurable proxy IP header in environment settings by [@&#8203;ashleysommer](https://github.com/ashleysommer) in [#&#8203;11595](https://github.com/outline/outline/pull/11595)
- Added text wrap option for code blocks in [#&#8203;11614](https://github.com/outline/outline/pull/11614)
- Support rendering any shared doc as Markdown by adding `.md` extension ([example](https://docs.getoutline.com/s/guide.md)) in [#&#8203;11668](https://github.com/outline/outline/pull/11668)
- Added support for the ELK layout engine in Mermaid diagrams in [#&#8203;11631](https://github.com/outline/outline/pull/11631)
- Added FontAwesome icon support to Mermaid diagrams in [#&#8203;11704](https://github.com/outline/outline/pull/11704)
- There is now an option to toggle all notifications in [#&#8203;11713](https://github.com/outline/outline/pull/11713)
- Added an "Open in Desktop" option to document menu in [#&#8203;11729](https://github.com/outline/outline/pull/11729)
- It is now possible to toggle the preview display for attached PDFs in [#&#8203;11746](https://github.com/outline/outline/pull/11746)
- `CMD+Shift+L` shortcut now works to toggle theme on publicly shared pages in [#&#8203;11750](https://github.com/outline/outline/pull/11750)
- Discord will no longer re-prompt authorization for existing grants by [@&#8203;lrstanley](https://github.com/lrstanley) in [#&#8203;11757](https://github.com/outline/outline/pull/11757)
- Small facelift of integrations directory in [#&#8203;11516](https://github.com/outline/outline/pull/11516) and group management
- API: Added new `templates.list`, `templates.create`, `templates.info` etc endpoints to manage templates in [#&#8203;11027](https://github.com/outline/outline/pull/11027)

##### Fixes

- Fixed an issue with pagination on search results in [#&#8203;11489](https://github.com/outline/outline/pull/11489)
- Fixed an issue where the find and replace dialog immediately closes when opened on mobile devices in [#&#8203;11497](https://github.com/outline/outline/pull/11497)
- Improved caching behavior by ignoring the browser cache for the diagram extension in [#&#8203;11498](https://github.com/outline/outline/pull/11498)
- Fixed an issue where the read-only collection editor would not remount correctly when navigating in [#&#8203;11499](https://github.com/outline/outline/pull/11499)
- Fixed overly greedy background highlighting in the editor in [#&#8203;11500](https://github.com/outline/outline/pull/11500)
- Resolved multiple issues related to sticky headers on tables in [#&#8203;11501](https://github.com/outline/outline/pull/11501)
- Improved performance by applying initial decorations earlier for toggle blocks in [#&#8203;11493](https://github.com/outline/outline/pull/11493)
- Improved the accuracy of touch device detection in [#&#8203;11515](https://github.com/outline/outline/pull/11515)
- Improved performance by protecting against thundering herd issues in the SSO access validation task in [#&#8203;11532](https://github.com/outline/outline/pull/11532)
- Improved performance by optimizing a slow database query in the notification helper in [#&#8203;11534](https://github.com/outline/outline/pull/11534)
- Improved performance by moving image downloads outside of database transactions in [#&#8203;11528](https://github.com/outline/outline/pull/11528)
- Fixed an issue where a duplicate Korean IME character would be inserted when pressing Enter in the search bar by [@&#8203;huiseo](https://github.com/huiseo) in [#&#8203;11543](https://github.com/outline/outline/pull/11543)
- Fixed an issue where split comment marks were not correctly updated or deleted in [#&#8203;11537](https://github.com/outline/outline/pull/11537)
- Added handling for network failures in the installation info endpoint for isolated environments in [#&#8203;11546](https://github.com/outline/outline/pull/11546)
- Fixed a printing error caused by timing issues with React's `queueMicrotask` in [#&#8203;11551](https://github.com/outline/outline/pull/11551)
- Improved performance by optimizing the user memberships query in [#&#8203;11553](https://github.com/outline/outline/pull/11553)
- Fixed styling issues by adding a read-only guard on table cell selections in [#&#8203;11555](https://github.com/outline/outline/pull/11555)
- Fixed an issue in the Notion importer where child page mentions were being ignored in [#&#8203;11567](https://github.com/outline/outline/pull/11567)
- Fixed an issue with the misuse of database transactions in document revision endpoints in [#&#8203;11574](https://github.com/outline/outline/pull/11574)
- Fixed an issue by properly wrapping the content of toggle blocks in [#&#8203;11577](https://github.com/outline/outline/pull/11577)
- Improved performance by caching user collection IDs in [#&#8203;11579](https://github.com/outline/outline/pull/11579)
- Fixed a memory leak where failed webhooks were held in memory after a timeout in [#&#8203;11580](https://github.com/outline/outline/pull/11580)
- Improved database performance by removing unnecessarily complex joins in [#&#8203;11581](https://github.com/outline/outline/pull/11581)
- Fixed horizontal text overflow issues in notification emails in [#&#8203;11584](https://github.com/outline/outline/pull/11584)
- Fixed support for toggling nested lists within completed checkbox items in [#&#8203;11583](https://github.com/outline/outline/pull/11583)
- Fixed an issue where an empty state would briefly flash in the mention menu in [#&#8203;11587](https://github.com/outline/outline/pull/11587)
- Fixed issues by normalizing the edit state in the collection overview in [#&#8203;11586](https://github.com/outline/outline/pull/11586)
- Improved performance to prevent database lockups when presenting lists of imported documents in [#&#8203;11591](https://github.com/outline/outline/pull/11591)
- Fixed UUID escaping for custom emojis during document creation via the API in [#&#8203;11594](https://github.com/outline/outline/pull/11594)
- Fixed an issue where searches within public docs were incorrectly including internal popularity scores in [#&#8203;11598](https://github.com/outline/outline/pull/11598)
- Fixed an issue with the rank ordering of search results in [#&#8203;11599](https://github.com/outline/outline/pull/11599)
- Improved the appearance and functionality of the search popover on public documents in [#&#8203;11601](https://github.com/outline/outline/pull/11601)
- Fixed visual and functional issues with the notifications popover in [#&#8203;11602](https://github.com/outline/outline/pull/11602)
- Increased the request timeout for file creation to better support uploading large files in [#&#8203;11570](https://github.com/outline/outline/pull/11570)
- Fixed a misalignment issue with the right sidebar header in [#&#8203;11539](https://github.com/outline/outline/pull/11539)
- Fixed issues related to rendering Mermaid diagrams in [#&#8203;11604](https://github.com/outline/outline/pull/11604)
- Fixed a visual issue where the search sorting control would wrap onto its own line in [#&#8203;11606](https://github.com/outline/outline/pull/11606)
- Made a variety of performance improvements to the `ProsemirrorHelper` in [#&#8203;11554](https://github.com/outline/outline/pull/11554)
- Fixed an issue where the sidebar would briefly flash upon initial page load in [#&#8203;11607](https://github.com/outline/outline/pull/11607)
- Ensured that documents are removed from the starred list when they are archived in [#&#8203;11611](https://github.com/outline/outline/pull/11611)
- Improved performance by verifying websocket connections before querying the database in [#&#8203;11620](https://github.com/outline/outline/pull/11620)
- Updated the rate limiter to use a combination of user ID and IP address for better accuracy in [#&#8203;11613](https://github.com/outline/outline/pull/11613)
- Fixed an issue to ensure diagram file formats (PNG/SVG) are preserved when editing in [#&#8203;11622](https://github.com/outline/outline/pull/11622)
- Added a security limit of 10 attempts for OTP (One-Time Password) logins in [#&#8203;11623](https://github.com/outline/outline/pull/11623)
- Fixed issues related to avatar uploads in [#&#8203;11624](https://github.com/outline/outline/pull/11624)
- Improved performance by including the collection's `updatedAt` property in websocket payloads in [#&#8203;11628](https://github.com/outline/outline/pull/11628)
- Improved performance by adding API request deduplication in [#&#8203;11629](https://github.com/outline/outline/pull/11629)
- Upgraded `framer-motion` to version 5 to resolve issues with tab animations in [#&#8203;11632](https://github.com/outline/outline/pull/11632)
- Fixed an issue by skipping link unfurling attempts for non-HTTP/HTTPS URLs in [#&#8203;11640](https://github.com/outline/outline/pull/11640)
- Improved reliability by validating OAuth client IDs as UUIDs before querying the database in [#&#8203;11653](https://github.com/outline/outline/pull/11653)
- Fixed an issue to ensure sourced permissions are correctly rebuilt when a document is moved in [#&#8203;11229](https://github.com/outline/outline/pull/11229)
- Improved navigation visuals by highlighting the parent menu item when its submenu is open in [#&#8203;11659](https://github.com/outline/outline/pull/11659)
- Fixed an issue where the ESC key was not working to close the Share popover in [#&#8203;11662](https://github.com/outline/outline/pull/11662)
- Removed the hidden star control from document list items on mobile devices in [#&#8203;11655](https://github.com/outline/outline/pull/11655)
- Fixed an issue that caused database deadlocks when inserting into subscriptions in [#&#8203;11667](https://github.com/outline/outline/pull/11667)
- Removed the deprecated `datadog-metrics` library in [#&#8203;11665](https://github.com/outline/outline/pull/11665)
- Fixed an issue where @&#8203;mentions on mobile were being inserted at the incorrect position in [#&#8203;11671](https://github.com/outline/outline/pull/11671)
- Fixed incorrect visual nesting of items in the document explorer in [#&#8203;11680](https://github.com/outline/outline/pull/11680)
- Improved the accuracy of user membership policy checks in [#&#8203;11687](https://github.com/outline/outline/pull/11687)
- Improved performance by avoiding the instantiation of unnecessary editor extensions in read-only mode in [#&#8203;11681](https://github.com/outline/outline/pull/11681)
- Added a missing check for enabled passkeys in the verification endpoint in [#&#8203;11689](https://github.com/outline/outline/pull/11689)
- Increased the font size within code blocks for better readability in [#&#8203;11690](https://github.com/outline/outline/pull/11690)
- Fixed an issue to ensure comments on nodes are correctly stripped when duplicating a document in [#&#8203;11700](https://github.com/outline/outline/pull/11700)
- Moved warning-level logs from Sentry to standard logging outputs in [#&#8203;11708](https://github.com/outline/outline/pull/11708)
- Added support for the German (`de_DE`) long-date format in localized time display by [@&#8203;iljalukin](https://github.com/iljalukin) in [#&#8203;11720](https://github.com/outline/outline/pull/11720)
- Removed the deprecated usage of `ALLOWED_DOMAINS` and `GOOGLE_ALLOWED_DOMAINS` environment variables by [@&#8203;akshat-kumar-singhal](https://github.com/akshat-kumar-singhal) in [#&#8203;11718](https://github.com/outline/outline/pull/11718)
- Improved database performance by optimizing query pagination in [#&#8203;11726](https://github.com/outline/outline/pull/11726)
- Fixed a visual issue where the document explorer would jump when hovered over with the pointer in [#&#8203;11727](https://github.com/outline/outline/pull/11727)
- Fixed incorrect policy enforcement for file operations in [#&#8203;11728](https://github.com/outline/outline/pull/11728)
- Fixed an issue by properly filtering relationships returned from the list endpoint in [#&#8203;11738](https://github.com/outline/outline/pull/11738)
- Ensured that "Passkey" is only displayed on login screen if the workspace has actually used them in [#&#8203;11748](https://github.com/outline/outline/pull/11748)
- Changed the default behavior so that PDF attachments are no longer embedded automatically upon drag upload in [#&#8203;11745](https://github.com/outline/outline/pull/11745)
- Fixed an issue that caused stale collaborator IDs to be retained in [#&#8203;11749](https://github.com/outline/outline/pull/11749)
- Moved the group management interface to a dedicated sub-page for better organization in [#&#8203;11755](https://github.com/outline/outline/pull/11755)

##### New Contributors

- [@&#8203;ashleysommer](https://github.com/ashleysommer) made their first contribution in [#&#8203;11595](https://github.com/outline/outline/pull/11595)
- [@&#8203;iljalukin](https://github.com/iljalukin) made their first contribution in [#&#8203;11720](https://github.com/outline/outline/pull/11720)
- [@&#8203;akshat-kumar-singhal](https://github.com/akshat-kumar-singhal) made their first contribution in [#&#8203;11718](https://github.com/outline/outline/pull/11718)
- [@&#8203;Daniel15](https://github.com/Daniel15) made their first contribution in [#&#8203;11731](https://github.com/outline/outline/pull/11731)
- [@&#8203;lrstanley](https://github.com/lrstanley) made their first contribution in [#&#8203;11757](https://github.com/outline/outline/pull/11757)

**Full Changelog**: <https://github.com/outline/outline/compare/v1.5.0...v1.6.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=-->

Reviewed-on: #4757
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 20:31:37 +00:00
0e9d1eb85d chore(deps): update postgres-cluster docker tag to v7.10.0 (#4758)
Some checks failed
renovate / renovate (push) Successful in 1m46s
render-manifests / render-manifests (push) Successful in 1m48s
lint-test-helm / validate-kubeconform (push) Has been cancelled
lint-test-helm / lint-helm (push) Has been cancelled
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [postgres-cluster](https://github.com/cloudnative-pg/cloudnative-pg) | minor | `7.9.1` → `7.10.0` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiY2hhcnQiLCJpbWFnZSJdfQ==-->

Reviewed-on: #4758
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
2026-03-15 20:25:47 +00:00
1062e4cb3c feat: specify http port
All checks were successful
render-manifests / render-manifests (push) Successful in 43s
lint-test-helm / lint-helm (push) Successful in 1m7s
lint-test-helm / validate-kubeconform (push) Has been skipped
renovate / renovate (push) Successful in 8m55s
2026-03-15 15:02:19 -05:00
66 changed files with 233 additions and 1900 deletions

View File

@@ -131,4 +131,4 @@ jobs:
tags: action,failed
details: "Docker linting for compose dirs: ${{ steps.check-dir-changes.outputs.compose-dir-csv }}"
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
actions: '[{"action": "view", "label": "View Logs", "url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'
actions: '[{"action": "view", "label": "View Logs", "url": "${{ vars.USER_URL }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'

View File

@@ -218,9 +218,9 @@ jobs:
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,failed
details: "Helm linting for cluster '${CLUSTER}' failed on charts: ${{ steps.lint.outputs.failed-charts }}"
details: "Helm linting for cluster '${{ env.CLUSTER }}' failed on charts: ${{ steps.lint.outputs.failed-charts }}"
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
actions: '[{"action": "view", "label": "View Run", "url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'
actions: '[{"action": "view", "label": "View Run", "url": "${{ vars.USER_URL }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'
image: true
validate-kubeconform:
@@ -361,7 +361,7 @@ jobs:
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,failed
details: "Kubeconform for cluster '${CLUSTER}' failed on charts: ${{ steps.validate.outputs.failed-charts }}"
details: "Kubeconform for cluster '${{ env.CLUSTER }}' failed on charts: ${{ steps.validate.outputs.failed-charts }}"
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
actions: '[{"action": "view", "label": "View Run", "url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'
actions: '[{"action": "view", "label": "View Run", "url": "${{ vars.USER_URL }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'
image: true

View File

@@ -1,463 +0,0 @@
name: render-manifests-automerge
on:
workflow_dispatch:
# pull_request:
# branches:
# - main
# paths:
# - 'clusters/cl01tl/helm/**'
# types:
# - closed
env:
CLUSTER: cl01tl
BASE_BRANCH: manifests
BRANCH_NAME_BASE: auto/update-manifests-automerge
MAIN_DIR: /workspace/alexlebens/infrastructure/infrastructure
MANIFEST_DIR: /workspace/alexlebens/infrastructure/infrastructure-manifests
jobs:
render-manifests-automerge:
runs-on: ubuntu-js
if: ${{ (github.event.pull_request.merged == true) && (contains(github.event.pull_request.labels.*.name, 'automerge')) }}
steps:
- name: Checkout Main
uses: actions/checkout@v6
with:
path: infrastructure
fetch-depth: 0
- name: Checkout Manifests
uses: actions/checkout@v6
with:
ref: manifests
path: infrastructure-manifests
- name: Set up Helm
uses: azure/setup-helm@v4
with:
token: ${{ secrets.GITEA_TOKEN }}
version: v3.17.2 # Pending https://github.com/helm/helm/pull/30743
cache: true
- name: Configure Kubeconfig
uses: azure/k8s-set-context@v4
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }}
- name: Cache Helm Dependencies
uses: actions/cache@v5
with:
path: |
~/.cache/helm
~/.config/helm
key: helm-cache-${{ runner.os }}-${{ hashFiles('infrastructure/clusters/cl01tl/helm/**/Chart.yaml', 'infrastructure/clusters/cl01tl/helm/**/Chart.lock') }}
restore-keys: |
helm-cache-${{ runner.os }}-
- name: Prepare Manifest Branch
id: prepare-manifest-branch
run: |
cd ${MANIFEST_DIR}
BRANCH_NAME="${BRANCH_NAME_BASE}-$(date +%Y%m%d%H%M%S)"
echo ""
echo ">> Configure git to use gitea-bot as user ..."
git config user.name "gitea-bot"
git config user.email "gitea-bot@alexlebens.net"
echo ""
echo ">> Creating branch ..."
git checkout -b $BRANCH_NAME
echo "----"
echo "BRANCH_NAME=${BRANCH_NAME}" >> $GITEA_OUTPUT
- name: Check which Directories have Changes
id: check-dir-changes
run: |
cd "${MAIN_DIR}"
echo ""
echo ">> Checking for changes from HEAD^..HEAD ..."
# Extract the chart names from the git diff
RENDER_DIR=$(git diff --name-only HEAD^..HEAD | grep -E "^clusters/${CLUSTER}/helm/" | awk -F '/' '{print $4}' | sort -u || true)
if [ -n "${RENDER_DIR}" ]; then
echo ""
echo ">> Directories to Render:"
echo "${RENDER_DIR}"
echo "----"
echo "changes-detected=true" >> "$GITEA_OUTPUT"
echo "render-dir<<EOF" >> "$GITEA_OUTPUT"
echo "${RENDER_DIR}" >> "$GITEA_OUTPUT"
echo "EOF" >> "$GITEA_OUTPUT"
else
echo ""
echo ">> No chart changes detected"
echo "changes-detected=false" >> "$GITEA_OUTPUT"
fi
- name: Add Repositories
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd "${MAIN_DIR}"
echo ""
echo ">> Adding repositories for chart dependencies ..."
for DIR in ${RENDER_DIR}; do
helm dependency list --max-col-width 120 "${MAIN_DIR}/clusters/${CLUSTER}/helm/${DIR}" 2> /dev/null \
| tail -n +2 \
| awk 'NF > 0 { print $1, $3 }' \
| while read -r REPO_NAME REPO_URL; do
if [[ "${REPO_URL}" == oci://* ]]; then
echo ""
echo ">> Ignoring OCI repo: ${REPO_URL}"
elif [[ -n "${REPO_NAME}" && -n "${REPO_URL}" ]]; then
helm repo add "${REPO_NAME}" "${REPO_URL}"
fi
done || true
done
if helm repo list > /dev/null 2>&1; then
echo ""
echo ">> Update repository cache ..."
helm repo update
fi
echo "----"
- name: Remove Changed Manifest Files
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd "${MANIFEST_DIR}"
echo ""
echo ">> Remove manfiest files and rebuild from source ..."
for DIR in ${RENDER_DIR}; do
CHART_PATH=${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/${DIR}
echo "${CHART_PATH}"
rm -rf ${CHART_PATH}/*
done
echo "----"
- name: Render Helm Manifests
id: render-manifests
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MAIN_DIR}
echo ""
echo ">> Rendering Manifests ..."
render_chart() {
local DIR="$1"
local CHART_PATH="${MAIN_DIR}/clusters/${CLUSTER}/helm/${DIR}"
local CHART_NAME=$(basename "${CHART_PATH}")
echo ""
echo ">> Rendering ..."
echo ">> Chart: ${CHART_NAME}"
echo ">> Path: ${CHART_PATH}"
if [ -f "${CHART_PATH}/Chart.yaml" ]; then
local OUTPUT_FOLDER="${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/${CHART_NAME}/"
mkdir -p "${OUTPUT_FOLDER}"
cd "${CHART_PATH}"
echo ""
echo ">> Updating helm dependencies ..."
helm dependency update --skip-refresh > /dev/null
echo ""
echo ">> Linting helm chart ..."
helm lint --namespace "${CHART_NAME}" --quiet
local NAMESPACE="${CHART_NAME}"
case "${CHART_NAME}" in
"stack")
NAMESPACE="argocd"
echo ""
echo ">> Special Rendering into 'argocd' namespace ..."
;;
"cilium" | "coredns" | "metrics-server" | "prometheus-operator-crds")
NAMESPACE="kube-system"
echo ""
echo ">> Special Rendering for ${CHART_NAME} into 'kube-system' namespace ..."
;;
*)
echo ""
echo ">> Standard Rendering for ${CHART_NAME} ..."
esac
echo ""
echo ">> Formating rendered template ..."
local TEMPLATE
TEMPLATE=$(helm template "${CHART_NAME}" ./ --namespace "${NAMESPACE}" --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
# Format and split rendered template
echo "${TEMPLATE}" | yq '... comments=""' | yq 'select(. != null)' | yq -s '"'"${OUTPUT_FOLDER}"'" + .kind + "-" + .metadata.name + ".yaml"'
# Strip comments again to ensure formatting correctness
for file in "$OUTPUT_FOLDER"/*; do
yq -i '... comments=""' $file
done
echo ""
echo ">> Manifests for ${CHART_NAME} rendered to ${OUTPUT_FOLDER}:"
ls $OUTPUT_FOLDER
echo ""
else
echo ""
echo ">> Directory ${CHART_PATH} does not contain a Chart.yaml. Skipping ..."
echo ""
fi
}
export -f render_chart
export MAIN_DIR CLUSTER MANIFEST_DIR
# Run rendering in parallel
for DIR in ${RENDER_DIR}; do
echo "${DIR}"
done | xargs -n 1 -P 4 -I {} bash -c 'render_chart "$@"' _ {}
echo "----"
- name: Check for Changes
id: check-changes
if: steps.check-dir-changes.outputs.changes-detected == 'true'
run: |
cd "${MANIFEST_DIR}"
GIT_CHANGES=$(git status --porcelain)
if [ -n "${GIT_CHANGES}" ]; then
echo ""
echo ">> Changes detected"
git status --porcelain
echo "changes-detected=true" >> $GITEA_OUTPUT
else
echo ""
echo ">> No changes detected, skipping PR creation"
fi
echo "----"
- name: Commit and Push Changes
id: commit-push
if: steps.check-changes.outputs.changes-detected == 'true'
env:
BRANCH_NAME: ${{ steps.prepare-manifest-branch.outputs.BRANCH_NAME }}
run: |
cd "${MANIFEST_DIR}"
echo ""
echo ">> Commiting changes to ${BRANCH_NAME} ..."
git add .
git commit -m "chore: Update manifests after automerge"
REPO_URL="${{ secrets.REPO_URL }}/${{ gitea.repository }}"
echo ""
echo ">> Pushing changes to ${REPO_URL} ..."
git push -u "https://oauth2:${{ secrets.BOT_TOKEN }}@${REPO_URL#*://}" "${BRANCH_NAME}"
echo "----"
echo "push=true" >> "$GITEA_OUTPUT"
- name: Create Pull Request
id: create-pull-request
if: steps.commit-push.outputs.push == 'true'
env:
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
GITEA_URL: ${{ secrets.REPO_URL }}
BRANCH_NAME: ${{ steps.prepare-manifest-branch.outputs.BRANCH_NAME }}
run: |
cd ${MANIFEST_DIR}
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls"
PAYLOAD=$( jq -n \
--arg head "${BRANCH_NAME}" \
--arg base "${BASE_BRANCH}" \
--arg title "Automated Manifest Update - Automerge" \
--arg body "This PR contains newly rendered Kubernetes manifests automatically generated by the CI workflow. This is expected to be automerged." \
'{head: $head, base: $base, title: $title, body: $body}' )
echo ">> Creating PR from branch ${BRANCH_NAME} into ${BASE_BRANCH}"
echo ">> With Endpoint of:"
echo "$API_ENDPOINT"
echo ">> With Payload of:"
echo "$PAYLOAD"
HTTP_STATUS=$(
curl -X POST \
--silent \
--write-out '%{http_code}' \
--output response_body.json \
--dump-header response_headers.txt \
--data "$PAYLOAD" \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"$API_ENDPOINT" 2> response_errors.txt
)
echo ">> HTTP Status Code: $HTTP_STATUS"
echo ">> Response Output ..."
echo "----"
cat response_body.json
echo "----"
cat response_headers.txt
echo "----"
cat response_errors.txt
echo "----"
if [ "$HTTP_STATUS" == "201" ]; then
echo ">> Pull Request created successfully!"
PR_URL=$(cat response_body.json | jq -r .html_url)
echo ">> Pull Request URL: $PR_URL"
echo "pull-request-url=${PR_URL}" >> $GITEA_OUTPUT
PR_NUMBER=$(cat response_body.json | jq -r .number)
echo ">> Pull Request Number: $PR_NUMBER"
echo "pull-request-number=${PR_NUMBER}" >> $GITEA_OUTPUT
echo "pull-request-operation=created" >> $GITEA_OUTPUT
elif [ "$HTTP_STATUS" == "422" ]; then
echo ">> Failed to create PR (HTTP 422: Unprocessable Entity), PR may already exist"
elif [ "$HTTP_STATUS" == "409" ]; then
echo ">> Failed to create PR (HTTP 409: Conflict), PR already exists"
else
echo ">> Failed to create PR, HTTP status code: $HTTP_STATUS"
exit 1
fi
echo "----"
- name: Merge Changes
id: merge-changes
if: steps.commit-push.outputs.push == 'true'
env:
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
GITEA_URL: ${{ secrets.REPO_URL }}
BRANCH_NAME: ${{ steps.prepare-manifest-branch.outputs.BRANCH_NAME }}
PR_NUMBER: ${{ steps.create-pull-request.outputs.pull-request-number }}
run: |
cd ${MANIFEST_DIR}
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls/${PR_NUMBER}/merge"
PAYLOAD=$( jq -n \
--arg Do "merge" \
'{Do: $Do}' )
echo ">> Merging PR with ID: ${PR_NUMBER}"
echo ">> With Endpoint of:"
echo "$API_ENDPOINT"
echo ">> With Payload of:"
echo "$PAYLOAD"
HTTP_STATUS=$(
curl -X POST \
--silent \
--write-out '%{http_code}' \
--output response_body.json \
--dump-header response_headers.txt \
--data "$PAYLOAD" \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"$API_ENDPOINT" 2> response_errors.txt
)
echo ">> HTTP Status Code: $HTTP_STATUS"
echo ">> Response Output ..."
echo "----"
cat response_body.json
echo "----"
cat response_headers.txt
echo "----"
cat response_errors.txt
echo "----"
if [ "$HTTP_STATUS" == "200" ]; then
echo ">> Pull Request merged successfully!"
echo "pull-request-operation=merged" >> $GITEA_OUTPUT
else
echo ">> Failed to create PR, HTTP status code: $HTTP_STATUS"
echo "pull-request-operation=failed" >> $GITEA_OUTPUT
exit 1
fi
echo "----"
- name: Cleanup Branch
if: failure()
env:
BRANCH_NAME: ${{ steps.prepare-manifest-branch.outputs.BRANCH_NAME }}
run: |
cd ${MANIFEST_DIR}
echo ">> Removing branch: ${BRANCH_NAME}"
git push origin --delete ${BRANCH_NAME}
echo "----"
- name: ntfy Merged
uses: niniyas/ntfy-action@master
if: steps.merge-changes.outputs.pull-request-operation == 'merged'
with:
url: "${{ secrets.NTFY_URL }}"
topic: "${{ secrets.NTFY_TOPIC }}"
title: "Manifest Render PR Merged - Infrastructure"
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,successfully,completed
details: "Automerge Manifest rendering for Infrastructure!"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "Open Gitea", "url": "${{ steps.create-pull-request.outputs.pull-request-url }}", "clear": true}]'
- name: ntfy Failed
uses: niniyas/ntfy-action@master
if: failure()
with:
url: "${{ secrets.NTFY_URL }}"
topic: "${{ secrets.NTFY_TOPIC }}"
title: "Manifest Render Failure - Infrastructure"
priority: 4
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,failed
details: "Automerge Manifest rendering for Infrastructure has failed!"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/infrastructure/actions?workflow=render-manifests-automerge.yaml", "clear": true}]'
image: true

View File

@@ -1,445 +0,0 @@
name: render-manifests-dispatch
on:
workflow_dispatch:
# schedule:
# - cron: '0 15 * * *'
# workflow_dispatch:
env:
CLUSTER: cl01tl
BASE_BRANCH: manifests
BRANCH_NAME: auto/update-manifests
ASSIGNEE: alexlebens
MAIN_DIR: /workspace/alexlebens/infrastructure/infrastructure
MANIFEST_DIR: /workspace/alexlebens/infrastructure/infrastructure-manifests
jobs:
render-manifests-dispatch:
runs-on: ubuntu-js
steps:
- name: Checkout Main
uses: actions/checkout@v6
with:
path: infrastructure
fetch-depth: 0
- name: Checkout Manifests
uses: actions/checkout@v6
with:
ref: manifests
path: infrastructure-manifests
- name: Set up Helm
uses: azure/setup-helm@v4
with:
token: ${{ secrets.GITEA_TOKEN }}
version: v3.17.2 # Pending https://github.com/helm/helm/pull/30743
cache: true
- name: Configure Kubeconfig
uses: azure/k8s-set-context@v4
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }}
- name: Cache Helm Dependencies
uses: actions/cache@v5
with:
path: |
~/.cache/helm
~/.config/helm
key: helm-cache-${{ runner.os }}-${{ hashFiles('infrastructure/clusters/cl01tl/helm/**/Chart.yaml', 'infrastructure/clusters/cl01tl/helm/**/Chart.lock') }}
restore-keys: |
helm-cache-${{ runner.os }}-
- name: Prepare Manifest Branch
run: |
cd "${MANIFEST_DIR}"
echo ""
echo ">> Configure git to use gitea-bot as user ..."
git config user.name "gitea-bot"
git config user.email "gitea-bot@alexlebens.net"
echo ""
echo ">> Checking if PR branch exists ..."
if git ls-remote --exit-code --heads origin "${BRANCH_NAME}" > /dev/null 2>&1; then
echo ""
echo ">> Branch '${BRANCH_NAME}' exists, pulling changes ..."
git fetch origin "${BRANCH_NAME}"
git checkout "${BRANCH_NAME}"
git pull --rebase
else
echo ""
echo ">> Branch '${BRANCH_NAME}' does not exist, creating ..."
git checkout -b "${BRANCH_NAME}"
fi
echo "----"
- name: Check which Directories have Changes
id: check-dir-changes
run: |
cd "${MAIN_DIR}"
echo ""
echo ">> Triggered on dispatch, will check all paths ..."
# Extract names of charts
RENDER_DIR=$(find "clusters/${CLUSTER}/helm" -mindepth 1 -maxdepth 1 -type d -exec basename {} \; | sort -u)
if [ -n "${RENDER_DIR}" ]; then
echo ""
echo ">> Directories to Render:"
echo "${RENDER_DIR}"
echo "----"
echo "changes-detected=true" >> "$GITEA_OUTPUT"
echo "render-dir<<EOF" >> "$GITEA_OUTPUT"
echo "${RENDER_DIR}" >> "$GITEA_OUTPUT"
echo "EOF" >> "$GITEA_OUTPUT"
else
echo ">> No directories found"
echo "changes-detected=false" >> "$GITEA_OUTPUT"
fi
- name: Add Repositories
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd "${MAIN_DIR}"
echo ""
echo ">> Adding repositories for chart dependencies ..."
for DIR in ${RENDER_DIR}; do
helm dependency list --max-col-width 120 "${MAIN_DIR}/clusters/${CLUSTER}/helm/${DIR}" 2> /dev/null \
| tail -n +2 \
| awk 'NF > 0 { print $1, $3 }' \
| while read -r REPO_NAME REPO_URL; do
if [[ "${REPO_URL}" == oci://* ]]; then
echo ""
echo ">> Ignoring OCI repo: ${REPO_URL}"
elif [[ -n "${REPO_NAME}" && -n "${REPO_URL}" ]]; then
helm repo add "${REPO_NAME}" "${REPO_URL}"
fi
done || true
done
if helm repo list > /dev/null 2>&1; then
echo ""
echo ">> Update repository cache ..."
helm repo update
fi
echo "----"
- name: Remove Changed Manifest Files
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd "${MANIFEST_DIR}"
echo ""
echo ">> Remove manfiest files and rebuild from source ..."
for DIR in ${RENDER_DIR}; do
CHART_PATH=${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/${DIR}
echo "${CHART_PATH}"
rm -rf ${CHART_PATH}/*
done
echo "----"
- name: Render Helm Manifests
id: render-manifests
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MAIN_DIR}
echo ""
echo ">> Rendering Manifests ..."
render_chart() {
local DIR="$1"
local CHART_PATH="${MAIN_DIR}/clusters/${CLUSTER}/helm/${DIR}"
local CHART_NAME=$(basename "${CHART_PATH}")
echo ""
echo ">> Rendering ..."
echo ">> Chart: ${CHART_NAME}"
echo ">> Path: ${CHART_PATH}"
if [ -f "${CHART_PATH}/Chart.yaml" ]; then
local OUTPUT_FOLDER="${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/${CHART_NAME}/"
mkdir -p "${OUTPUT_FOLDER}"
cd "${CHART_PATH}"
echo ""
echo ">> Updating helm dependencies ..."
helm dependency update --skip-refresh > /dev/null
echo ""
echo ">> Linting helm chart ..."
helm lint --namespace "${CHART_NAME}" --quiet
local NAMESPACE="${CHART_NAME}"
case "${CHART_NAME}" in
"stack")
NAMESPACE="argocd"
echo ""
echo ">> Special Rendering into 'argocd' namespace ..."
;;
"cilium" | "coredns" | "metrics-server" | "prometheus-operator-crds")
NAMESPACE="kube-system"
echo ""
echo ">> Special Rendering for ${CHART_NAME} into 'kube-system' namespace ..."
;;
*)
echo ""
echo ">> Standard Rendering for ${CHART_NAME} ..."
esac
echo ""
echo ">> Formating rendered template ..."
local TEMPLATE
TEMPLATE=$(helm template "${CHART_NAME}" ./ --namespace "${NAMESPACE}" --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
# Format and split rendered template
echo "${TEMPLATE}" | yq '... comments=""' | yq 'select(. != null)' | yq -s '"'"${OUTPUT_FOLDER}"'" + .kind + "-" + .metadata.name + ".yaml"'
# Strip comments again to ensure formatting correctness
for file in "$OUTPUT_FOLDER"/*; do
yq -i '... comments=""' $file
done
echo ""
echo ">> Manifests for ${CHART_NAME} rendered to ${OUTPUT_FOLDER}:"
ls $OUTPUT_FOLDER
echo ""
else
echo ""
echo ">> Directory ${CHART_PATH} does not contain a Chart.yaml. Skipping ..."
echo ""
fi
}
export -f render_chart
export MAIN_DIR CLUSTER MANIFEST_DIR
# Run rendering in parallel
for DIR in ${RENDER_DIR}; do
echo "${DIR}"
done | xargs -n 1 -P 4 -I {} bash -c 'render_chart "$@"' _ {}
echo "----"
- name: Check for Changes
id: check-changes
if: steps.check-dir-changes.outputs.changes-detected == 'true'
run: |
cd "${MANIFEST_DIR}"
GIT_CHANGES=$(git status --porcelain)
if [ -n "${GIT_CHANGES}" ]; then
echo ""
echo ">> Changes detected"
git status --porcelain
echo "changes-detected=true" >> $GITEA_OUTPUT
else
echo ""
echo ">> No changes detected, skipping PR creation"
fi
echo "----"
- name: Commit and Push Changes
id: commit-push
if: steps.check-changes.outputs.changes-detected == 'true'
run: |
cd "${MANIFEST_DIR}"
echo ""
echo ">> Commiting changes to ${BRANCH_NAME} ..."
git add .
git commit -m "chore: Update manifests after change"
REPO_URL="${{ secrets.REPO_URL }}/${{ gitea.repository }}"
echo ""
echo ">> Pushing changes to ${REPO_URL} ..."
git push -u "https://oauth2:${{ secrets.BOT_TOKEN }}@${REPO_URL#*://}" "${BRANCH_NAME}"
echo "----"
echo "HEAD_BRANCH=${BRANCH_NAME}" >> "$GITEA_OUTPUT"
echo "push=true" >> "$GITEA_OUTPUT"
- name: Check for Pull Request
id: check-for-pull-requst
if: steps.commit-push.outputs.push == 'true'
env:
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
GITEA_URL: ${{ secrets.REPO_URL }}
HEAD_BRANCH: ${{ steps.commit-push.outputs.HEAD_BRANCH }}
run: |
cd ${MANIFEST_DIR}
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls?base_branch=${BASE_BRANCH}&state=open&page=1"
echo ">> Checking if PR from branch ${HEAD_BRANCH} into ${BASE_BRANCH}"
echo ">> With Endpoint of:"
echo "$API_ENDPOINT"
HTTP_STATUS=$(
curl -X GET \
--silent \
--write-out '%{http_code}' \
--output response_body.json \
--dump-header response_headers.txt \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"$API_ENDPOINT" 2> response_errors.txt
)
echo ">> HTTP Status Code: $HTTP_STATUS"
echo ">> Response Output ..."
echo "----"
cat response_body.json
echo "----"
cat response_headers.txt
echo "----"
cat response_errors.txt
echo "----"
if [ "$HTTP_STATUS" == "200" ] && [ "$(cat response_body.json | jq -r .[0].state)" == "open" ]; then
echo ">> Pull Request has been found open, will update"
PR_INDEX=$(cat response_body.json | jq -r .[0].number)
echo "pull-request-exists=${PR_INDEX}" >> $GITEA_OUTPUT
echo "pull-request-index=true" >> $GITEA_OUTPUT
elif [ "$HTTP_STATUS" == "200" ] && [ "$(cat response_body.json | jq -r .[0].state)" == "closed" ]; then
echo ">> Pull Request found, but was closed"
echo "pull-request-exists=false" >> $GITEA_OUTPUT
else
echo ">> Pull Request not found"
echo "pull-request-exists=false" >> $GITEA_OUTPUT
fi
echo "----"
- name: Create Pull Request
id: create-pull-request
if: steps.commit-push.outputs.push == 'true' && steps.check-for-pull-requst.outputs.pull-request-exists == 'false'
env:
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
GITEA_URL: ${{ secrets.REPO_URL }}
HEAD_BRANCH: ${{ steps.commit-push.outputs.HEAD_BRANCH }}
run: |
cd ${MANIFEST_DIR}
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls"
PAYLOAD=$( jq -n \
--arg head "${HEAD_BRANCH}" \
--arg base "${BASE_BRANCH}" \
--arg assignee "${ASSIGNEE}" \
--arg title "Automated Manifest Update" \
--arg body "This PR contains newly rendered Kubernetes manifests automatically generated by the CI workflow." \
'{head: $head, base: $base, assignee: $assignee, title: $title, body: $body}' )
echo ">> Creating PR from branch ${HEAD_BRANCH} into ${BASE_BRANCH}"
echo ">> With Endpoint of:"
echo "$API_ENDPOINT"
echo ">> With Payload of:"
echo "$PAYLOAD"
HTTP_STATUS=$(
curl -X POST \
--silent \
--write-out '%{http_code}' \
--output response_body.json \
--dump-header response_headers.txt \
--data "$PAYLOAD" \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"$API_ENDPOINT" 2> response_errors.txt
)
echo ">> HTTP Status Code: $HTTP_STATUS"
echo ">> Response Output ..."
echo "----"
cat response_body.json
echo "----"
cat response_headers.txt
echo "----"
cat response_errors.txt
echo "----"
if [ "$HTTP_STATUS" == "201" ]; then
echo ">> Pull Request created successfully!"
PR_URL=$(cat response_body.json | jq -r .html_url)
echo "pull-request-url=${PR_URL}" >> $GITEA_OUTPUT
PR_ID=$(cat response_body.json | jq -r .id)
echo "pull-request-id=${PR_ID}" >> $GITEA_OUTPUT
echo "pull-request-operation=created" >> $GITEA_OUTPUT
elif [ "$HTTP_STATUS" == "422" ]; then
echo ">> Failed to create PR (HTTP 422: Unprocessable Entity), PR may already exist"
elif [ "$HTTP_STATUS" == "409" ]; then
echo ">> Failed to create PR (HTTP 409: Conflict), PR already exists"
else
echo ">> Failed to create PR, HTTP status code: $HTTP_STATUS"
exit 1
fi
echo "----"
- name: ntfy Created
uses: niniyas/ntfy-action@master
if: steps.create-pull-request.outputs.pull-request-operation == 'created'
with:
url: "${{ secrets.NTFY_URL }}"
topic: "${{ secrets.NTFY_TOPIC }}"
title: "Manifest Render PR Created - Infrastructure"
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,successfully,completed
details: "Manifest rendering for Infrastructure has created a new Pull Request with ID: ${{ steps.create-pull-request.outputs.pull-request-id }}!"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "Open Gitea", "url": "${{ steps.create-pull-request.outputs.pull-request-url }}", "clear": true}]'
- name: ntfy Failed
uses: niniyas/ntfy-action@master
if: failure()
with:
url: "${{ secrets.NTFY_URL }}"
topic: "${{ secrets.NTFY_TOPIC }}"
title: "Manifest Render Failure - Infrastructure"
priority: 4
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,failed
details: "Manifest rendering for Infrastructure has failed!"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/infrastructure/actions?workflow=render-manifests.yaml", "clear": true}]'
image: true

View File

@@ -1,451 +0,0 @@
name: render-manifests-merge
on:
workflow_dispatch:
# pull_request:
# branches:
# - main
# paths:
# - 'clusters/cl01tl/helm/**'
# types:
# - closed
env:
CLUSTER: cl01tl
BASE_BRANCH: manifests
BRANCH_NAME: auto/update-manifests
ASSIGNEE: alexlebens
MAIN_DIR: /workspace/alexlebens/infrastructure/infrastructure
MANIFEST_DIR: /workspace/alexlebens/infrastructure/infrastructure-manifests
jobs:
render-manifests-merge:
runs-on: ubuntu-js
if: ${{ (github.event.pull_request.merged == true) && !(contains(github.event.pull_request.labels.*.name, 'automerge')) }}
steps:
- name: Checkout Main
uses: actions/checkout@v6
with:
path: infrastructure
fetch-depth: 0
- name: Checkout Manifests
uses: actions/checkout@v6
with:
ref: manifests
path: infrastructure-manifests
- name: Set up Helm
uses: azure/setup-helm@v4
with:
token: ${{ secrets.GITEA_TOKEN }}
version: v3.17.2 # Pending https://github.com/helm/helm/pull/30743
cache: true
- name: Configure Kubeconfig
uses: azure/k8s-set-context@v4
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }}
- name: Cache Helm Dependencies
uses: actions/cache@v5
with:
path: |
~/.cache/helm
~/.config/helm
key: helm-cache-${{ runner.os }}-${{ hashFiles('infrastructure/clusters/cl01tl/helm/**/Chart.yaml', 'infrastructure/clusters/cl01tl/helm/**/Chart.lock') }}
restore-keys: |
helm-cache-${{ runner.os }}-
- name: Prepare Manifest Branch
run: |
cd "${MANIFEST_DIR}"
echo ""
echo ">> Configure git to use gitea-bot as user ..."
git config user.name "gitea-bot"
git config user.email "gitea-bot@alexlebens.net"
echo ""
echo ">> Checking if PR branch exists ..."
if git ls-remote --exit-code --heads origin "${BRANCH_NAME}" > /dev/null 2>&1; then
echo ""
echo ">> Branch '${BRANCH_NAME}' exists, pulling changes ..."
git fetch origin "${BRANCH_NAME}"
git checkout "${BRANCH_NAME}"
git pull --rebase
else
echo ""
echo ">> Branch '${BRANCH_NAME}' does not exist, creating ..."
git checkout -b "${BRANCH_NAME}"
fi
echo "----"
- name: Check which Directories have Changes
id: check-dir-changes
run: |
cd "${MAIN_DIR}"
echo ""
echo ">> Checking for changes from HEAD^..HEAD ..."
# Extract the chart names from the git diff
RENDER_DIR=$(git diff --name-only HEAD^..HEAD | grep -E "^clusters/${CLUSTER}/helm/" | awk -F '/' '{print $4}' | sort -u || true)
if [ -n "${RENDER_DIR}" ]; then
echo ""
echo ">> Directories to Render:"
echo "${RENDER_DIR}"
echo "----"
echo "changes-detected=true" >> "$GITEA_OUTPUT"
echo "render-dir<<EOF" >> "$GITEA_OUTPUT"
echo "${RENDER_DIR}" >> "$GITEA_OUTPUT"
echo "EOF" >> "$GITEA_OUTPUT"
else
echo ""
echo ">> No chart changes detected"
echo "changes-detected=false" >> "$GITEA_OUTPUT"
fi
- name: Add Repositories
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd "${MAIN_DIR}"
echo ""
echo ">> Adding repositories for chart dependencies ..."
for DIR in ${RENDER_DIR}; do
helm dependency list --max-col-width 120 "${MAIN_DIR}/clusters/${CLUSTER}/helm/${DIR}" 2> /dev/null \
| tail -n +2 \
| awk 'NF > 0 { print $1, $3 }' \
| while read -r REPO_NAME REPO_URL; do
if [[ "${REPO_URL}" == oci://* ]]; then
echo ""
echo ">> Ignoring OCI repo: ${REPO_URL}"
elif [[ -n "${REPO_NAME}" && -n "${REPO_URL}" ]]; then
helm repo add "${REPO_NAME}" "${REPO_URL}"
fi
done || true
done
if helm repo list > /dev/null 2>&1; then
echo ""
echo ">> Update repository cache ..."
helm repo update
fi
echo "----"
- name: Remove Changed Manifest Files
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd "${MANIFEST_DIR}"
echo ""
echo ">> Remove manfiest files and rebuild from source ..."
for DIR in ${RENDER_DIR}; do
CHART_PATH=${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/${DIR}
echo "${CHART_PATH}"
rm -rf ${CHART_PATH}/*
done
echo "----"
- name: Render Helm Manifests
id: render-manifests
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MAIN_DIR}
echo ""
echo ">> Rendering Manifests ..."
render_chart() {
local DIR="$1"
local CHART_PATH="${MAIN_DIR}/clusters/${CLUSTER}/helm/${DIR}"
local CHART_NAME=$(basename "${CHART_PATH}")
echo ""
echo ">> Rendering ..."
echo ">> Chart: ${CHART_NAME}"
echo ">> Path: ${CHART_PATH}"
if [ -f "${CHART_PATH}/Chart.yaml" ]; then
local OUTPUT_FOLDER="${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/${CHART_NAME}/"
mkdir -p "${OUTPUT_FOLDER}"
cd "${CHART_PATH}"
echo ""
echo ">> Updating helm dependencies ..."
helm dependency update --skip-refresh > /dev/null
echo ""
echo ">> Linting helm chart ..."
helm lint --namespace "${CHART_NAME}" --quiet
local NAMESPACE="${CHART_NAME}"
case "${CHART_NAME}" in
"stack")
NAMESPACE="argocd"
echo ""
echo ">> Special Rendering into 'argocd' namespace ..."
;;
"cilium" | "coredns" | "metrics-server" | "prometheus-operator-crds")
NAMESPACE="kube-system"
echo ""
echo ">> Special Rendering for ${CHART_NAME} into 'kube-system' namespace ..."
;;
*)
echo ""
echo ">> Standard Rendering for ${CHART_NAME} ..."
esac
echo ""
echo ">> Formating rendered template ..."
local TEMPLATE
TEMPLATE=$(helm template "${CHART_NAME}" ./ --namespace "${NAMESPACE}" --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
# Format and split rendered template
echo "${TEMPLATE}" | yq '... comments=""' | yq 'select(. != null)' | yq -s '"'"${OUTPUT_FOLDER}"'" + .kind + "-" + .metadata.name + ".yaml"'
# Strip comments again to ensure formatting correctness
for file in "$OUTPUT_FOLDER"/*; do
yq -i '... comments=""' $file
done
echo ""
echo ">> Manifests for ${CHART_NAME} rendered to ${OUTPUT_FOLDER}:"
ls $OUTPUT_FOLDER
echo ""
else
echo ""
echo ">> Directory ${CHART_PATH} does not contain a Chart.yaml. Skipping ..."
echo ""
fi
}
export -f render_chart
export MAIN_DIR CLUSTER MANIFEST_DIR
# Run rendering in parallel
for DIR in ${RENDER_DIR}; do
echo "${DIR}"
done | xargs -n 1 -P 4 -I {} bash -c 'render_chart "$@"' _ {}
echo "----"
- name: Check for Changes
id: check-changes
if: steps.check-dir-changes.outputs.changes-detected == 'true'
run: |
cd "${MANIFEST_DIR}"
GIT_CHANGES=$(git status --porcelain)
if [ -n "${GIT_CHANGES}" ]; then
echo ""
echo ">> Changes detected"
git status --porcelain
echo "changes-detected=true" >> $GITEA_OUTPUT
else
echo ""
echo ">> No changes detected, skipping PR creation"
fi
echo "----"
- name: Commit and Push Changes
id: commit-push
if: steps.check-changes.outputs.changes-detected == 'true'
run: |
cd "${MANIFEST_DIR}"
echo ""
echo ">> Commiting changes to ${BRANCH_NAME} ..."
git add .
git commit -m "chore: Update manifests after change"
REPO_URL="${{ secrets.REPO_URL }}/${{ gitea.repository }}"
echo ""
echo ">> Pushing changes to ${REPO_URL} ..."
git push -u "https://oauth2:${{ secrets.BOT_TOKEN }}@${REPO_URL#*://}" "${BRANCH_NAME}"
echo "----"
echo "HEAD_BRANCH=${BRANCH_NAME}" >> "$GITEA_OUTPUT"
echo "push=true" >> "$GITEA_OUTPUT"
- name: Check for Pull Request
id: check-for-pull-requst
if: steps.commit-push.outputs.push == 'true'
env:
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
GITEA_URL: ${{ secrets.REPO_URL }}
HEAD_BRANCH: ${{ steps.commit-push.outputs.HEAD_BRANCH }}
run: |
cd ${MANIFEST_DIR}
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls?base_branch=${BASE_BRANCH}&state=open&page=1"
echo ">> Checking if PR from branch ${HEAD_BRANCH} into ${BASE_BRANCH}"
echo ">> With Endpoint of:"
echo "$API_ENDPOINT"
HTTP_STATUS=$(
curl -X GET \
--silent \
--write-out '%{http_code}' \
--output response_body.json \
--dump-header response_headers.txt \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"$API_ENDPOINT" 2> response_errors.txt
)
echo ">> HTTP Status Code: $HTTP_STATUS"
echo ">> Response Output ..."
echo "----"
cat response_body.json
echo "----"
cat response_headers.txt
echo "----"
cat response_errors.txt
echo "----"
if [ "$HTTP_STATUS" == "200" ] && [ "$(cat response_body.json | jq -r .[0].state)" == "open" ]; then
echo ">> Pull Request has been found open, will update"
PR_INDEX=$(cat response_body.json | jq -r .[0].number)
echo "pull-request-exists=${PR_INDEX}" >> $GITEA_OUTPUT
echo "pull-request-index=true" >> $GITEA_OUTPUT
elif [ "$HTTP_STATUS" == "200" ] && [ "$(cat response_body.json | jq -r .[0].state)" == "closed" ]; then
echo ">> Pull Request found, but was closed"
echo "pull-request-exists=false" >> $GITEA_OUTPUT
else
echo ">> Pull Request not found"
echo "pull-request-exists=false" >> $GITEA_OUTPUT
fi
echo "----"
- name: Create Pull Request
id: create-pull-request
if: steps.commit-push.outputs.push == 'true' && steps.check-for-pull-requst.outputs.pull-request-exists == 'false'
env:
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
GITEA_URL: ${{ secrets.REPO_URL }}
HEAD_BRANCH: ${{ steps.commit-push.outputs.HEAD_BRANCH }}
run: |
cd ${MANIFEST_DIR}
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls"
PAYLOAD=$( jq -n \
--arg head "${HEAD_BRANCH}" \
--arg base "${BASE_BRANCH}" \
--arg assignee "${ASSIGNEE}" \
--arg title "Automated Manifest Update" \
--arg body "This PR contains newly rendered Kubernetes manifests automatically generated by the CI workflow." \
'{head: $head, base: $base, assignee: $assignee, title: $title, body: $body}' )
echo ">> Creating PR from branch ${HEAD_BRANCH} into ${BASE_BRANCH}"
echo ">> With Endpoint of:"
echo "$API_ENDPOINT"
echo ">> With Payload of:"
echo "$PAYLOAD"
HTTP_STATUS=$(
curl -X POST \
--silent \
--write-out '%{http_code}' \
--output response_body.json \
--dump-header response_headers.txt \
--data "$PAYLOAD" \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"$API_ENDPOINT" 2> response_errors.txt
)
echo ">> HTTP Status Code: $HTTP_STATUS"
echo ">> Response Output ..."
echo "----"
cat response_body.json
echo "----"
cat response_headers.txt
echo "----"
cat response_errors.txt
echo "----"
if [ "$HTTP_STATUS" == "201" ]; then
echo ">> Pull Request created successfully!"
PR_URL=$(cat response_body.json | jq -r .html_url)
echo "pull-request-url=${PR_URL}" >> $GITEA_OUTPUT
PR_ID=$(cat response_body.json | jq -r .id)
echo "pull-request-id=${PR_ID}" >> $GITEA_OUTPUT
echo "pull-request-operation=created" >> $GITEA_OUTPUT
elif [ "$HTTP_STATUS" == "422" ]; then
echo ">> Failed to create PR (HTTP 422: Unprocessable Entity), PR may already exist"
elif [ "$HTTP_STATUS" == "409" ]; then
echo ">> Failed to create PR (HTTP 409: Conflict), PR already exists"
else
echo ">> Failed to create PR, HTTP status code: $HTTP_STATUS"
exit 1
fi
echo "----"
- name: ntfy Created
uses: niniyas/ntfy-action@master
if: steps.create-pull-request.outputs.pull-request-operation == 'created'
with:
url: "${{ secrets.NTFY_URL }}"
topic: "${{ secrets.NTFY_TOPIC }}"
title: "Manifest Render PR Created - Infrastructure"
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,successfully,completed
details: "Manifest rendering for Infrastructure has created a new Pull Request with ID: ${{ steps.create-pull-request.outputs.pull-request-id }}!"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "Open Gitea", "url": "${{ steps.create-pull-request.outputs.pull-request-url }}", "clear": true}]'
- name: ntfy Failed
uses: niniyas/ntfy-action@master
if: failure()
with:
url: "${{ secrets.NTFY_URL }}"
topic: "${{ secrets.NTFY_TOPIC }}"
title: "Manifest Render Failure - Infrastructure"
priority: 4
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,failed
details: "Manifest rendering for Infrastructure has failed!"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/infrastructure/actions?workflow=render-manifests.yaml", "clear": true}]'
image: true

View File

@@ -1,449 +0,0 @@
name: render-manifests-push
on:
workflow_dispatch:
# push:
# branches:
# - main
# paths:
# - 'clusters/cl01tl/helm/**'
env:
CLUSTER: cl01tl
BASE_BRANCH: manifests
BRANCH_NAME: auto/update-manifests
ASSIGNEE: alexlebens
MAIN_DIR: /workspace/alexlebens/infrastructure/infrastructure
MANIFEST_DIR: /workspace/alexlebens/infrastructure/infrastructure-manifests
jobs:
render-manifests-push:
runs-on: ubuntu-js
if: gitea.event.commits[0].author.username != 'renovate-bot'
steps:
- name: Checkout Main
uses: actions/checkout@v6
with:
path: infrastructure
fetch-depth: 0
- name: Checkout Manifests
uses: actions/checkout@v6
with:
ref: manifests
path: infrastructure-manifests
- name: Set up Helm
uses: azure/setup-helm@v4
with:
token: ${{ secrets.GITEA_TOKEN }}
version: v3.17.2 # Pending https://github.com/helm/helm/pull/30743
cache: true
- name: Configure Kubeconfig
uses: azure/k8s-set-context@v4
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }}
- name: Cache Helm Dependencies
uses: actions/cache@v5
with:
path: |
~/.cache/helm
~/.config/helm
key: helm-cache-${{ runner.os }}-${{ hashFiles('infrastructure/clusters/cl01tl/helm/**/Chart.yaml', 'infrastructure/clusters/cl01tl/helm/**/Chart.lock') }}
restore-keys: |
helm-cache-${{ runner.os }}-
- name: Prepare Manifest Branch
run: |
cd "${MANIFEST_DIR}"
echo ""
echo ">> Configure git to use gitea-bot as user ..."
git config user.name "gitea-bot"
git config user.email "gitea-bot@alexlebens.net"
echo ">> Checking if PR branch exists ..."
if git ls-remote --exit-code --heads origin "${BRANCH_NAME}" > /dev/null 2>&1; then
echo ""
echo ">> Branch '${BRANCH_NAME}' exists, pulling changes ..."
git fetch origin "${BRANCH_NAME}"
git checkout "${BRANCH_NAME}"
git pull --rebase
else
echo ""
echo ">> Branch '${BRANCH_NAME}' does not exist, creating ..."
git checkout -b "${BRANCH_NAME}"
fi
echo "----"
- name: Check which Directories have Changes
id: check-dir-changes
run: |
cd "${MAIN_DIR}"
echo ""
echo ">> Checking for changes ..."
# Extract the chart names from the git diff
RENDER_DIR=$(git diff --name-only ${{ gitea.event.before }}..HEAD | grep -E "^clusters/${CLUSTER}/helm/" | awk -F '/' '{print $4}' | sort -u || true)
if [ -n "${RENDER_DIR}" ]; then
echo ""
echo ">> Directories to Render:"
echo "${RENDER_DIR}"
echo "----"
echo "changes-detected=true" >> "$GITEA_OUTPUT"
echo "render-dir<<EOF" >> "$GITEA_OUTPUT"
echo "${RENDER_DIR}" >> "$GITEA_OUTPUT"
echo "EOF" >> "$GITEA_OUTPUT"
else
echo ""
echo ">> No chart changes detected"
echo "changes-detected=false" >> "$GITEA_OUTPUT"
fi
- name: Add Repositories
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd "${MAIN_DIR}"
echo ""
echo ">> Adding repositories for chart dependencies ..."
for DIR in ${RENDER_DIR}; do
helm dependency list --max-col-width 120 "${MAIN_DIR}/clusters/${CLUSTER}/helm/${DIR}" 2> /dev/null \
| tail -n +2 \
| awk 'NF > 0 { print $1, $3 }' \
| while read -r REPO_NAME REPO_URL; do
if [[ "${REPO_URL}" == oci://* ]]; then
echo ""
echo ">> Ignoring OCI repo: ${REPO_URL}"
elif [[ -n "${REPO_NAME}" && -n "${REPO_URL}" ]]; then
helm repo add "${REPO_NAME}" "${REPO_URL}"
fi
done || true
done
if helm repo list > /dev/null 2>&1; then
echo ""
echo ">> Update repository cache ..."
helm repo update
fi
echo "----"
- name: Remove Changed Manifest Files
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd "${MANIFEST_DIR}"
echo ""
echo ">> Remove manfiest files and rebuild from source ..."
for DIR in ${RENDER_DIR}; do
CHART_PATH=${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/${DIR}
echo ""
echo "${CHART_PATH}"
rm -rf ${CHART_PATH}/*
done
echo "----"
- name: Render Helm Manifests
id: render-manifests
if: steps.check-dir-changes.outputs.changes-detected == 'true'
env:
RENDER_DIR: ${{ steps.check-dir-changes.outputs.render-dir }}
run: |
cd ${MAIN_DIR}
echo ""
echo ">> Rendering Manifests ..."
render_chart() {
local DIR="$1"
local CHART_PATH="${MAIN_DIR}/clusters/${CLUSTER}/helm/${DIR}"
local CHART_NAME=$(basename "${CHART_PATH}")
echo ""
echo ">> Rendering ..."
echo ">> Chart: ${CHART_NAME}"
echo ">> Path: ${CHART_PATH}"
if [ -f "${CHART_PATH}/Chart.yaml" ]; then
local OUTPUT_FOLDER="${MANIFEST_DIR}/clusters/${CLUSTER}/manifests/${CHART_NAME}/"
mkdir -p "${OUTPUT_FOLDER}"
cd "${CHART_PATH}"
echo ""
echo ">> Updating helm dependencies ..."
helm dependency update --skip-refresh > /dev/null
echo ""
echo ">> Linting helm chart ..."
helm lint --namespace "${CHART_NAME}" --quiet
local NAMESPACE="${CHART_NAME}"
case "${CHART_NAME}" in
"stack")
NAMESPACE="argocd"
echo ""
echo ">> Special Rendering into 'argocd' namespace ..."
;;
"cilium" | "coredns" | "metrics-server" | "prometheus-operator-crds")
NAMESPACE="kube-system"
echo ""
echo ">> Special Rendering for ${CHART_NAME} into 'kube-system' namespace ..."
;;
*)
echo ""
echo ">> Standard Rendering for ${CHART_NAME} ..."
esac
echo ""
echo ">> Formating rendered template ..."
local TEMPLATE
TEMPLATE=$(helm template "${CHART_NAME}" ./ --namespace "${NAMESPACE}" --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
# Format and split rendered template
echo "${TEMPLATE}" | yq '... comments=""' | yq 'select(. != null)' | yq -s '"'"${OUTPUT_FOLDER}"'" + .kind + "-" + .metadata.name + ".yaml"'
# Strip comments again to ensure formatting correctness
for file in "$OUTPUT_FOLDER"/*; do
yq -i '... comments=""' $file
done
echo ""
echo ">> Manifests for ${CHART_NAME} rendered to ${OUTPUT_FOLDER}:"
ls $OUTPUT_FOLDER
echo ""
else
echo ""
echo ">> Directory ${CHART_PATH} does not contain a Chart.yaml. Skipping ..."
echo ""
fi
}
export -f render_chart
export MAIN_DIR CLUSTER MANIFEST_DIR
# Run rendering in parallel
for DIR in ${RENDER_DIR}; do
echo "${DIR}"
done | xargs -n 1 -P 4 -I {} bash -c 'render_chart "$@"' _ {}
echo "----"
- name: Check for Changes
id: check-changes
if: steps.check-dir-changes.outputs.changes-detected == 'true'
run: |
cd "${MANIFEST_DIR}"
GIT_CHANGES=$(git status --porcelain)
if [ -n "${GIT_CHANGES}" ]; then
echo ""
echo ">> Changes detected"
git status --porcelain
echo "changes-detected=true" >> $GITEA_OUTPUT
else
echo ""
echo ">> No changes detected, skipping PR creation"
fi
echo "----"
- name: Commit and Push Changes
id: commit-push
if: steps.check-changes.outputs.changes-detected == 'true'
run: |
cd "${MANIFEST_DIR}"
echo ""
echo ">> Commiting changes to ${BRANCH_NAME} ..."
git add .
git commit -m "chore: Update manifests after change"
REPO_URL="${{ secrets.REPO_URL }}/${{ gitea.repository }}"
echo ""
echo ">> Pushing changes to ${REPO_URL} ..."
git push -u "https://oauth2:${{ secrets.BOT_TOKEN }}@${REPO_URL#*://}" "${BRANCH_NAME}"
echo "----"
echo "HEAD_BRANCH=${BRANCH_NAME}" >> "$GITEA_OUTPUT"
echo "push=true" >> "$GITEA_OUTPUT"
- name: Check for Pull Request
id: check-for-pull-requst
if: steps.commit-push.outputs.push == 'true'
env:
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
GITEA_URL: ${{ secrets.REPO_URL }}
HEAD_BRANCH: ${{ steps.commit-push.outputs.HEAD_BRANCH }}
run: |
cd ${MANIFEST_DIR}
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls?base_branch=${BASE_BRANCH}&state=open&page=1"
echo ">> Checking if PR from branch ${HEAD_BRANCH} into ${BASE_BRANCH}"
echo ">> With Endpoint of:"
echo "$API_ENDPOINT"
HTTP_STATUS=$(
curl -X GET \
--silent \
--write-out '%{http_code}' \
--output response_body.json \
--dump-header response_headers.txt \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"$API_ENDPOINT" 2> response_errors.txt
)
echo ">> HTTP Status Code: $HTTP_STATUS"
echo ">> Response Output ..."
echo "----"
cat response_body.json
echo "----"
cat response_headers.txt
echo "----"
cat response_errors.txt
echo "----"
if [ "$HTTP_STATUS" == "200" ] && [ "$(cat response_body.json | jq -r .[0].state)" == "open" ]; then
echo ">> Pull Request has been found open, will update"
PR_INDEX=$(cat response_body.json | jq -r .[0].number)
echo "pull-request-exists=${PR_INDEX}" >> $GITEA_OUTPUT
echo "pull-request-index=true" >> $GITEA_OUTPUT
elif [ "$HTTP_STATUS" == "200" ] && [ "$(cat response_body.json | jq -r .[0].state)" == "closed" ]; then
echo ">> Pull Request found, but was closed"
echo "pull-request-exists=false" >> $GITEA_OUTPUT
else
echo ">> Pull Request not found"
echo "pull-request-exists=false" >> $GITEA_OUTPUT
fi
echo "----"
- name: Create Pull Request
id: create-pull-request
if: steps.commit-push.outputs.push == 'true' && steps.check-for-pull-requst.outputs.pull-request-exists == 'false'
env:
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
GITEA_URL: ${{ secrets.REPO_URL }}
HEAD_BRANCH: ${{ steps.commit-push.outputs.HEAD_BRANCH }}
run: |
cd ${MANIFEST_DIR}
API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls"
PAYLOAD=$( jq -n \
--arg head "${HEAD_BRANCH}" \
--arg base "${BASE_BRANCH}" \
--arg assignee "${ASSIGNEE}" \
--arg title "Automated Manifest Update" \
--arg body "This PR contains newly rendered Kubernetes manifests automatically generated by the CI workflow." \
'{head: $head, base: $base, assignee: $assignee, title: $title, body: $body}' )
echo ">> Creating PR from branch ${HEAD_BRANCH} into ${BASE_BRANCH}"
echo ">> With Endpoint of:"
echo "$API_ENDPOINT"
echo ">> With Payload of:"
echo "$PAYLOAD"
HTTP_STATUS=$(
curl -X POST \
--silent \
--write-out '%{http_code}' \
--output response_body.json \
--dump-header response_headers.txt \
--data "$PAYLOAD" \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"$API_ENDPOINT" 2> response_errors.txt
)
echo ">> HTTP Status Code: $HTTP_STATUS"
echo ">> Response Output ..."
echo "----"
cat response_body.json
echo "----"
cat response_headers.txt
echo "----"
cat response_errors.txt
echo "----"
if [ "$HTTP_STATUS" == "201" ]; then
echo ">> Pull Request created successfully!"
PR_URL=$(cat response_body.json | jq -r .html_url)
echo "pull-request-url=${PR_URL}" >> $GITEA_OUTPUT
PR_ID=$(cat response_body.json | jq -r .id)
echo "pull-request-id=${PR_ID}" >> $GITEA_OUTPUT
echo "pull-request-operation=created" >> $GITEA_OUTPUT
elif [ "$HTTP_STATUS" == "422" ]; then
echo ">> Failed to create PR (HTTP 422: Unprocessable Entity), PR may already exist"
elif [ "$HTTP_STATUS" == "409" ]; then
echo ">> Failed to create PR (HTTP 409: Conflict), PR already exists"
else
echo ">> Failed to create PR, HTTP status code: $HTTP_STATUS"
exit 1
fi
echo "----"
- name: ntfy Created
uses: niniyas/ntfy-action@master
if: steps.create-pull-request.outputs.pull-request-operation == 'created'
with:
url: "${{ secrets.NTFY_URL }}"
topic: "${{ secrets.NTFY_TOPIC }}"
title: "Manifest Render PR Created - Infrastructure"
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,successfully,completed
details: "Manifest rendering for Infrastructure has created a new Pull Request with ID: ${{ steps.create-pull-request.outputs.pull-request-id }}!"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "Open Gitea", "url": "${{ steps.create-pull-request.outputs.pull-request-url }}", "clear": true}]'
- name: ntfy Failed
uses: niniyas/ntfy-action@master
if: failure()
with:
url: "${{ secrets.NTFY_URL }}"
topic: "${{ secrets.NTFY_TOPIC }}"
title: "Manifest Render Failure - Infrastructure"
priority: 4
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,failed
details: "Manifest rendering for Infrastructure has failed!"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/infrastructure/actions?workflow=render-manifests.yaml", "clear": true}]'
image: true

View File

@@ -6,12 +6,6 @@ on:
workflow_dispatch:
push:
branches:
- main
paths:
- 'clusters/cl01tl/helm/**'
pull_request:
branches:
- main
@@ -34,7 +28,6 @@ jobs:
if: >-
github.event_name == 'schedule' ||
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'push' && github.actor != 'renovate-bot') ||
(github.event_name == 'pull_request' && github.event.pull_request.merged == true)
steps:
- name: Checkout Main
@@ -95,10 +88,6 @@ jobs:
DIFF_TARGET="HEAD^..HEAD"
elif [[ "${{ github.event_name }}" == "push" ]]; then
echo ">> Mode: Push (Standard)"
DIFF_TARGET="${{ github.event.before }}..HEAD"
fi
echo ""
@@ -111,6 +100,7 @@ jobs:
- name: Prepare Manifest Branch
id: prepare-manifest-branch
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
IS_AUTOMERGE: ${{ steps.mode.outputs.is-automerge }}
run: |
cd "${MANIFEST_DIR}"
@@ -120,10 +110,10 @@ jobs:
git config user.email "gitea-bot@alexlebens.net"
if [[ "$IS_AUTOMERGE" == "true" ]]; then
BRANCH_NAME="${BRANCH_NAME_BASE}-automerge-${PR_NUMBER}"
echo ""
echo ">> Creating branch ${BRANCH_NAME} ..."
BRANCH_NAME="${BRANCH_NAME_BASE}-automerge-$(date +%Y%m%d%H%M%S)"
git checkout -b "$BRANCH_NAME"
git checkout -B "$BRANCH_NAME"
else
echo ""
@@ -416,7 +406,6 @@ jobs:
echo "----"
echo "pull-request-exists=$(cat response_body.json | jq -r .[0].number)" >> "$GITHUB_OUTPUT"
echo "pull-request-url=$(cat response_body.json | jq -r .[0].html_url)" >> "$GITHUB_OUTPUT"
else
echo ""
@@ -468,7 +457,6 @@ jobs:
echo ""
echo "----"
echo "pull-request-url=$(jq -r .html_url response_body.json)" >> "$GITHUB_OUTPUT"
echo "pull-request-id=$(jq -r .id response_body.json)" >> "$GITHUB_OUTPUT"
echo "pull-request-number=$(jq -r .number response_body.json)" >> "$GITHUB_OUTPUT"
echo "pull-request-operation=created" >> "$GITHUB_OUTPUT"
@@ -589,9 +577,9 @@ jobs:
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,successfully,completed
details: "Created renderd manifests for cluster '${CLUSTER}' with charts: ${{ steps.check-changes.outputs.changed-charts-csv }}"
details: "Created renderd manifests for cluster '${{ env.CLUSTER }}' with charts: ${{ steps.check-changes.outputs.changed-charts-csv }}"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "View PR", "url": "${{ steps.create-pull-request.outputs.pull-request-url }}", "clear": true}]'
actions: '[{"action": "view", "label": "View PR", "url": "${{ vars.USER_URL }}/${{ github.repository }}/pulls/${{ steps.create-pull-request.outputs.pull-request-number }}", "clear": true}]'
- name: ntfy Updated
uses: niniyas/ntfy-action@master
@@ -603,9 +591,9 @@ jobs:
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,successfully,completed
details: "Updated rendered manifests PR for cluster '${CLUSTER}' with charts: ${{ steps.check-changes.outputs.changed-charts-csv }}"
details: "Updated rendered manifests PR for cluster '${{ env.CLUSTER }}' with charts: ${{ steps.check-changes.outputs.changed-charts-csv }}"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "View PR", "url": "${{ steps.check-for-pull-request.outputs.pull-request-url }}", "clear": true}]'
actions: '[{"action": "view", "label": "View PR", "url": "${{ vars.USER_URL }}/${{ github.repository }}/pulls/${{ steps.create-pull-request.outputs.pull-request-number }}", "clear": true}]'
- name: ntfy Merged
uses: niniyas/ntfy-action@master
@@ -617,9 +605,9 @@ jobs:
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,successfully,completed
details: "Automerged manifest rendering for cluster '${CLUSTER}' with charts: ${{ steps.check-changes.outputs.changed-charts-csv }}"
details: "Automerged manifest rendering for cluster '${{ env.CLUSTER }}' with charts: ${{ steps.check-changes.outputs.changed-charts-csv }}"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "View PR", "url": "${{ steps.create-pull-request.outputs.pull-request-url }}", "clear": true}]'
actions: '[{"action": "view", "label": "View PR", "url": "${{ vars.USER_URL }}/${{ github.repository }}/pulls/${{ steps.create-pull-request.outputs.pull-request-number }}", "clear": true}]'
- name: ntfy Failed
uses: niniyas/ntfy-action@master
@@ -633,4 +621,4 @@ jobs:
tags: action,failed
details: "Manifest rendering for Infrastructure has failed!"
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png"
actions: '[{"action": "view", "label": "View Logs", "url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'
actions: '[{"action": "view", "label": "View Logs", "url": "${{ vars.USER_URL }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'

View File

@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.3.0
rev: v6.0.0
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace
@@ -9,7 +9,9 @@ repos:
exclude: '^.*\/templates\/.*$'
args:
- --multi
- id: check-merge-conflict
- id: check-json
- repo: https://github.com/IamTheFij/docker-pre-commit
rev: v2.0.0
rev: v3.0.1
hooks:
- id: docker-compose-check

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 7.10.0
digest: sha256:8d1c2dd011a360d930ed5ff186462f163407077d36ae633898ec5d6ba30a4e8d
generated: "2026-03-15T17:50:49.014962137Z"
generated: "2026-03-15T20:04:18.080966008Z"

View File

@@ -12,4 +12,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0
digest: sha256:8c353c5dad4c3d04d518c1445497f0d1cb64261a4201ae17a2c0874454b807a7
generated: "2026-03-15T17:51:03.111099345Z"
generated: "2026-03-15T20:04:35.99407071Z"

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0
digest: sha256:7584c2a1613454bbd83b66df46170fd0157df5186842844d483e2dd131398574
generated: "2026-03-15T17:51:17.169173561Z"
generated: "2026-03-15T20:04:49.68456485Z"

View File

@@ -26,4 +26,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/dawarich.png
# renovate: datasource=github-releases depName=Freika/dawarich
appVersion: 1.3.3
appVersion: 1.3.4

View File

@@ -9,7 +9,7 @@ dawarich:
main:
image:
repository: freikin/dawarich
tag: 1.3.3
tag: 1.3.4
pullPolicy: IfNotPresent
command: ["web-entrypoint.sh"]
args: ["bin/rails", "server", "-p", "3000", "-b", "::"]
@@ -106,7 +106,7 @@ dawarich:
sidekiq:
image:
repository: freikin/dawarich
tag: 1.3.3
tag: 1.3.4
pullPolicy: IfNotPresent
command: ["sidekiq-entrypoint.sh"]
args: ["sidekiq"]

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0
digest: sha256:dfcb5d35e03ecdc4206227d206d36509319f0dcdaed54363840d71337debb3f7
generated: "2026-03-15T17:51:30.574186467Z"
generated: "2026-03-15T20:05:03.156596646Z"

View File

@@ -12,4 +12,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:a7bdbecd50433fedd65d3043102fe3c9e366dc98953c37eb0cfe762bce833e8e
generated: "2026-03-15T17:51:42.0562045Z"
generated: "2026-03-15T20:05:14.085780861Z"

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:83ec84774e0cc708f1cb5d83d657180159bfb75c9928784ebf0280e224b1cbca
generated: "2026-03-15T17:51:53.853065795Z"
generated: "2026-03-15T20:05:27.625292422Z"

View File

@@ -1,6 +1,6 @@
dependencies:
- name: generic-device-plugin
repository: https://gitea.alexlebens.dev/api/packages/alexlebens/helm
version: 0.20.21
digest: sha256:4f1359a01b8b85722ab1805426a86f3ea64d0134513ce14fe9c55f3f918a21fb
generated: "2026-03-09T23:02:42.799515974Z"
version: 0.20.22
digest: sha256:14e5aa3f02ce6a1271dadc3f76997c739fc9434e669b05655c079d0b873c56ca
generated: "2026-03-15T20:35:40.676997293Z"

View File

@@ -15,6 +15,6 @@ maintainers:
dependencies:
- name: generic-device-plugin
repository: https://gitea.alexlebens.dev/api/packages/alexlebens/helm
version: 0.20.21
version: 0.20.22
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/kubernetes.png
appVersion: 1.0.0

View File

@@ -7,7 +7,7 @@ dependencies:
version: 0.0.3
- name: meilisearch
repository: https://meilisearch.github.io/meilisearch-kubernetes
version: 0.27.0
version: 0.28.0
- name: cloudflared
repository: oci://harbor.alexlebens.net/helm-charts
version: 2.4.0
@@ -23,5 +23,5 @@ dependencies:
- name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:095caf06888cd4663eb5d389399ebad167861007b604016fc4907308474558ab
generated: "2026-03-15T17:52:07.79293374Z"
digest: sha256:238b7653c9d12c4886a56350b6d66217dbe7ecbb76078a846c7cc2c8cb450eb3
generated: "2026-03-16T15:56:55.197735783Z"

View File

@@ -33,7 +33,7 @@ dependencies:
repository: https://dl.gitea.com/charts/
version: 0.0.3
- name: meilisearch
version: 0.27.0
version: 0.28.0
repository: https://meilisearch.github.io/meilisearch-kubernetes
- name: cloudflared
repository: oci://harbor.alexlebens.net/helm-charts

View File

@@ -57,6 +57,7 @@ gitea:
ROOT_URL: https://gitea.alexlebens.dev
LOCAL_ROOT_URL: http://gitea-http.gitea.svc.cluster.local:3000
START_SSH_SERVER: true
HTTP_PORT: 3000
SSH_DOMAIN: gitea.alexlebens.net
SSH_PORT: 22
SSH_LISTEN_PORT: 22

View File

@@ -12,4 +12,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0
digest: sha256:9cbba52d093e40b20917af87263e1fb0e478912440f660543f3527e70452edc7
generated: "2026-03-15T17:52:27.363666106Z"
generated: "2026-03-15T20:05:59.855514102Z"

View File

@@ -358,6 +358,25 @@ spec:
resyncPeriod: 1h
url: http://gitea-http.gitea:3000/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/traefik.json
---
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDashboard
metadata:
name: grafana-dashboard-tdarr
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: grafana-dashboard-tdarr
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
instanceSelector:
matchLabels:
app: grafana-main
contentCacheDuration: 1h
folderUID: grafana-folder-service
resyncPeriod: 1h
url: http://gitea-http.gitea:3000/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/tdarr.json
---
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDashboard

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0
digest: sha256:14c2b7d09631dbb573e9c9d4613ebe52e330146662da0da15f74c31ec519ed15
generated: "2026-03-15T17:52:43.495433328Z"
generated: "2026-03-15T20:06:13.615175051Z"

View File

@@ -12,4 +12,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:b79ea8c506f0172deed820247a33c79329f34426435c8b5eb27b206ac8831b13
generated: "2026-03-15T17:53:01.416603323Z"
generated: "2026-03-15T20:06:27.091094433Z"

View File

@@ -4,9 +4,9 @@ dependencies:
version: 4.6.2
- name: meilisearch
repository: https://meilisearch.github.io/meilisearch-kubernetes
version: 0.27.0
version: 0.28.0
- name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:ca384647a640ae717ac874a2627f00ac9a1e5c97ff5eeb8f326ebdd471ab1623
generated: "2026-03-09T15:04:08.648165537Z"
digest: sha256:57b007c6e19dda1300f5025332d9e8104bfb9a50cd7124260bfa68ce2432628b
generated: "2026-03-16T15:57:13.466372254Z"

View File

@@ -25,7 +25,7 @@ dependencies:
repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2
- name: meilisearch
version: 0.27.0
version: 0.28.0
repository: https://meilisearch.github.io/meilisearch-kubernetes
- name: volsync-target
alias: volsync-target-config

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:f779185ce82045b47fc75bf95c4a8215acbd387f44a4bdb764486406d9b03748
generated: "2026-03-15T17:53:14.444764813Z"
generated: "2026-03-15T20:06:38.720993367Z"

View File

@@ -4,12 +4,12 @@ dependencies:
version: 4.6.2
- name: meilisearch
repository: https://meilisearch.github.io/meilisearch-kubernetes
version: 0.27.0
version: 0.28.0
- name: cloudflared
repository: oci://harbor.alexlebens.net/helm-charts
version: 2.4.0
- name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:75f92316d4b6229d00e3dfa39ed5026ad39a28f833321cd3887a2048cdac34c7
generated: "2026-03-09T22:04:48.630821646Z"
digest: sha256:49e37e17dc859927048c6474ce27cb063a020f291d6d2d24876d0427eddc3656
generated: "2026-03-16T15:57:28.156797159Z"

View File

@@ -22,7 +22,7 @@ dependencies:
repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2
- name: meilisearch
version: 0.27.0
version: 0.28.0
repository: https://meilisearch.github.io/meilisearch-kubernetes
- name: cloudflared
repository: oci://harbor.alexlebens.net/helm-charts

View File

@@ -6,4 +6,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 7.10.0
digest: sha256:a6f33512d929c5a1b70bde6c3294902f5d707855aabbaa815f32e23aa54b266f
generated: "2026-03-15T17:53:27.253725765Z"
generated: "2026-03-15T20:06:49.233053802Z"

View File

@@ -1,12 +1,12 @@
dependencies:
- name: kube-prometheus-stack
repository: oci://ghcr.io/prometheus-community/charts
version: 82.10.3
version: 82.10.4
- name: app-template
repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2
- name: valkey
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0
digest: sha256:37ffa4a21ed29703cae9c9f3fb029566a1dd6af6e0fe8cc3862a2226d6644114
generated: "2026-03-10T19:02:41.11005238Z"
digest: sha256:d6bbbfdd1a781b5eb82c2dc8571836a43d23bf8526eac1bcd40f38030be642db
generated: "2026-03-15T20:38:11.961621853Z"

View File

@@ -20,7 +20,7 @@ maintainers:
- name: alexlebens
dependencies:
- name: kube-prometheus-stack
version: 82.10.3
version: 82.10.4
repository: oci://ghcr.io/prometheus-community/charts
- name: app-template
alias: ntfy-alertmanager

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:0f1a2923a7042b364a817edc64729d5e1c18b0552555c035d974de626f372692
generated: "2026-03-15T17:53:38.573362054Z"
generated: "2026-03-15T20:07:00.750754951Z"

View File

@@ -39,4 +39,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:1578e2c48447f217e72bffb3afcb6f1f15c427a4acce5dbca830cdd7045b1348
generated: "2026-03-15T17:53:53.319976393Z"
generated: "2026-03-15T20:07:12.751000922Z"

View File

@@ -20,4 +20,4 @@ dependencies:
version: 4.6.2
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/ntfy.png
# renovate: datasource=github-releases depName=binwiederhier/ntfy
appVersion: 2.18.0
appVersion: 2.19.0

View File

@@ -9,7 +9,7 @@ ntfy:
main:
image:
repository: binwiederhier/ntfy
tag: v2.18.0
tag: v2.19.0
pullPolicy: IfNotPresent
args: ["serve"]
env:

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:d0f47712bf5d2bab8136c43f1d5bac41860f067b53c741282a4647ce93a7cd93
generated: "2026-03-15T17:54:10.972630195Z"
generated: "2026-03-15T20:07:27.179378683Z"

View File

@@ -15,4 +15,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:02780454fad48c10e95851e73e45e8a98091596d9dce8ada9e361e7212e581df
generated: "2026-03-15T17:54:24.437295193Z"
generated: "2026-03-15T20:07:38.818063491Z"

View File

@@ -39,4 +39,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/outline.png
# renovate: datasource=github-releases depName=outline/outline
appVersion: 1.5.0
appVersion: 1.6.0

View File

@@ -12,7 +12,7 @@ outline:
main:
image:
repository: outlinewiki/outline
tag: 1.5.0
tag: 1.6.0
pullPolicy: IfNotPresent
env:
- name: NODE_ENV

View File

@@ -6,4 +6,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 7.10.0
digest: sha256:fe266f506edd672979091e0ad12379d6ad7dddd2c982e196e602dcda268d6f76
generated: "2026-03-15T17:54:40.259209933Z"
generated: "2026-03-15T20:07:52.831926834Z"

View File

@@ -9,7 +9,7 @@ plex:
main:
image:
repository: ghcr.io/linuxserver/plex
tag: 1.43.0@sha256:79dfc89947410ec120a3e34cf68f746f6f154de20772e6f27b9998ca9bd65a5e
tag: 1.43.0@sha256:84f8646e799f6636876ab4f283d9fc8f6c51d56098ea74cba82bfb85074b68df
pullPolicy: IfNotPresent
env:
- name: TZ

View File

@@ -18,4 +18,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:de3fb540df1cf7385a19316741854d01e002740c0bf346f3da0ff3a809b1fc3d
generated: "2026-03-15T17:54:52.887850682Z"
generated: "2026-03-15T20:08:06.855136249Z"

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:d76563fe1a7a9f8ceaf6937831bd0c5511eb7369abb8eb54110dfb69e6dce224
generated: "2026-03-15T17:55:05.545155333Z"
generated: "2026-03-15T20:08:21.236792423Z"

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:21bde3a8778fb94e40f2177383ca418123e69f3f3f463b31d35e9f9bf83dfa9d
generated: "2026-03-15T17:55:17.844614721Z"
generated: "2026-03-15T20:08:35.497440433Z"

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:ebd25d2a12ca1924b66c62d6dd2c69476ae4526825020796198b65c2ebd2c6eb
generated: "2026-03-15T17:55:30.565670113Z"
generated: "2026-03-15T20:08:49.811429784Z"

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:05ce0d746d9c42a00338df5e6673fde8baeefa6f598ef8c85a32e6bc393b94ca
generated: "2026-03-15T17:55:44.280145467Z"
generated: "2026-03-15T20:09:03.538226001Z"

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:755aa4db5c7142d46af4a80c9fce49c3c558cc81042c9a00a0bdcd607276e856
generated: "2026-03-15T17:55:56.664735635Z"
generated: "2026-03-15T20:09:18.053504671Z"

View File

@@ -12,4 +12,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:9342eb966ec3e8020aa6b1d6d2ac72d2c4a46c4ed70c5cf52c16ff25d2f2b0fa
generated: "2026-03-15T17:56:11.153595526Z"
generated: "2026-03-15T20:09:33.800790437Z"

View File

@@ -11,7 +11,7 @@ site-documentation:
main:
image:
repository: harbor.alexlebens.net/images/site-documentation
tag: 0.2.0
tag: 0.3.0
pullPolicy: IfNotPresent
resources:
requests:

View File

@@ -11,7 +11,7 @@ site-profile:
main:
image:
repository: harbor.alexlebens.net/images/site-profile
tag: 3.12.1
tag: 3.13.0
pullPolicy: IfNotPresent
resources:
requests:

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:27cc019786592c0e7fce9509543792c9f281a4e676c463ce5d6ba2a6df05e3b2
generated: "2026-03-15T17:56:24.687596728Z"
generated: "2026-03-15T20:09:49.767646568Z"

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:0f8016577e9fedaf8e5bd36688da2bf19b51185bc8100b817b64ce48ec87433b
generated: "2026-03-15T17:56:39.105428794Z"
generated: "2026-03-15T20:10:04.000906771Z"

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:a20b4dd7e2f0c8777ed2be1bd2c702bc4d7cfeb51e4a29d781c041c555821aa1
generated: "2026-03-15T17:56:51.305050861Z"
generated: "2026-03-15T20:10:17.242764683Z"

View File

@@ -12,4 +12,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:6ffe4bd6af377f2ba5134389027e86085928d5e1108bb5ecf0d4b1e4cc908b67
generated: "2026-03-15T17:57:04.378433691Z"
generated: "2026-03-15T20:10:31.966910173Z"

View File

@@ -165,6 +165,7 @@ tdarr:
tdarr-exporter:
image:
name: homeylab/tdarr-exporter
# renovate: datasource=docker depName=homeylab/tdarr-exporter
tag: 1.4.2
metrics:
serviceMonitor:

View File

@@ -4,6 +4,6 @@ dependencies:
version: 39.0.5
- name: traefik-crds
repository: https://traefik.github.io/charts
version: 1.14.0
digest: sha256:8ae6a524708becb7af3a30d2ca4e671c92b7627842f6c6917656526298e2eba5
generated: "2026-03-09T17:04:21.522089828Z"
version: 1.15.0
digest: sha256:8edf8d2dcabdba2c2b8d6a9508f001ba5ef4bec205423f864b92f2adedd73b60
generated: "2026-03-16T15:32:49.364653199Z"

View File

@@ -18,7 +18,7 @@ dependencies:
version: 39.0.5
repository: https://traefik.github.io/charts
- name: traefik-crds
version: 1.14.0
version: 1.15.0
repository: https://traefik.github.io/charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/webp/traefik.webp
# renovate: datasource=github-releases depName=traefik/traefik

View File

@@ -0,0 +1,6 @@
dependencies:
- name: trivy-operator
repository: https://aquasecurity.github.io/helm-charts/
version: 0.32.1
digest: sha256:7e25850fc3115f52e6c65151c76668929eee6713228e935862d9f156397c2ede
generated: "2026-03-15T17:21:41.373519-05:00"

View File

@@ -0,0 +1,23 @@
apiVersion: v2
name: trivy
version: 1.0.0
description: Trivy
keywords:
- trivy
- vulnerability
- monitoring
- kubernetes
home: https://wiki.alexlebens.dev/s/
sources:
- https://github.com/aquasecurity/trivy
- https://github.com/aquasecurity/trivy-operator
- https://github.com/aquasecurity/trivy-operator/tree/main/deploy/helm
maintainers:
- name: alexlebens
dependencies:
- name: trivy-operator
version: 0.32.1
repository: https://aquasecurity.github.io/helm-charts/
icon: https://raw.githubusercontent.com/aquasecurity/trivy/main/docs/imgs/logo.png
# renovate: github=aquasecurity/trivy
appVersion: 0.32.1

View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: Namespace
metadata:
name: trivy
labels:
app.kubernetes.io/name: trivy
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
pod-security.kubernetes.io/audit: privileged
pod-security.kubernetes.io/enforce: privileged
pod-security.kubernetes.io/warn: privileged

View File

@@ -0,0 +1,87 @@
trivy-operator:
targetWorkloads: "pod,replicaset,replicationcontroller,statefulset,daemonset,cronjob,job"
operator:
replicas: 1
scanJobsConcurrentLimit: 3
vulnerabilityScannerEnabled: true
sbomGenerationEnabled: true
clusterSbomCacheEnabled: true
configAuditScannerEnabled: true
rbacAssessmentScannerEnabled: true
infraAssessmentScannerEnabled: true
clusterComplianceEnabled: false
vulnerabilityScannerScanOnlyCurrentRevisions: true
accessGlobalSecretsAndServiceAccount: true
metricsFindingsEnabled: true
exposedSecretScannerEnabled: true
serviceMonitor:
enabled: true
trivy:
createConfig: true
image:
registry: mirror.gcr.io
repository: aquasec/trivy
tag: 0.69.3
storageClassEnabled: true
storageClassName: ceph-block
storageSize: "10Gi"
registry:
mirror:
"registry-1.docker.io": proxy-registry-1.docker.io
"quay.io": proxy-quay.io
"registry.k8s.io": proxy-registry.k8s
"gcr.io": proxy-gcr.io
"ghcr.io": proxy-ghcr.io
"hub.docker": proxy-hub.docker
severity: UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL
slow: true
resources:
requests:
cpu: 100m
memory: 128M
supportedConfigAuditKinds: "Workload,Service,Role,ClusterRole,NetworkPolicy,Ingress,LimitRange,ResourceQuota"
server:
resources:
requests:
cpu: 200m
memory: 512Mi
replicas: 1
nodeCollector:
volumeMounts:
- name: var-lib-etcd
mountPath: /var/lib/etcd
readOnly: true
- name: var-lib-kubelet
mountPath: /var/lib/kubelet
readOnly: true
- name: var-lib-kube-scheduler
mountPath: /var/lib/kube-scheduler
readOnly: true
- name: var-lib-kube-controller-manager
mountPath: /var/lib/kube-controller-manager
readOnly: true
- name: etc-kubernetes
mountPath: /etc/kubernetes
readOnly: true
- name: etc-cni-netd
mountPath: /etc/cni/net.d/
readOnly: true
volumes:
- name: var-lib-etcd
hostPath:
path: /var/lib/etcd
- name: var-lib-kubelet
hostPath:
path: /var/lib/kubelet
- name: var-lib-kube-scheduler
hostPath:
path: /var/lib/kube-scheduler
- name: var-lib-kube-controller-manager
hostPath:
path: /var/lib/kube-controller-manager
- name: etc-kubernetes
hostPath:
path: /etc/kubernetes
- name: etc-cni-netd
hostPath:
path: /etc/cni/net.d/

View File

@@ -12,4 +12,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:6f78b41937412c1db5e0f612287d29ea81c1d9169b8a0efd98a0dd4be3e532d1
generated: "2026-03-15T17:57:17.405059956Z"
generated: "2026-03-15T20:10:47.852109985Z"

View File

@@ -9,4 +9,4 @@ dependencies:
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.4.0
digest: sha256:71da007e1cef75e45b1678caa51b0d2317cb8f4dfdf7df675d534194f03650aa
generated: "2026-03-15T17:57:30.586754631Z"
generated: "2026-03-15T20:11:03.591727143Z"

View File

@@ -57,6 +57,9 @@
"labels": [],
"prHourlyLimit": 0,
"prConcurrentLimit": 0,
"baseBranchPatterns": [
"main"
],
"packageRules": [
{
"description": "Label charts",