15 Commits

Author SHA1 Message Date
1e026fdf2a ci: pin various actions to a proper semver version (#39)
Some checks failed
CD / Check changes (push) Successful in 54s
CD / Build and push (amd64) (push) Successful in 26s
CD / Create tag (push) Successful in 31s
CD / Build and push (arm64) (push) Failing after 1m19s
CD / Create manifest (push) Has been skipped
Reviewed-on: #39
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2026-02-14 19:12:35 +01:00
9378122f24 chore(deps): update https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment action to v0.1.24 (#36)
All checks were successful
CD / Check changes (push) Successful in 5s
CD / Create tag (push) Successful in 7s
CD / Build and push (amd64) (push) Successful in 25s
CD / Build and push (arm64) (push) Successful in 1m45s
CD / Create manifest (push) Successful in 22s
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment) | action | patch | `0.1.23` → `0.1.24` | `0.1.26` (+1) |

---

### Release Notes

<details>
<summary>t.behrendt/conventional-semantic-git-tag-increment (https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment)</summary>

### [`v0.1.24`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.23...0.1.24)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.23...0.1.24)

</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 becomes conflicted, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NS4xIiwidXBkYXRlZEluVmVyIjoiNDIuOTUuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYWN0aW9uIiwiZGVwcyJdfQ==-->

Reviewed-on: #36
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-02-07 18:31:03 +01:00
757d7aec0f chore(deps): update https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment action to v0.1.23 (#34)
All checks were successful
CD / Check changes (push) Successful in 20s
CD / Create tag (push) Successful in 11s
CD / Build and push (amd64) (push) Successful in 32s
CD / Build and push (arm64) (push) Successful in 2m46s
CD / Create manifest (push) Successful in 26s
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment) | action | patch | `0.1.22` → `0.1.23` | `0.1.25` (+1) |

---

### Release Notes

<details>
<summary>t.behrendt/conventional-semantic-git-tag-increment (https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment)</summary>

### [`v0.1.23`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.22...0.1.23)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.22...0.1.23)

</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 becomes conflicted, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi40IiwidXBkYXRlZEluVmVyIjoiNDIuOTIuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYWN0aW9uIiwiZGVwcyJdfQ==-->

Reviewed-on: #34
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-02-03 16:15:33 +01:00
515fa205c3 chore(deps): update docker/login-action digest to c94ce9f (#33)
Some checks failed
CD / Check changes (push) Successful in 13s
CD / Create tag (push) Successful in 22s
CD / Build and push (amd64) (push) Failing after 34s
CD / Build and push (arm64) (push) Failing after 1m51s
CD / Create manifest (push) Has been skipped
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [docker/login-action](https://github.com/docker/login-action) ([changelog](5e57cd1181..c94ce9fb46)) | action | digest | `5e57cd1` → `c94ce9f` |

---

### 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 becomes conflicted, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NS41IiwidXBkYXRlZEluVmVyIjoiNDIuODUuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYWN0aW9uIiwiZGVwcyJdfQ==-->

Reviewed-on: #33
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-01-30 09:55:49 +01:00
0c71b1b699 chore(deps): update https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment action to v0.1.22 (#32)
All checks were successful
CD / Check changes (push) Successful in 5s
CD / Create tag (push) Successful in 6s
CD / Build and push (amd64) (push) Successful in 24s
CD / Build and push (arm64) (push) Successful in 1m12s
CD / Create manifest (push) Successful in 18s
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment) | action | minor | `0.0.2` → `0.1.22` |

---

### Release Notes

<details>
<summary>t.behrendt/conventional-semantic-git-tag-increment (https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment)</summary>

### [`v0.1.22`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.21...0.1.22)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.21...0.1.22)

### [`v0.1.21`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.20...0.1.21)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.20...0.1.21)

### [`v0.1.20`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.19...0.1.20)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.19...0.1.20)

### [`v0.1.19`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.18...0.1.19)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.18...0.1.19)

### [`v0.1.18`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.17...0.1.18)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.17...0.1.18)

### [`v0.1.17`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.16...0.1.17)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.16...0.1.17)

### [`v0.1.16`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.15...0.1.16)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.15...0.1.16)

### [`v0.1.15`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.14...0.1.15)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.14...0.1.15)

### [`v0.1.14`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.13...0.1.14)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.13...0.1.14)

### [`v0.1.13`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.12...0.1.13)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.12...0.1.13)

### [`v0.1.12`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.11...0.1.12)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.11...0.1.12)

### [`v0.1.11`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.10...0.1.11)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.10...0.1.11)

### [`v0.1.10`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.9...0.1.10)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.9...0.1.10)

### [`v0.1.9`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.8...0.1.9)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.8...0.1.9)

### [`v0.1.8`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.7...0.1.8)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.7...0.1.8)

### [`v0.1.7`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.6...0.1.7)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.6...0.1.7)

### [`v0.1.6`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.5...0.1.6)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.5...0.1.6)

### [`v0.1.5`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.4...0.1.5)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.4...0.1.5)

### [`v0.1.4`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.3...0.1.4)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.3...0.1.4)

### [`v0.1.3`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.2...0.1.3)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.2...0.1.3)

### [`v0.1.2`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.1...0.1.2)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.1...0.1.2)

### [`v0.1.1`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.0...0.1.1)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.0...0.1.1)

### [`v0.1.0`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.10...0.1.0)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.10...0.1.0)

### [`v0.0.10`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.9...0.0.10)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.9...0.0.10)

### [`v0.0.9`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.8...0.0.9)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.8...0.0.9)

### [`v0.0.8`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.7...0.0.8)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.7...0.0.8)

### [`v0.0.7`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.6...0.0.7)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.6...0.0.7)

### [`v0.0.6`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.5...0.0.6)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.5...0.0.6)

### [`v0.0.5`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.4...0.0.5)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.4...0.0.5)

### [`v0.0.4`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.3...0.0.4)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.3...0.0.4)

### [`v0.0.3`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.2...0.0.3)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.0.2...0.0.3)

</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 becomes conflicted, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi42OS4yIiwidXBkYXRlZEluVmVyIjoiNDIuNjkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYWN0aW9uIiwiZGVwcyJdfQ==-->

Reviewed-on: #32
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-01-09 14:34:09 +01:00
271420955f chore(deps): update actions/checkout action to v6 (#27)
All checks were successful
CD / Check changes (push) Successful in 12s
CD / Create tag (push) Successful in 8s
CD / Build and push (amd64) (push) Successful in 25s
CD / Build and push (arm64) (push) Successful in 1m8s
CD / Create manifest (push) Successful in 10s
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/checkout](https://github.com/actions/checkout) | action | major | `v5` -> `v6` |

---

### Release Notes

<details>
<summary>actions/checkout (actions/checkout)</summary>

### [`v6`](https://github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v600)

[Compare Source](https://github.com/actions/checkout/compare/v5...v6)

- Persist creds to a separate file by [@&#8203;ericsciple](https://github.com/ericsciple) in [#&#8203;2286](https://github.com/actions/checkout/pull/2286)
- Update README to include Node.js 24 support details and requirements by [@&#8203;salmanmkc](https://github.com/salmanmkc) in [#&#8203;2248](https://github.com/actions/checkout/pull/2248)

</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 becomes conflicted, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi4xMC41IiwidXBkYXRlZEluVmVyIjoiNDIuMjYuMTEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImFjdGlvbiIsImRlcHMiXX0=-->

Reviewed-on: #27
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-12-21 10:44:24 +01:00
69738fe88d chore(deps): update docker/setup-buildx-action digest to 8d2750c (#30)
All checks were successful
CD / Check changes (push) Successful in 7s
CD / Create tag (push) Successful in 8s
CD / Build and push (amd64) (push) Successful in 28s
CD / Build and push (arm64) (push) Successful in 2m58s
CD / Create manifest (push) Successful in 43s
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) ([changelog](e468171a9d..8d2750c68a)) | action | digest | `e468171` -> `8d2750c` |

---

### 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 becomes conflicted, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi40Ny4wIiwidXBkYXRlZEluVmVyIjoiNDIuNDcuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYWN0aW9uIiwiZGVwcyJdfQ==-->

Reviewed-on: #30
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-12-19 19:36:16 +01:00
eca220e960 chore(deps): update docker.io/alpine docker tag to v3.23 (#28)
All checks were successful
CD / Check changes (push) Successful in 12s
CD / Create tag (push) Successful in 8s
CD / Build and push (amd64) (push) Successful in 27s
CD / Build and push (arm64) (push) Successful in 1m9s
CD / Create manifest (push) Successful in 41s
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| docker.io/alpine | final | minor | `3.22` -> `3.23` |

---

### 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 becomes conflicted, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi4yNi4xMSIsInVwZGF0ZWRJblZlciI6IjQyLjI2LjExIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: #28
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-12-12 12:58:18 +01:00
6a017eccd1 chore(deps): update actions/checkout digest to 93cb6ef (#26)
All checks were successful
CD / Check changes (push) Successful in 6s
CD / Build and push (amd64) (push) Successful in 30s
CD / Create tag (push) Successful in 35s
CD / Build and push (arm64) (push) Successful in 2m22s
CD / Create manifest (push) Successful in 26s
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/checkout](https://github.com/actions/checkout) | action | digest | `08c6903` -> `93cb6ef` |

---

### 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 becomes conflicted, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi4xLjMiLCJ1cGRhdGVkSW5WZXIiOiI0Mi4xLjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImFjdGlvbiIsImRlcHMiXX0=-->

Reviewed-on: #26
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-11-22 15:14:17 +01:00
e9b14ec1b2 fix: pull postgresql18-client from edge instead of docker image (#25)
All checks were successful
CD / Check changes (push) Successful in 6s
CD / Create tag (push) Successful in 7s
CD / Build and push (amd64) (push) Successful in 26s
CD / Build and push (arm64) (push) Successful in 1m29s
CD / Create manifest (push) Successful in 8s
Reviewed-on: #25
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2025-11-14 17:46:26 +01:00
ca022fe596 refactor: pull postgresql client from upstream docker image (#24)
All checks were successful
CD / Check changes (push) Successful in 11s
CD / Create tag (push) Successful in 7s
CD / Build and push (amd64) (push) Successful in 32s
CD / Build and push (arm64) (push) Successful in 1m58s
CD / Create manifest (push) Successful in 20s
Reviewed-on: #24
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2025-11-14 17:35:04 +01:00
725ef9000b chore(deps): pin dependencies (#21)
All checks were successful
CD / Check changes (push) Successful in 6s
CD / Create tag (push) Successful in 7s
CD / Build and push (amd64) (push) Successful in 25s
CD / Build and push (arm64) (push) Successful in 6m2s
CD / Create manifest (push) Successful in 8s
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/checkout](https://github.com/actions/checkout) | action | pinDigest |  -> `08c6903` |
| alpine | final | pinDigest |  -> `4b7ce07` |
| [docker/build-push-action](https://github.com/docker/build-push-action) | action | pinDigest |  -> `2634353` |
| [docker/login-action](https://github.com/docker/login-action) | action | pinDigest |  -> `5e57cd1` |
| [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) | action | pinDigest |  -> `e468171` |
| [dorny/paths-filter](https://github.com/dorny/paths-filter) | action | pinDigest |  -> `de90cc6` |

---

### 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 becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi4xLjMiLCJ1cGRhdGVkSW5WZXIiOiI0Mi4xLjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImFjdGlvbiIsImRlcHMiXX0=-->

Reviewed-on: #21
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2025-11-14 17:07:53 +01:00
5b4b09d150 ci(renovate): switch to shared configs (#20)
Some checks failed
CD / Check changes (push) Successful in 6s
CD / Create tag (push) Successful in 23s
CD / Build and push (amd64) (push) Successful in 40s
CD / Build and push (arm64) (push) Has been cancelled
CD / Create manifest (push) Has been cancelled
Reviewed-on: #20
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2025-11-14 17:01:09 +01:00
afc568a4e9 ci: add bash syntax check (#18)
All checks were successful
CD / Check changes (push) Successful in 6s
CD / Create tag (push) Successful in 14s
CD / Build and push (amd64) (push) Successful in 23s
CD / Build and push (arm64) (push) Successful in 1m14s
CD / Create manifest (push) Successful in 8s
Reviewed-on: #18
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2025-09-04 20:48:13 +02:00
73ce57b122 feat: add restore functionality (#12)
All checks were successful
CD / Check changes (push) Successful in 14s
CD / Create tag (push) Successful in 11s
CD / Build and push (amd64) (push) Successful in 26s
CD / Build and push (arm64) (push) Successful in 1m14s
CI / Build Docker image (pull_request) Successful in 18s
CD / Create manifest (push) Successful in 25s
Reviewed-on: #12
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2025-09-04 20:36:40 +02:00
9 changed files with 34 additions and 565 deletions

View File

@@ -16,11 +16,11 @@ jobs:
changes: ${{ steps.filter.outputs.code }}
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Get changed files
id: filter
uses: dorny/paths-filter@v3
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
with:
filters: |
code:
@@ -42,9 +42,9 @@ jobs:
- ubuntu-latest
- linux_${{ matrix.arch }}
steps:
- uses: actions/checkout@v5
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
- uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
with:
registry: ${{ env.DOCKER_REGISTRY }}
username: ${{ secrets.REGISTRY_USER }}
@@ -53,7 +53,7 @@ jobs:
run: |
echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}' | tr '[:upper:]' '[:lower:]') >> $GITHUB_OUTPUT
echo REPO_VERSION=$(git describe --tags --always | sed 's/^v//') >> $GITHUB_OUTPUT
- uses: docker/build-push-action@v6
- uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
file: ./Dockerfile
@@ -72,10 +72,10 @@ jobs:
outputs:
tag: ${{ steps.tag.outputs.new-tag }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment@0.0.2
- uses: https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment@4c32e563bea346792d854585112bf6f06b312ce2 # 0.1.24
id: tag
with:
token: ${{ secrets.GITEA_TOKEN }}
@@ -93,12 +93,12 @@ jobs:
- create_tag
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- id: meta
run: |
echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}' | tr '[:upper:]' '[:lower:]') >> $GITHUB_OUTPUT
echo REPO_VERSION=$(git describe --tags --always | sed 's/^v//') >> $GITHUB_OUTPUT
- uses: docker/login-action@v3
- uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
with:
registry: ${{ env.DOCKER_REGISTRY }}
username: ${{ secrets.REGISTRY_USER }}

View File

@@ -10,10 +10,10 @@ jobs:
- ubuntu-latest
- linux_amd64
steps:
- uses: actions/checkout@v5
- uses: docker/setup-buildx-action@v3
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
- name: Build image
uses: docker/build-push-action@v6
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
file: ./Dockerfile
@@ -22,3 +22,12 @@ jobs:
provenance: false
tags: |
backupsidecar:ci-test
check-syntax:
name: Check syntax
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Check syntax
run: |
bash -n src/backup.sh

View File

@@ -1,11 +1,15 @@
FROM alpine:3.22
FROM docker.io/alpine:3.23@sha256:51183f2cfa6320055da30872f211093f9ff1d3cf06f39a0bdb212314c5dc7375 AS base
# Add edge repository for postgresql18-client
RUN echo '@edge http://dl-cdn.alpinelinux.org/alpine/edge/main' >> /etc/apk/repositories
RUN apk update && apk add --no-cache \
bash \
curl \
restic \
postgresql-client \
jq
jq \
postgresql18-client@edge \
libpq@edge
WORKDIR /app

View File

@@ -1,354 +0,0 @@
# Backup Script Testing Guide
This document provides step-by-step instructions for testing the backup script locally using Docker Compose with a Restic server and PostgreSQL database.
## Prerequisites
- Docker and Docker Compose installed
- The backup script (`src/backup.sh`) and its dependencies (restic, curl, jq, pg_dump, psql)
- Basic understanding of bash and PostgreSQL
## Setup
### 1. Start the Test Environment
```bash
# Start the services
docker-compose up -d
# Wait for services to be ready (about 10-15 seconds)
sleep 15
# Verify services are running
docker-compose ps
```
### 3. Initialize Restic Repositories
Before running any backup operations, you need to initialize the restic repositories:
```bash
# Initialize repository for directory backups
RESTIC_PASSWORD="testpassword123" restic -r "rest:http://localhost:8000/test-backup" init
# Initialize repository for PostgreSQL backups
RESTIC_PASSWORD="testpassword123" restic -r "rest:http://localhost:8000/postgres-backup" init
```
**Note**: The repositories only need to be initialized once. If you recreate the restic server container, you'll need to reinitialize the repositories.
## Directory Backup Testing
This section tests the directory backup and restore functionality.
### 1. Prepare Test Data
```bash
# Create a test directory with sample files
mkdir -p test_data
cd test_data
# Create various types of files
echo "This is a text file" > sample.txt
echo '{"name": "test", "value": 123}' > data.json
mkdir -p subdir
echo "Nested file content" > subdir/nested.txt
echo "Binary data" | base64 > binary.dat
# Create some larger files for testing
dd if=/dev/urandom of=large_file.bin bs=1M count=10 2>/dev/null
# Go back to project root
cd ..
```
### 2. Perform Directory Backup
```bash
# Set environment variables for directory backup
export OPERATION_MODE="backup"
export BACKUP_MODE="directory"
export RESTIC_PASSWORD="testpassword123"
export RESTIC_REPOSITORY="rest:http://localhost:8000/test-backup"
export SOURCEDIR="/tmp/test-data"
export ENABLE_GOTIFY="false"
# Run the backup
./src/backup.sh
```
### 3. Verify Backup
```bash
# List snapshots
restic -r "rest:http://localhost:8000/test-backup" snapshots --password-file <(echo "testpassword123")
# Check backup contents
restic -r "rest:http://localhost:8000/test-backup" ls latest --password-file <(echo "testpassword123")
```
### 4. Perform Directory Restore
```bash
# Create restore directory
RESTOR_DIR="/tmp/restored_data"
mkdir -p $RESTOR_DIR
# Set environment variables for directory restore
export OPERATION_MODE="restore"
export RESTOREDIR=$RESTOR_DIR
export RESTORE_SNAPSHOT_ID="latest"
# Run the restore
./src/backup.sh
```
### 5. Verify Directory Restore
```bash
# Compare original and restored directories
diff -r /tmp/test-data $RESTOR_DIR
# Check file contents
echo "Original file:"
cat test_data/sample.txt
echo "Restored file:"
cat restored_data/sample.txt
# Verify binary file integrity
md5sum test_data/large_file.bin
md5sum restored_data/large_file.bin
# Check directory structure
tree test_data
tree restored_data
```
### 6. Cleanup Directory Test
```bash
# Remove test directories
rm -rf test_data restored_data
```
## PostgreSQL Backup Testing
This section tests the PostgreSQL database backup and restore functionality.
### 1. Generate Test Data
```bash
# Generate test data in PostgreSQL
./generate_test_data.sh
```
### 2. Verify Initial Data
```bash
# Check that data exists
docker exec postgres-test psql -U testuser -d testdb -c "
SELECT 'customers' as table_name, COUNT(*) as row_count FROM customers
UNION ALL
SELECT 'orders' as table_name, COUNT(*) as row_count FROM orders;
"
```
### 3. Perform PostgreSQL Backup
```bash
# Set environment variables for PostgreSQL backup
export OPERATION_MODE="backup"
export BACKUP_MODE="postgres"
export RESTIC_PASSWORD="testpassword123"
export RESTIC_REPOSITORY="rest:http://localhost:8000/postgres-backup"
export PGHOST="localhost"
export PGPORT="5432"
export PGDATABASE="testdb"
export PGUSER="testuser"
export PGPASSWORD="testpass"
export ENABLE_GOTIFY="false"
# Run the backup
./src/backup.sh
```
### 4. Verify PostgreSQL Backup
```bash
# List snapshots
restic -r "rest:http://localhost:8000/postgres-backup" snapshots --password-file <(echo "testpassword123")
# Check backup contents
restic -r "rest:http://localhost:8000/postgres-backup" ls latest --password-file <(echo "testpassword123")
```
### 5. Clear the Database
```bash
# Drop all tables to simulate data loss
docker exec postgres-test psql -U testuser -d testdb -c "
DROP TABLE IF EXISTS orders CASCADE;
DROP TABLE IF EXISTS customers CASCADE;
"
# Verify database is empty
docker exec postgres-test psql -U testuser -d testdb -c "
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public';
"
```
### 6. Perform PostgreSQL Restore
```bash
# Set environment variables for PostgreSQL restore
export OPERATION_MODE="restore"
export RESTORE_SNAPSHOT_ID="latest"
# Run the restore
./src/backup.sh
```
### 7. Verify PostgreSQL Restore
```bash
# Check that data has been restored
docker exec postgres-test psql -U testuser -d testdb -c "
SELECT 'customers' as table_name, COUNT(*) as row_count FROM customers
UNION ALL
SELECT 'orders' as table_name, COUNT(*) as row_count FROM orders;
"
# Verify data integrity
docker exec postgres-test psql -U testuser -d testdb -c "
SELECT
c.name as customer_name,
COUNT(o.id) as order_count,
SUM(o.price * o.quantity) as total_spent
FROM customers c
LEFT JOIN orders o ON c.id = o.customer_id
GROUP BY c.id, c.name
ORDER BY total_spent DESC
LIMIT 5;
"
# Check foreign key constraints
docker exec postgres-test psql -U testuser -d testdb -c "
SELECT
tc.constraint_name,
tc.table_name,
kcu.column_name,
ccu.table_name AS foreign_table_name,
ccu.column_name AS foreign_column_name
FROM information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu
ON tc.constraint_name = kcu.constraint_name
AND tc.table_schema = kcu.table_schema
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
AND ccu.table_schema = tc.table_schema
WHERE tc.constraint_type = 'FOREIGN KEY'
AND tc.table_name IN ('customers', 'orders');
"
```
## Advanced Testing Scenarios
### 1. Test with Different Snapshot IDs
```bash
# List all snapshots
restic -r "rest:http://localhost:8000/test-backup" snapshots --password-file <(echo "testpassword123")
# Restore a specific snapshot
export RESTORE_SNAPSHOT_ID="<snapshot-id>"
./src/backup.sh
```
### 2. Test Error Handling
```bash
# Test with invalid repository
export RESTIC_REPOSITORY="rest:http://localhost:8000/nonexistent"
./src/backup.sh
# Test with wrong password
export RESTIC_PASSWORD="wrongpassword"
./src/backup.sh
```
### 3. Test with Gotify Notifications (Optional)
```bash
# If you have a Gotify server running
export ENABLE_GOTIFY="true"
export GOTIFYHOST="http://your-gotify-server:80"
export GOTIFYTOKEN="your-token"
export GOTIFYTOPIC="Backup Test"
./src/backup.sh
```
## Cleanup
### 1. Stop Services
```bash
# Stop and remove containers
docker-compose down
# Remove volumes (optional - this will delete all data)
docker-compose down -v
```
### 2. Clean Up Test Files
```bash
# Remove any remaining test files
rm -rf test_data restored_data
```
## Troubleshooting
### Common Issues
1. **Connection refused to restic server**: Wait a bit longer for the container to start up
2. **PostgreSQL connection failed**: Ensure the database container is fully initialized
3. **Permission denied**: Make sure the backup script is executable (`chmod +x src/backup.sh`)
4. **Restic repository not found**: Check that the repository URL is correct and the server is running
5. **Script exits early with no output**: The restic repository hasn't been initialized yet. Run the initialization commands in step 3 above.
### Debug Commands
```bash
# Check container logs
docker-compose logs restic-server
docker-compose logs postgres
# Test restic connectivity
restic -r "rest:http://localhost:8000/test-backup" snapshots --password-file <(echo "testpassword123")
# Test PostgreSQL connectivity
docker exec postgres-test psql -U testuser -d testdb -c "SELECT 1;"
```
## Expected Results
### Directory Backup Test
- ✅ Backup completes successfully
- ✅ Files are backed up to restic repository
- ✅ Restore completes successfully
- ✅ Restored files match original files exactly
- ✅ Directory structure is preserved
### PostgreSQL Backup Test
- ✅ Database backup completes successfully
- ✅ Database dump is backed up to restic repository
- ✅ Database can be cleared successfully
- ✅ Database restore completes successfully
- ✅ All data is restored correctly
- ✅ Foreign key relationships are maintained
- ✅ Data integrity is preserved
This testing procedure ensures that both directory and PostgreSQL backup/restore functionality works correctly and can be used as a foundation for automated testing in CI/CD pipelines.

View File

@@ -1,19 +0,0 @@
services:
restic-server:
image: restic/rest-server:latest
container_name: restic-server
ports:
- "8000:8000"
command: rest-server --no-auth --path /data
restart: unless-stopped
postgres:
image: postgres:17
container_name: postgres-test
ports:
- "5432:5432"
environment:
POSTGRES_DB: testdb
POSTGRES_USER: testuser
POSTGRES_PASSWORD: testpass
restart: unless-stopped

View File

@@ -1,51 +0,0 @@
#!/bin/bash
set -euo pipefail
# Script to generate test data for Directory backup testing
# This script creates a few directories with a few files and directories in each and populates it with test data
# Create base test directory
TEST_DIR="/tmp/test-data"
echo "Creating test directory structure in $TEST_DIR..."
# Remove existing test directory if it exists
rm -rf "$TEST_DIR"
mkdir -p "$TEST_DIR"
# Create various subdirectories
mkdir -p "$TEST_DIR/documents/reports"
mkdir -p "$TEST_DIR/documents/contracts"
mkdir -p "$TEST_DIR/data/logs"
mkdir -p "$TEST_DIR/data/backups"
# Create text files with content
echo "This is the annual report for 2023" > "$TEST_DIR/documents/reports/annual_2023.txt"
echo "Q4 financial summary" > "$TEST_DIR/documents/reports/q4_summary.txt"
echo "Contract terms and conditions" > "$TEST_DIR/documents/contracts/agreement.txt"
# Create JSON files
cat << 'EOF' > "$TEST_DIR/data/config.json"
{
"app_name": "TestApp",
"version": "1.0.0",
"settings": {
"debug": true,
"max_retries": 3,
"timeout": 30
}
}
EOF
# Create some log files
for i in {1..3}; do
echo "$(date) - Log entry $i" >> "$TEST_DIR/data/logs/app.log"
echo "$(date) - Error $i: Sample error message" >> "$TEST_DIR/data/logs/error.log"
done
# Create symbolic links
ln -s "../reports/annual_2023.txt" "$TEST_DIR/documents/contracts/report_link"
ln -s "../../data/config.json" "$TEST_DIR/documents/reports/config_link"
echo "Test data generation completed successfully!"
echo "Created directory structure:"
tree "$TEST_DIR"

View File

@@ -1,124 +0,0 @@
#!/bin/bash
set -euo pipefail
# Script to generate test data for PostgreSQL backup testing
# This script creates two tables with a foreign key relationship and populates them with test data
# Database connection parameters
PGHOST="${PGHOST:-localhost}"
PGPORT="${PGPORT:-5432}"
PGDATABASE="${PGDATABASE:-testdb}"
PGUSER="${PGUSER:-testuser}"
PGPASSWORD="${PGPASSWORD:-testpass}"
# Export password for psql
export PGPASSWORD
echo "Generating test data for PostgreSQL database..."
# Create tables
echo "Creating tables..."
psql -h "$PGHOST" -p "$PGPORT" -U "$PGUSER" -d "$PGDATABASE" << 'EOF'
-- Drop tables if they exist
DROP TABLE IF EXISTS orders CASCADE;
DROP TABLE IF EXISTS customers CASCADE;
-- Create customers table
CREATE TABLE customers (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Create orders table with foreign key to customers
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INTEGER NOT NULL REFERENCES customers(id) ON DELETE CASCADE,
product_name VARCHAR(100) NOT NULL,
quantity INTEGER NOT NULL CHECK (quantity > 0),
price DECIMAL(10,2) NOT NULL CHECK (price >= 0),
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Create indexes for better performance
CREATE INDEX idx_orders_customer_id ON orders(customer_id);
CREATE INDEX idx_customers_email ON customers(email);
CREATE INDEX idx_orders_order_date ON orders(order_date);
EOF
# Insert test data
echo "Inserting test data..."
psql -h "$PGHOST" -p "$PGPORT" -U "$PGUSER" -d "$PGDATABASE" << 'EOF'
-- Insert customers
INSERT INTO customers (name, email) VALUES
('John Doe', 'john.doe@example.com'),
('Jane Smith', 'jane.smith@example.com'),
('Bob Johnson', 'bob.johnson@example.com'),
('Alice Brown', 'alice.brown@example.com'),
('Charlie Wilson', 'charlie.wilson@example.com'),
('Diana Davis', 'diana.davis@example.com'),
('Eve Miller', 'eve.miller@example.com'),
('Frank Garcia', 'frank.garcia@example.com'),
('Grace Lee', 'grace.lee@example.com'),
('Henry Taylor', 'henry.taylor@example.com');
-- Insert orders
INSERT INTO orders (customer_id, product_name, quantity, price) VALUES
(1, 'Laptop', 1, 999.99),
(1, 'Mouse', 2, 25.50),
(2, 'Keyboard', 1, 75.00),
(2, 'Monitor', 1, 299.99),
(3, 'Headphones', 1, 150.00),
(3, 'Webcam', 1, 89.99),
(4, 'Tablet', 1, 399.99),
(4, 'Stylus', 1, 49.99),
(5, 'Smartphone', 1, 699.99),
(5, 'Case', 1, 19.99),
(6, 'Desktop', 1, 1299.99),
(6, 'RAM', 2, 79.99),
(7, 'SSD', 1, 199.99),
(7, 'Graphics Card', 1, 599.99),
(8, 'Motherboard', 1, 199.99),
(8, 'CPU', 1, 399.99),
(9, 'Power Supply', 1, 149.99),
(9, 'Cooling Fan', 2, 29.99),
(10, 'Cable Set', 1, 39.99),
(10, 'USB Hub', 1, 24.99);
EOF
# Verify data
echo "Verifying test data..."
psql -h "$PGHOST" -p "$PGPORT" -U "$PGUSER" -d "$PGDATABASE" << 'EOF'
-- Show table counts
SELECT 'customers' as table_name, COUNT(*) as row_count FROM customers
UNION ALL
SELECT 'orders' as table_name, COUNT(*) as row_count FROM orders;
-- Show sample data
SELECT 'Sample customers:' as info;
SELECT id, name, email FROM customers LIMIT 5;
SELECT 'Sample orders:' as info;
SELECT o.id, c.name as customer_name, o.product_name, o.quantity, o.price
FROM orders o
JOIN customers c ON o.customer_id = c.id
LIMIT 5;
-- Show foreign key relationship
SELECT 'Foreign key relationship check:' as info;
SELECT
c.name as customer_name,
COUNT(o.id) as order_count,
SUM(o.price * o.quantity) as total_spent
FROM customers c
LEFT JOIN orders o ON c.id = o.customer_id
GROUP BY c.id, c.name
ORDER BY total_spent DESC;
EOF
echo "Test data generation completed successfully!"
echo "Database contains:"
echo "- 10 customers"
echo "- 20 orders with foreign key relationships"
echo "- Various data types and constraints"

View File

@@ -1,3 +1,7 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"local>t.behrendt/renovate-configs:common",
"local>t.behrendt/renovate-configs:action"
]
}

0
src/backup.sh Executable file → Normal file
View File