57 Commits

Author SHA1 Message Date
benvin 74d3ce0c5b Merge pull request 'Add rspamd RPM remote' (#63) from benvin/rspamd-rpm-remote into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #63
2026-10-13 20:56:47 +11:00
unkin-agent 29fc4b6655 Add rspamd RPM remote
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-10-12 22:46:01 +11:00
benvin cbd61c0984 Merge pull request 'Allow mail stack images through artifactapi' (#62) from benvin/mail-image-allowlist into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #62
2026-10-12 22:28:09 +11:00
unkin-agent 3c97135e77 Allow mail stack images through dockerhub and k8s-registry remotes
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-10-12 22:20:10 +11:00
benvin d13cf9bc85 Merge pull request 'Allow the ClamAV image through the dockerhub remote' (#61) from benvin/dockerhub-clamav into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #61
2026-10-12 22:16:42 +11:00
unkin-agent 8fe5f74afd Allow the ClamAV image through the dockerhub remote
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
The mail namespace runs clamd + freshclam from clamav/clamav on Docker Hub
via the artifactapi mirror. Add it to the dockerhub allowlist.

- add "^clamav/clamav" to config/remote_docker/dockerhub.yaml patterns
2026-10-12 21:49:42 +11:00
benvin 8345a0e23e Merge pull request 'Add rpm-custom virtuals per distro' (#60) from benvin/rpm-custom-virtuals into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #60
2026-10-09 23:38:37 +11:00
benvin 4276511243 Merge pull request 'Add crates-io cargo remote' (#59) from benvin/crates-io-remote into benvin/remote-cargo-kind
ci/woodpecker/push/apply Pipeline failed
Reviewed-on: #59
2026-10-09 23:17:46 +11:00
benvin 3ce117fb86 Merge pull request 'Add remote_cargo config kind' (#58) from benvin/remote-cargo-kind into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #58
2026-10-09 23:16:44 +11:00
unkin-agent 66177b5017 Add rpm-custom virtuals per distro
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-10-09 22:17:36 +11:00
unkin-agent c2acde9f66 Add crates-io cargo remote
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-10-09 22:17:08 +11:00
unkin-agent 09870e9040 Add remote_cargo config kind
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-10-09 22:16:28 +11:00
benvin 880120763d Merge pull request 'Add npmjs npm remote' (#57) from benvin/npmjs-remote into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #57
2026-10-09 19:45:02 +11:00
benvin bc149089d0 Merge pull request 'Add remote_npm config kind' (#56) from benvin/remote-npm-kind into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #56
2026-10-09 19:43:42 +11:00
unkin-agent ae8be9f569 Add npmjs npm remote
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-10-09 19:31:34 +11:00
unkin-agent 35c7d1d224 Add remote_npm config kind
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-10-09 19:30:17 +11:00
benvin cf2d16268b Merge pull request 'allow envoy release assets on github remote' (#53) from benvin/github-envoy into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #53
2026-10-09 19:27:10 +11:00
benvin 0027183be7 Merge pull request 'Add storytold GitHub-release rpm/deb remotes' (#55) from benvin/storytold-remotes into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #55
2026-10-09 19:25:18 +11:00
benvin 1625d41ad4 Merge pull request 'Add GitHub-release rpm/deb remote kinds' (#54) from benvin/github-pkg-remotes into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #54
2026-10-09 19:23:36 +11:00
unkin-agent c3a96e5fa2 Drop storytold-artcraft remotes and fix apt description grammar
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-10-09 19:18:58 +11:00
unkin-agent 6396c80eaa Add storytold GitHub-release rpm and deb remotes
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-10-09 19:09:17 +11:00
unkin-agent c1c1c9d553 Add remote_github_rpm and remote_github_deb config kinds
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-10-09 19:08:28 +11:00
unkin-agent 9759f059ea allow envoy release binary and checksums on github remote
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-10-07 11:47:31 +11:00
benvin df73beb57d Merge pull request 'ci: use container-opentofu image' (#52) from benvin/opentofu-image into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #52
2026-10-05 14:11:12 +11:00
unkin-agent 39817316ab ci: use container-opentofu image
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-10-05 13:49:23 +11:00
benvin 88f231e752 Merge pull request 'allow kubectl plugin release assets' (#51) from benvin/kubectl-plugins-allowlist into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #51
2026-10-02 23:49:05 +10:00
unkin-agent 37688d237a allow kubectl plugin release assets in github remote
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-10-02 23:43:54 +10:00
benvin afb0b51dc6 Merge pull request 'allow kubectl-cnpg release assets through the github remote' (#50) from benvin/kubectl-cnpg into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #50
2026-10-02 23:30:03 +10:00
unkin-agent 69c9938c64 feat: allow kubectl-cnpg release assets through the github remote
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-10-02 23:18:19 +10:00
benvin 0c1b2a0504 Merge pull request 'Allow victoria-metrics-k8s-stack dashboard sources on github_user' (#49) from benvin/vm-k8s-stack-dashboards into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #49
2026-10-02 23:00:26 +10:00
unkin-agent 0e1add0d43 Allow victoria-metrics-k8s-stack dashboard sources on github_user
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-10-02 22:48:08 +10:00
benvin b7e10718c3 Merge pull request 'ci: allow manual trigger of apply on main' (#48) from benvin/apply-manual-trigger into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #48
2026-09-19 23:36:36 +10:00
unkin-agent 0a245e7bca ci: allow manual trigger of apply on main
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-09-19 22:32:40 +10:00
benvin dc07c26c2e Merge pull request 'feat: add jellyfin-plugins local generic repo' (#47) from benvin/jellyfin-plugins-local into main
Reviewed-on: #47
2026-09-19 18:41:25 +10:00
unkin-agent e8c09807ae feat: add jellyfin-plugins local generic repo 2026-09-19 17:42:00 +10:00
benvin f64b553e15 Merge pull request 'feat: allow argocd CLI release assets through the github remote' (#46) from benvin/argocd-cli-remote into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #46
2026-09-19 16:29:07 +10:00
unkin-agent f0e63a091e feat: allow argocd CLI release assets through the github remote
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-09-19 16:22:41 +10:00
benvin 03eb79f27b Merge pull request 'Allow GitHub branch archives through the github remote' (#45) from benvin/github-branch-archives into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #45
2026-09-11 23:37:08 +10:00
unkin-agent d7542d8fe2 Narrow GitHub branch archives to named repos
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
The wildcard heads entries admitted a branch archive from any repository
on GitHub. patterns is the admission allowlist, so only the repos that
need a branch install belong in it.

- Replace the wildcard heads entries with one anchored entry per repo
- Cover the 14 Neovim plugins that publish no tags, zip and tar.gz
- List each repo in both patterns and mutable_patterns
2026-09-11 23:34:12 +10:00
unkin-agent b76fddecb9 Allow GitHub branch archives through the github remote
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
patterns is a strict allowlist evaluated before mutable_patterns, so
/archive/refs/heads/ downloads are denied despite the mutable entry.

- Add heads .zip and .tar.gz to patterns
- Add heads .zip to mutable_patterns and escape the tar.gz dots
2026-09-11 23:26:29 +10:00
benvin 9ef54c7338 Merge pull request 'Add gitea generic remote for internal tag archives' (#44) from benvin/gitea-generic-remote into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #44
2026-09-09 23:47:47 +10:00
unkin-agent 20838caa8f Add gitea generic remote for internal tag archives
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Proxy unkin tag source zips from git.unkin.net through artifactapi.
2026-09-09 23:32:31 +10:00
benvin 00a931ed35 Merge pull request 'Allow stylua linux release assets through the github remote' (#42) from benvin/stylua-release-asset into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #42
2026-09-09 22:36:12 +10:00
benvin 35c1fb2195 Merge pull request 'Add nvim-plugins local generic repo' (#43) from benvin/nvim-plugins-local-generic into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #43
2026-09-09 22:34:57 +10:00
unkin-agent 901aaf1f1f Add nvim-plugins local generic repo
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Receives Neovim plugin release archives for arti-pack installs.
2026-09-09 21:12:00 +10:00
unkin-agent e7c4c76002 Allow stylua linux release assets through the github remote
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-09-09 21:05:06 +10:00
benvin ad8d530687 Merge pull request 'Allow GitHub tag zip archives through the github remote' (#41) from benvin/github-tag-zips into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #41
2026-09-08 00:37:09 +10:00
unkin-agent 888e3e84ce Allow GitHub tag zip archives through the github remote
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-09-07 23:49:10 +10:00
benvin 5a0c1fe814 Merge pull request 'Add artifactapi remotes for jellyfin-ha auth plugins' (#39) from benvin/jellyfin-plugin-remotes into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #39
2026-08-29 11:52:23 +10:00
unkin-agent 11c3059b05 Add artifactapi remotes for jellyfin-ha auth plugins
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
jellyfin-ha bakes the LDAP and SSO auth plugins into its image, and all
outside artifacts must be fetched via artifactapi rather than direct.

- Add remote_generic/jellyfin.yaml proxying repo.jellyfin.org, scoped to
  the ldap-authentication plugin zip.
- Add a github.yaml pattern for 9p4/jellyfin-plugin-sso release zips
  (GitHub redirects release downloads to objects.githubusercontent.com,
  which the existing github remote already follows).
2026-08-26 23:23:27 +10:00
benvin e7113bb0b3 Merge pull request 'Allow ghcr.io/arabcoders/watchstate via artifactapi' (#38) from benvin/ghcr-remote into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #38
2026-08-24 21:39:05 +10:00
unkin-agent b776d16a9c Narrow arabcoders allow-pattern to watchstate per review
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
2026-08-24 21:37:30 +10:00
unkin-agent 5596088c57 Allow ghcr.io/arabcoders/watchstate via artifactapi
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
Add arabcoders pattern to ghcr remote to enable pulling watchstate
image through artifactapi for media watch-state sync deployment.
2026-08-24 21:22:58 +10:00
benvin 4e141add6f Merge pull request 'Run plan without acquiring the Consul state lock' (#37) from benvin/lockfree-plan into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #37
2026-08-23 22:31:48 +10:00
unkin-agent 1013d5a26b Run plan without acquiring the Consul state lock
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
PR plan pipelines were failing with "Error acquiring the state lock"
when they collided with a concurrent apply (or another plan) holding
the lock on the same Consul-backed state.

- plan: pass -lock=false to terragrunt plan; apply keeps locking
2026-08-23 22:21:06 +10:00
benvin f160ded56f Merge pull request 'Allow kube-state-metrics through the k8s-registry docker remote' (#36) from benvin/registry-k8s-io into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #36
2026-08-23 21:36:37 +10:00
unkin-agent 35b44f3956 Allow kube-state-metrics through the k8s-registry docker remote
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
2026-08-23 21:32:05 +10:00
48 changed files with 429 additions and 18 deletions
+3 -1
View File
@@ -1,10 +1,12 @@
when: when:
- event: push - event: push
branch: main branch: main
- event: manual
branch: main
steps: steps:
- name: apply - name: apply
image: git.unkin.net/unkin/almalinux9-opentofu:20260606 image: artifactapi.k8s.syd1.au.unkin.net/docker-internal/opentofu:0.1.0
environment: environment:
VAULT_AUTH_METHOD: kubernetes VAULT_AUTH_METHOD: kubernetes
VAULT_VERSION: "1.20.0" VAULT_VERSION: "1.20.0"
+1 -1
View File
@@ -3,7 +3,7 @@ when:
steps: steps:
- name: plan - name: plan
image: git.unkin.net/unkin/almalinux9-opentofu:20260606 image: artifactapi.k8s.syd1.au.unkin.net/docker-internal/opentofu:0.1.0
environment: environment:
VAULT_AUTH_METHOD: kubernetes VAULT_AUTH_METHOD: kubernetes
VAULT_VERSION: "1.20.0" VAULT_VERSION: "1.20.0"
+1 -1
View File
@@ -3,7 +3,7 @@ when:
steps: steps:
- name: pre-commit - name: pre-commit
image: git.unkin.net/unkin/almalinux9-opentofu:20260606 image: artifactapi.k8s.syd1.au.unkin.net/docker-internal/opentofu:0.1.0
commands: commands:
- uvx pre-commit run --all-files - uvx pre-commit run --all-files
backend_options: backend_options:
+1 -1
View File
@@ -21,7 +21,7 @@ init:
plan: init plan: init
@$(call vault_env) && \ @$(call vault_env) && \
terragrunt run --all --parallelism 4 --non-interactive plan terragrunt run --all --parallelism 4 --non-interactive plan -- -lock=false
apply: init apply: init
@$(call vault_env) && \ @$(call vault_env) && \
+20
View File
@@ -12,6 +12,11 @@ locals {
trimsuffix(basename(file_path), ".yaml") => content trimsuffix(basename(file_path), ".yaml") => content
if startswith(file_path, "remote_alpine/") if startswith(file_path, "remote_alpine/")
} }
remote_cargo = {
for file_path, content in local.all_configs :
trimsuffix(basename(file_path), ".yaml") => content
if startswith(file_path, "remote_cargo/")
}
remote_docker = { remote_docker = {
for file_path, content in local.all_configs : for file_path, content in local.all_configs :
trimsuffix(basename(file_path), ".yaml") => content trimsuffix(basename(file_path), ".yaml") => content
@@ -22,6 +27,16 @@ locals {
trimsuffix(basename(file_path), ".yaml") => content trimsuffix(basename(file_path), ".yaml") => content
if startswith(file_path, "remote_generic/") if startswith(file_path, "remote_generic/")
} }
remote_github_deb = {
for file_path, content in local.all_configs :
trimsuffix(basename(file_path), ".yaml") => content
if startswith(file_path, "remote_github_deb/")
}
remote_github_rpm = {
for file_path, content in local.all_configs :
trimsuffix(basename(file_path), ".yaml") => content
if startswith(file_path, "remote_github_rpm/")
}
remote_goproxy = { remote_goproxy = {
for file_path, content in local.all_configs : for file_path, content in local.all_configs :
trimsuffix(basename(file_path), ".yaml") => content trimsuffix(basename(file_path), ".yaml") => content
@@ -32,6 +47,11 @@ locals {
trimsuffix(basename(file_path), ".yaml") => content trimsuffix(basename(file_path), ".yaml") => content
if startswith(file_path, "remote_helm/") if startswith(file_path, "remote_helm/")
} }
remote_npm = {
for file_path, content in local.all_configs :
trimsuffix(basename(file_path), ".yaml") => content
if startswith(file_path, "remote_npm/")
}
remote_pypi = { remote_pypi = {
for file_path, content in local.all_configs : for file_path, content in local.all_configs :
trimsuffix(basename(file_path), ".yaml") => content trimsuffix(basename(file_path), ".yaml") => content
@@ -0,0 +1,2 @@
---
description: "Jellyfin plugin zips built in-house (JPRM release archives published on tag)"
+2
View File
@@ -0,0 +1,2 @@
---
description: "Neovim plugin release archives (<plugin>-<version>.zip) installed by arti-pack"
+6
View File
@@ -0,0 +1,6 @@
base_url: https://index.crates.io
description: "crates.io — public Rust crate sparse index"
immutable_ttl: 0
mutable_ttl: 300
check_mutable: true
stale_on_error: true
+3
View File
@@ -13,9 +13,11 @@ patterns:
- "^library/nats" - "^library/nats"
- "^library/nginx" - "^library/nginx"
- "^library/postgres" - "^library/postgres"
- "^library/python"
- "^library/redis" - "^library/redis"
- "^beats/filebeat" - "^beats/filebeat"
- "^bitnami/" - "^bitnami/"
- "^clamav/clamav"
- "^clickhouse/" - "^clickhouse/"
- "^curlimages/curl" - "^curlimages/curl"
- "^emberstack/kubernetes-reflector" - "^emberstack/kubernetes-reflector"
@@ -34,6 +36,7 @@ patterns:
- "^osixia/" - "^osixia/"
- "^rancher/" - "^rancher/"
- "^rspamd/rspamd" - "^rspamd/rspamd"
- "^stalwartlabs/(stalwart|cli)"
- "^tiredofit/" - "^tiredofit/"
- "^timberio/vector" - "^timberio/vector"
- "^tozd/postfix" - "^tozd/postfix"
+1
View File
@@ -3,6 +3,7 @@ description: GitHub Container Registry
immutable_ttl: 0 immutable_ttl: 0
mutable_ttl: 300 mutable_ttl: 300
patterns: patterns:
- "^arabcoders/watchstate"
- "^cloudnative-pg/" - "^cloudnative-pg/"
- "^dexidp/" - "^dexidp/"
- "^emberstack/helm-charts" - "^emberstack/helm-charts"
+2
View File
@@ -5,4 +5,6 @@ mutable_ttl: 300
patterns: patterns:
- "^autoscaling/vpa-" - "^autoscaling/vpa-"
- "^external-dns/external-dns" - "^external-dns/external-dns"
- "^kube-state-metrics/"
- "^kubectl"
- "^sig-storage/" - "^sig-storage/"
+6
View File
@@ -0,0 +1,6 @@
base_url: https://git.unkin.net
description: Internal Gitea unkin tag source archives
immutable_ttl: 0
mutable_ttl: 7200
patterns:
- "^unkin/[^/]+/archive/refs/tags/[^/]+\\.zip$"
+53 -1
View File
@@ -3,24 +3,71 @@ description: GitHub releases and files
immutable_ttl: 0 immutable_ttl: 0
mutable_ttl: 7200 mutable_ttl: 7200
mutable_patterns: mutable_patterns:
- ".*/archive/refs/heads/.*.tar.gz$" # Branch archives of tagless Neovim plugins; a branch ref moves, so these
# revalidate on mutable_ttl instead of caching immutably.
- "^HampusHauffman/block\\.nvim/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^hrsh7th/cmp-buffer/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^hrsh7th/cmp-nvim-lsp/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^hrsh7th/cmp-nvim-lsp-signature-help/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^hrsh7th/cmp-nvim-lua/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^hrsh7th/cmp-path/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^hrsh7th/cmp-vsnip/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^hrsh7th/vim-vsnip/archive/refs/heads/master\\.(zip|tar\\.gz)$"
- "^junegunn/gv\\.vim/archive/refs/heads/master\\.(zip|tar\\.gz)$"
- "^jvirtanen/vim-hcl/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^Mofiqul/dracula\\.nvim/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^numToStr/FTerm\\.nvim/archive/refs/heads/master\\.(zip|tar\\.gz)$"
- "^qvalentin/helm-ls\\.nvim/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^rafamadriz/friendly-snippets/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "stalwartlabs/webadmin/releases/latest/download/webadmin.zip$" - "stalwartlabs/webadmin/releases/latest/download/webadmin.zip$"
# iplocate IP databases (Git-LFS; the /raw/ path redirects to the LFS media host). # iplocate IP databases (Git-LFS; the /raw/ path redirects to the LFS media host).
- "iplocate/ip-address-databases/raw/.*/ip-to-asn/.*" - "iplocate/ip-address-databases/raw/.*/ip-to-asn/.*"
- "iplocate/ip-address-databases/raw/.*/ip-to-country/.*" - "iplocate/ip-address-databases/raw/.*/ip-to-country/.*"
patterns: patterns:
# Branch archives of Neovim plugins that publish no tags. patterns is a
# strict allowlist checked before mutable_patterns, so each repo must be
# listed in both. Anchored per repo: matching is a substring search, so an
# unanchored entry would also admit evil/<owner>/<repo>/....
- "^HampusHauffman/block\\.nvim/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^hrsh7th/cmp-buffer/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^hrsh7th/cmp-nvim-lsp/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^hrsh7th/cmp-nvim-lsp-signature-help/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^hrsh7th/cmp-nvim-lua/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^hrsh7th/cmp-path/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^hrsh7th/cmp-vsnip/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^hrsh7th/vim-vsnip/archive/refs/heads/master\\.(zip|tar\\.gz)$"
- "^junegunn/gv\\.vim/archive/refs/heads/master\\.(zip|tar\\.gz)$"
- "^jvirtanen/vim-hcl/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^Mofiqul/dracula\\.nvim/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^numToStr/FTerm\\.nvim/archive/refs/heads/master\\.(zip|tar\\.gz)$"
- "^qvalentin/helm-ls\\.nvim/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- "^rafamadriz/friendly-snippets/archive/refs/heads/main\\.(zip|tar\\.gz)$"
- ".*/archive/refs/tags/.*.tar.gz$" - ".*/archive/refs/tags/.*.tar.gz$"
- ".*/archive/refs/tags/.*\\.zip$"
- "9p4/jellyfin-plugin-sso/.*/sso-authentication_.*.zip$"
- "ahmetb/kubectl-tree/.*/kubectl-tree_.*_checksums.txt$"
- "ahmetb/kubectl-tree/.*/kubectl-tree_.*_linux_amd64.tar.gz$"
- "ahmetb/kubectx/.*/kubectx_.*_linux_x86_64.tar.gz$" - "ahmetb/kubectx/.*/kubectx_.*_linux_x86_64.tar.gz$"
- "ahmetb/kubectx/.*/kubens_.*_linux_x86_64.tar.gz$" - "ahmetb/kubectx/.*/kubens_.*_linux_x86_64.tar.gz$"
- "apple/foundationdb/.*/libfdb_c.x86_64.so$" - "apple/foundationdb/.*/libfdb_c.x86_64.so$"
- "argoproj/argo-cd/.*/argocd-linux-amd64$"
- "argoproj/argo-cd/.*/cli_checksums.txt$"
- "astral-sh/ruff/.*/ruff-x86_64-unknown-linux-gnu.tar.gz$" - "astral-sh/ruff/.*/ruff-x86_64-unknown-linux-gnu.tar.gz$"
- "astral-sh/uv/.*/uv-x86_64-unknown-linux-gnu.tar.gz$" - "astral-sh/uv/.*/uv-x86_64-unknown-linux-gnu.tar.gz$"
- "camptocamp/prometheus-puppetdb-exporter/.*/prometheus-puppetdb-exporter-.*.linux-amd64.tar.gz$" - "camptocamp/prometheus-puppetdb-exporter/.*/prometheus-puppetdb-exporter-.*.linux-amd64.tar.gz$"
- "cert-manager/cmctl/.*/checksums.txt$"
- "cert-manager/cmctl/.*/cmctl_linux_amd64$"
- "cloudnative-pg/cloudnative-pg/.*/cnpg-.*-checksums.txt$"
- "cloudnative-pg/cloudnative-pg/.*/kubectl-cnpg_.*_linux_x86_64.tar.gz$"
- "coder/code-server/.*/code-server-.*-amd64.rpm$" - "coder/code-server/.*/code-server-.*-amd64.rpm$"
- "containernetworking/plugins/.*/cni-plugins-linux-amd64-.*.tgz" - "containernetworking/plugins/.*/cni-plugins-linux-amd64-.*.tgz"
- "dandavison/delta/.*/delta-.*-x86_64-unknown-linux-musl.tar.gz$" - "dandavison/delta/.*/delta-.*-x86_64-unknown-linux-musl.tar.gz$"
- "ducaale/xh/.*/xh-.*-x86_64-unknown-linux-musl.tar.gz$" - "ducaale/xh/.*/xh-.*-x86_64-unknown-linux-musl.tar.gz$"
- "elsesiy/kubectl-view-secret/.*/kubectl-view-secret_.*_checksums.txt$"
- "elsesiy/kubectl-view-secret/.*/kubectl-view-secret_.*_linux_amd64.tar.gz$"
- "etcd-io/etcd/.*/etcd-.*-linux-amd64.tar.gz$" - "etcd-io/etcd/.*/etcd-.*-linux-amd64.tar.gz$"
- "envoyproxy/envoy/.*/envoy-.*-linux-x86_64$"
- "envoyproxy/envoy/.*/checksums.txt.asc$"
- "getsops/sops/.*/sops-v.*\\.linux\\.amd64$" - "getsops/sops/.*/sops-v.*\\.linux\\.amd64$"
- "grafana/jsonnet-language-server/.*/jsonnet-language-server_.*_linux_amd64$" - "grafana/jsonnet-language-server/.*/jsonnet-language-server_.*_linux_amd64$"
- "gruntwork-io/boilerplate/.*/boilerplate_linux_amd64$" - "gruntwork-io/boilerplate/.*/boilerplate_linux_amd64$"
@@ -33,6 +80,10 @@ patterns:
- "iplocate/ip-address-databases/raw/.*/ip-to-asn/.*" - "iplocate/ip-address-databases/raw/.*/ip-to-asn/.*"
- "iplocate/ip-address-databases/raw/.*/ip-to-country/.*" - "iplocate/ip-address-databases/raw/.*/ip-to-country/.*"
- "jesseduffield/lazydocker/.*/lazydocker_.*_Linux_x86_64.tar.gz$" - "jesseduffield/lazydocker/.*/lazydocker_.*_Linux_x86_64.tar.gz$"
- "JohnnyMorganz/StyLua/.*/stylua-linux-x86_64\\.zip$"
- "JohnnyMorganz/StyLua/.*/stylua-linux-x86_64-musl\\.zip$"
- "k8up-io/k8up/.*/checksums.txt$"
- "k8up-io/k8up/.*/k8up_.*_linux_amd64.tar.gz$"
- "kubecolor/kubecolor/.*/kubecolor_.*_linux_amd64.tar.gz$" - "kubecolor/kubecolor/.*/kubecolor_.*_linux_amd64.tar.gz$"
- "kubernetes-sigs/gateway-api/.*/standard-install.yaml$" - "kubernetes-sigs/gateway-api/.*/standard-install.yaml$"
- "kubernetes-sigs/kustomize/.*/kustomize_.*_linux_amd64.tar.gz$" - "kubernetes-sigs/kustomize/.*/kustomize_.*_linux_amd64.tar.gz$"
@@ -56,6 +107,7 @@ patterns:
- "stalwartlabs/stalwart/.*/stalwart-x86_64-unknown-linux-gnu.tar.gz$" - "stalwartlabs/stalwart/.*/stalwart-x86_64-unknown-linux-gnu.tar.gz$"
- "starship/starship/.*/starship-x86_64-unknown-linux-musl.tar.gz$" - "starship/starship/.*/starship-x86_64-unknown-linux-musl.tar.gz$"
- "stern/stern/.*/stern_.*_linux_amd64.tar.gz$" - "stern/stern/.*/stern_.*_linux_amd64.tar.gz$"
- "^storytold/[a-z]+craft/releases/download/[^/]+/[a-z]+craft-[^/]+-linux-(x86_64|aarch64)\\.(rpm|deb)$"
- "terraform-linters/tflint/.*/tflint_linux_amd64.zip$" - "terraform-linters/tflint/.*/tflint_linux_amd64.zip$"
- "tynany/frr_exporter/.*/frr_exporter-.*.linux-amd64.tar.gz$" - "tynany/frr_exporter/.*/frr_exporter-.*.linux-amd64.tar.gz$"
- "VictoriaMetrics/VictoriaLogs/.*/victoria-logs-linux-amd64-.*.tar.gz$" - "VictoriaMetrics/VictoriaLogs/.*/victoria-logs-linux-amd64-.*.tar.gz$"
+10
View File
@@ -2,8 +2,18 @@ base_url: https://raw.githubusercontent.com
description: GitHub User Content description: GitHub User Content
immutable_ttl: 0 immutable_ttl: 0
mutable_ttl: 7200 mutable_ttl: 7200
mutable_patterns:
# victoria-metrics-k8s-stack dashboard sources; branch refs move, so these
# revalidate on mutable_ttl instead of caching immutably.
- "^dotdc/grafana-dashboards-kubernetes/master/dashboards/k8s-[a-z-]+\\.json$"
- "^monitoring-mixins/website/master/assets/etcd/dashboards/etcd\\.json$"
- "^prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions\\.yaml$"
patterns: patterns:
- "argoproj/argo-cd/.*.yaml$" - "argoproj/argo-cd/.*.yaml$"
- "datreeio/CRDs-catalog/main/.*.json$" - "datreeio/CRDs-catalog/main/.*.json$"
- "kubernetes/kubernetes/.*.json$" - "kubernetes/kubernetes/.*.json$"
- "yannh/kubernetes-json-schema/master/.*.json$" - "yannh/kubernetes-json-schema/master/.*.json$"
# victoria-metrics-k8s-stack dashboard sources (also in mutable_patterns).
- "^dotdc/grafana-dashboards-kubernetes/master/dashboards/k8s-[a-z-]+\\.json$"
- "^monitoring-mixins/website/master/assets/etcd/dashboards/etcd\\.json$"
- "^prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions\\.yaml$"
+6
View File
@@ -0,0 +1,6 @@
base_url: https://repo.jellyfin.org
description: Jellyfin official plugin repository
immutable_ttl: 0
mutable_ttl: 7200
patterns:
- "files/plugin/ldap-authentication/ldap-authentication_.*.zip$"
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/cadcraft
description: storytold/cadcraft GitHub releases as an apt repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/deckcraft
description: storytold/deckcraft GitHub releases as an apt repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/effectcraft
description: storytold/effectcraft GitHub releases as an apt repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/filmcraft
description: storytold/filmcraft GitHub releases as an apt repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/gridcraft
description: storytold/gridcraft GitHub releases as an apt repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/lightcraft
description: storytold/lightcraft GitHub releases as an apt repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/pdfcraft
description: storytold/pdfcraft GitHub releases as an apt repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/photocraft
description: storytold/photocraft GitHub releases as an apt repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/soundcraft
description: storytold/soundcraft GitHub releases as an apt repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/vectorcraft
description: storytold/vectorcraft GitHub releases as an apt repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/wordcraft
description: storytold/wordcraft GitHub releases as an apt repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/cadcraft
description: storytold/cadcraft GitHub releases as a yum repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/deckcraft
description: storytold/deckcraft GitHub releases as a yum repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/effectcraft
description: storytold/effectcraft GitHub releases as a yum repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/filmcraft
description: storytold/filmcraft GitHub releases as a yum repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/gridcraft
description: storytold/gridcraft GitHub releases as a yum repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/lightcraft
description: storytold/lightcraft GitHub releases as a yum repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/pdfcraft
description: storytold/pdfcraft GitHub releases as a yum repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/photocraft
description: storytold/photocraft GitHub releases as a yum repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/soundcraft
description: storytold/soundcraft GitHub releases as a yum repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/vectorcraft
description: storytold/vectorcraft GitHub releases as a yum repo
releases_remote: github
@@ -0,0 +1,3 @@
base_url: https://api.github.com/repos/storytold/wordcraft
description: storytold/wordcraft GitHub releases as a yum repo
releases_remote: github
+5
View File
@@ -0,0 +1,5 @@
base_url: https://registry.npmjs.org
description: "npm — public npm registry"
immutable_ttl: 0
mutable_ttl: 3600
stale_on_error: true
+7
View File
@@ -0,0 +1,7 @@
base_url: https://rspamd.com
description: Rspamd RPM package repository
immutable_ttl: 0
mutable_ttl: 7200
immutable_patterns:
- ".*\\.rpm$"
- "rpm/rspamd\\.asc$"
+17
View File
@@ -0,0 +1,17 @@
package_type: rpm
description: "Custom el10 RPMs: internal, vendor and GitHub-release packages. Member order is priority order."
members:
- rpm-internal-el10
- rpm-internal
- rpm-vendor
- storytold-cadcraft-rpm
- storytold-deckcraft-rpm
- storytold-effectcraft-rpm
- storytold-filmcraft-rpm
- storytold-gridcraft-rpm
- storytold-lightcraft-rpm
- storytold-pdfcraft-rpm
- storytold-photocraft-rpm
- storytold-soundcraft-rpm
- storytold-vectorcraft-rpm
- storytold-wordcraft-rpm
+18
View File
@@ -0,0 +1,18 @@
package_type: rpm
description: "Custom el8 RPMs: internal, vendor and GitHub-release packages. Member order is priority order."
members:
- rpm-internal-el8
- rpm-vendor-el8
- rpm-internal
- rpm-vendor
- storytold-cadcraft-rpm
- storytold-deckcraft-rpm
- storytold-effectcraft-rpm
- storytold-filmcraft-rpm
- storytold-gridcraft-rpm
- storytold-lightcraft-rpm
- storytold-pdfcraft-rpm
- storytold-photocraft-rpm
- storytold-soundcraft-rpm
- storytold-vectorcraft-rpm
- storytold-wordcraft-rpm
+18
View File
@@ -0,0 +1,18 @@
package_type: rpm
description: "Custom el9 RPMs: internal, vendor and GitHub-release packages. Member order is priority order."
members:
- rpm-internal-el9
- rpm-vendor-el9
- rpm-internal
- rpm-vendor
- storytold-cadcraft-rpm
- storytold-deckcraft-rpm
- storytold-effectcraft-rpm
- storytold-filmcraft-rpm
- storytold-gridcraft-rpm
- storytold-lightcraft-rpm
- storytold-pdfcraft-rpm
- storytold-photocraft-rpm
- storytold-soundcraft-rpm
- storytold-vectorcraft-rpm
- storytold-wordcraft-rpm
+18
View File
@@ -0,0 +1,18 @@
package_type: rpm
description: "Custom f42 RPMs: internal, vendor and GitHub-release packages. Member order is priority order."
members:
- rpm-internal-f42
- rpm-vendor-f42
- rpm-internal
- rpm-vendor
- storytold-cadcraft-rpm
- storytold-deckcraft-rpm
- storytold-effectcraft-rpm
- storytold-filmcraft-rpm
- storytold-gridcraft-rpm
- storytold-lightcraft-rpm
- storytold-pdfcraft-rpm
- storytold-photocraft-rpm
- storytold-soundcraft-rpm
- storytold-vectorcraft-rpm
- storytold-wordcraft-rpm
+18
View File
@@ -0,0 +1,18 @@
package_type: rpm
description: "Custom f43 RPMs: internal, vendor and GitHub-release packages. Member order is priority order."
members:
- rpm-internal-f43
- rpm-vendor-f43
- rpm-internal
- rpm-vendor
- storytold-cadcraft-rpm
- storytold-deckcraft-rpm
- storytold-effectcraft-rpm
- storytold-filmcraft-rpm
- storytold-gridcraft-rpm
- storytold-lightcraft-rpm
- storytold-pdfcraft-rpm
- storytold-photocraft-rpm
- storytold-soundcraft-rpm
- storytold-vectorcraft-rpm
- storytold-wordcraft-rpm
+18
View File
@@ -0,0 +1,18 @@
package_type: rpm
description: "Custom f44 RPMs: internal, vendor and GitHub-release packages. Member order is priority order."
members:
- rpm-internal-f44
- rpm-vendor-f44
- rpm-internal
- rpm-vendor
- storytold-cadcraft-rpm
- storytold-deckcraft-rpm
- storytold-effectcraft-rpm
- storytold-filmcraft-rpm
- storytold-gridcraft-rpm
- storytold-lightcraft-rpm
- storytold-pdfcraft-rpm
- storytold-photocraft-rpm
- storytold-soundcraft-rpm
- storytold-vectorcraft-rpm
- storytold-wordcraft-rpm
@@ -17,17 +17,21 @@ terraform {
} }
inputs = { inputs = {
remote_alpine = local.config.remote_alpine remote_alpine = local.config.remote_alpine
remote_docker = local.config.remote_docker remote_cargo = local.config.remote_cargo
remote_generic = local.config.remote_generic remote_docker = local.config.remote_docker
remote_goproxy = local.config.remote_goproxy remote_generic = local.config.remote_generic
remote_helm = local.config.remote_helm remote_github_deb = local.config.remote_github_deb
remote_pypi = local.config.remote_pypi remote_github_rpm = local.config.remote_github_rpm
remote_rpm = local.config.remote_rpm remote_goproxy = local.config.remote_goproxy
local_terraform = local.config.local_terraform remote_helm = local.config.remote_helm
local_pypi = local.config.local_pypi remote_npm = local.config.remote_npm
local_rpm = local.config.local_rpm remote_pypi = local.config.remote_pypi
local_docker = local.config.local_docker remote_rpm = local.config.remote_rpm
local_generic = local.config.local_generic local_terraform = local.config.local_terraform
virtual = local.config.virtual local_pypi = local.config.local_pypi
local_rpm = local.config.local_rpm
local_docker = local.config.local_docker
local_generic = local.config.local_generic
virtual = local.config.virtual
} }
+55
View File
@@ -13,6 +13,20 @@ resource "artifactapi_remote_alpine" "this" {
mirror_strategy = each.value.mirror_strategy mirror_strategy = each.value.mirror_strategy
} }
resource "artifactapi_remote_cargo" "this" {
for_each = var.remote_cargo
name = each.key
base_url = each.value.base_url
description = each.value.description
immutable_ttl = each.value.immutable_ttl
mutable_ttl = each.value.mutable_ttl
check_mutable = each.value.check_mutable
patterns = each.value.patterns
mutable_patterns = each.value.mutable_patterns
stale_on_error = each.value.stale_on_error
}
resource "artifactapi_remote_docker" "this" { resource "artifactapi_remote_docker" "this" {
for_each = var.remote_docker for_each = var.remote_docker
@@ -80,6 +94,47 @@ resource "artifactapi_remote_rpm" "this" {
mirror_strategy = each.value.mirror_strategy mirror_strategy = each.value.mirror_strategy
} }
resource "artifactapi_remote_github_rpm" "this" {
for_each = var.remote_github_rpm
name = each.key
base_url = each.value.base_url
description = each.value.description
releases_remote = each.value.releases_remote
mutable_ttl = each.value.mutable_ttl
patterns = each.value.patterns
stale_on_error = each.value.stale_on_error
depends_on = [artifactapi_remote_generic.this]
}
resource "artifactapi_remote_github_deb" "this" {
for_each = var.remote_github_deb
name = each.key
base_url = each.value.base_url
description = each.value.description
releases_remote = each.value.releases_remote
mutable_ttl = each.value.mutable_ttl
patterns = each.value.patterns
stale_on_error = each.value.stale_on_error
depends_on = [artifactapi_remote_generic.this]
}
resource "artifactapi_remote_npm" "this" {
for_each = var.remote_npm
name = each.key
base_url = each.value.base_url
description = each.value.description
immutable_ttl = each.value.immutable_ttl
mutable_ttl = each.value.mutable_ttl
patterns = each.value.patterns
mutable_patterns = each.value.mutable_patterns
stale_on_error = each.value.stale_on_error
}
resource "artifactapi_remote_pypi" "this" { resource "artifactapi_remote_pypi" "this" {
for_each = var.remote_pypi for_each = var.remote_pypi
+55
View File
@@ -14,6 +14,21 @@ variable "remote_alpine" {
default = {} default = {}
} }
variable "remote_cargo" {
description = "Map of cargo (crates.io sparse index) remote repositories"
type = map(object({
base_url = string
description = optional(string, "")
immutable_ttl = optional(number, 0)
mutable_ttl = optional(number, 3600)
check_mutable = optional(bool, true)
patterns = optional(list(string), [])
mutable_patterns = optional(list(string), [])
stale_on_error = optional(bool, true)
}))
default = {}
}
variable "remote_docker" { variable "remote_docker" {
description = "Map of Docker remote repositories" description = "Map of Docker remote repositories"
type = map(object({ type = map(object({
@@ -86,6 +101,46 @@ variable "remote_rpm" {
default = {} default = {}
} }
variable "remote_github_rpm" {
description = "Map of GitHub-release-backed RPM remote repositories"
type = map(object({
base_url = string
description = optional(string, "")
releases_remote = string
mutable_ttl = optional(number, 3600)
patterns = optional(list(string), [])
stale_on_error = optional(bool, true)
}))
default = {}
}
variable "remote_github_deb" {
description = "Map of GitHub-release-backed DEB remote repositories"
type = map(object({
base_url = string
description = optional(string, "")
releases_remote = string
mutable_ttl = optional(number, 3600)
patterns = optional(list(string), [])
stale_on_error = optional(bool, true)
}))
default = {}
}
variable "remote_npm" {
description = "Map of npm remote repositories"
type = map(object({
base_url = string
description = optional(string, "")
immutable_ttl = optional(number, 0)
mutable_ttl = optional(number, 3600)
patterns = optional(list(string), [])
mutable_patterns = optional(list(string), [])
stale_on_error = optional(bool, true)
}))
default = {}
}
variable "remote_pypi" { variable "remote_pypi" {
description = "Map of PyPI remote repositories" description = "Map of PyPI remote repositories"
type = map(object({ type = map(object({