Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8f33d9c562 |
@@ -0,0 +1,24 @@
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.4.0
|
||||
hooks:
|
||||
- id: end-of-file-fixer
|
||||
types: [yaml]
|
||||
- id: trailing-whitespace
|
||||
types: [yaml]
|
||||
- repo: https://github.com/gruntwork-io/pre-commit
|
||||
rev: v0.1.30
|
||||
hooks:
|
||||
- id: tofu-fmt
|
||||
- id: tofu-validate
|
||||
- id: tflint
|
||||
- id: terragrunt-hcl-fmt
|
||||
- repo: https://github.com/adrienverge/yamllint.git
|
||||
rev: v1.37.1
|
||||
hooks:
|
||||
- id: yamllint
|
||||
args:
|
||||
[
|
||||
"-d {extends: relaxed, rules: {line-length: disable}, ignore: chart}",
|
||||
"-s",
|
||||
]
|
||||
@@ -32,11 +32,31 @@ locals {
|
||||
trimsuffix(basename(file_path), ".yaml") => content
|
||||
if startswith(file_path, "remote_helm/")
|
||||
}
|
||||
remote_pypi = {
|
||||
for file_path, content in local.all_configs :
|
||||
trimsuffix(basename(file_path), ".yaml") => content
|
||||
if startswith(file_path, "remote_pypi/")
|
||||
}
|
||||
remote_rpm = {
|
||||
for file_path, content in local.all_configs :
|
||||
trimsuffix(basename(file_path), ".yaml") => content
|
||||
if startswith(file_path, "remote_rpm/")
|
||||
}
|
||||
local_terraform = {
|
||||
for file_path, content in local.all_configs :
|
||||
trimsuffix(basename(file_path), ".yaml") => content
|
||||
if startswith(file_path, "local_terraform/")
|
||||
}
|
||||
local_pypi = {
|
||||
for file_path, content in local.all_configs :
|
||||
trimsuffix(basename(file_path), ".yaml") => content
|
||||
if startswith(file_path, "local_pypi/")
|
||||
}
|
||||
local_rpm = {
|
||||
for file_path, content in local.all_configs :
|
||||
trimsuffix(basename(file_path), ".yaml") => content
|
||||
if startswith(file_path, "local_rpm/")
|
||||
}
|
||||
virtual = {
|
||||
for file_path, content in local.all_configs :
|
||||
trimsuffix(basename(file_path), ".yaml") => content
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
description: "Internal PyPI packages"
|
||||
@@ -0,0 +1 @@
|
||||
description: "Internal RPM packages"
|
||||
@@ -0,0 +1 @@
|
||||
description: "Unkin Terraform modules"
|
||||
@@ -4,5 +4,6 @@ immutable_ttl: 0
|
||||
mutable_ttl: 7200
|
||||
patterns:
|
||||
- "argoproj/argo-cd/.*.yaml$"
|
||||
- "yannh/kubernetes-json-schema/master/.*.json$"
|
||||
- "datreeio/CRDs-catalog/main/.*.json$"
|
||||
- "kubernetes/kubernetes/.*.json$"
|
||||
- "yannh/kubernetes-json-schema/master/.*.json$"
|
||||
@@ -0,0 +1,7 @@
|
||||
base_url: https://charts.goauthentik.io
|
||||
description: Authentik Charts
|
||||
immutable_ttl: 0
|
||||
mutable_ttl: 3600
|
||||
check_mutable: true
|
||||
immutable_patterns:
|
||||
- "\\.tgz$"
|
||||
@@ -0,0 +1,7 @@
|
||||
base_url: https://grafana.github.io/helm-charts
|
||||
description: Grafana Helm charts
|
||||
immutable_ttl: 0
|
||||
mutable_ttl: 3600
|
||||
check_mutable: true
|
||||
immutable_patterns:
|
||||
- "\\.tgz$"
|
||||
@@ -0,0 +1,5 @@
|
||||
base_url: https://pypi.org
|
||||
description: "PyPI — Python Package Index"
|
||||
immutable_ttl: 0
|
||||
mutable_ttl: 3600
|
||||
stale_on_error: true
|
||||
@@ -0,0 +1,6 @@
|
||||
base_url: "https://downloads.claude.ai/claude-code/rpm/stable"
|
||||
description: "Claude Code RPM repository"
|
||||
immutable_patterns:
|
||||
- ".*/x86_64/.*\\.rpm$"
|
||||
- ".*/noarch/.*\\.rpm$"
|
||||
- ".*/repodata/.*\\.xml.*$"
|
||||
@@ -1,10 +1,12 @@
|
||||
package_type: helm
|
||||
description: "Virtual repository merging all helm remotes — member order is priority order for duplicate chart+version"
|
||||
members:
|
||||
- authentik
|
||||
- ceph-csi
|
||||
- cnpg
|
||||
- elastic-helm
|
||||
- external-dns
|
||||
- grafana
|
||||
- hashicorp-helm
|
||||
- intel-helm
|
||||
- jetstack
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package_type: pypi
|
||||
description: "Virtual PyPI repository merging internal packages and upstream PyPI"
|
||||
members:
|
||||
- pypi-internal
|
||||
- pypi
|
||||
@@ -0,0 +1,31 @@
|
||||
include "root" {
|
||||
path = find_in_parent_folders("root.hcl")
|
||||
expose = true
|
||||
}
|
||||
|
||||
include "config" {
|
||||
path = "${get_repo_root()}/config/config.hcl"
|
||||
expose = true
|
||||
}
|
||||
|
||||
locals {
|
||||
config = include.config.locals.config
|
||||
}
|
||||
|
||||
terraform {
|
||||
source = "../../modules/artifactapi"
|
||||
}
|
||||
|
||||
inputs = {
|
||||
remote_alpine = local.config.remote_alpine
|
||||
remote_docker = local.config.remote_docker
|
||||
remote_generic = local.config.remote_generic
|
||||
remote_goproxy = local.config.remote_goproxy
|
||||
remote_helm = local.config.remote_helm
|
||||
remote_pypi = local.config.remote_pypi
|
||||
remote_rpm = local.config.remote_rpm
|
||||
local_terraform = local.config.local_terraform
|
||||
local_pypi = local.config.local_pypi
|
||||
local_rpm = local.config.local_rpm
|
||||
virtual = local.config.virtual
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
include "root" {
|
||||
path = find_in_parent_folders("root.hcl")
|
||||
expose = true
|
||||
}
|
||||
|
||||
include "config" {
|
||||
path = "${get_repo_root()}/config/config.hcl"
|
||||
expose = true
|
||||
}
|
||||
|
||||
locals {
|
||||
config = include.config.locals.config
|
||||
}
|
||||
|
||||
terraform {
|
||||
source = "../../../modules/artifactapi"
|
||||
}
|
||||
|
||||
inputs = {
|
||||
remote_alpine = local.config.remote_alpine
|
||||
remote_docker = local.config.remote_docker
|
||||
remote_generic = local.config.remote_generic
|
||||
remote_goproxy = local.config.remote_goproxy
|
||||
remote_helm = local.config.remote_helm
|
||||
remote_rpm = local.config.remote_rpm
|
||||
virtual = local.config.virtual
|
||||
}
|
||||
@@ -3,7 +3,7 @@ generate "backend" {
|
||||
if_exists = "overwrite"
|
||||
contents = <<EOF
|
||||
provider "artifactapi" {
|
||||
endpoint = "https://artifactapi.k8s.syd1.au.unkin.net"
|
||||
endpoint = "https://${path_relative_to_include()}"
|
||||
}
|
||||
|
||||
terraform {
|
||||
@@ -18,7 +18,7 @@ terraform {
|
||||
required_providers {
|
||||
artifactapi = {
|
||||
source = "git.unkin.net/unkin/artifactapi"
|
||||
version = "0.0.1"
|
||||
version = "0.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,6 +76,40 @@ resource "artifactapi_remote_rpm" "this" {
|
||||
stale_on_error = each.value.stale_on_error
|
||||
}
|
||||
|
||||
resource "artifactapi_remote_pypi" "this" {
|
||||
for_each = var.remote_pypi
|
||||
|
||||
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_local_terraform" "this" {
|
||||
for_each = var.local_terraform
|
||||
|
||||
name = each.key
|
||||
description = each.value.description
|
||||
}
|
||||
|
||||
resource "artifactapi_local_pypi" "this" {
|
||||
for_each = var.local_pypi
|
||||
|
||||
name = each.key
|
||||
description = each.value.description
|
||||
}
|
||||
|
||||
resource "artifactapi_local_rpm" "this" {
|
||||
for_each = var.local_rpm
|
||||
|
||||
name = each.key
|
||||
description = each.value.description
|
||||
}
|
||||
|
||||
resource "artifactapi_virtual" "this" {
|
||||
for_each = var.virtual
|
||||
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
terraform {
|
||||
required_version = ">= 1.10"
|
||||
required_providers {
|
||||
artifactapi = {
|
||||
source = "git.unkin.net/unkin/artifactapi"
|
||||
version = "0.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -82,6 +82,44 @@ variable "remote_rpm" {
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "remote_pypi" {
|
||||
description = "Map of PyPI 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 "local_pypi" {
|
||||
description = "Map of local PyPI repositories"
|
||||
type = map(object({
|
||||
description = optional(string, "")
|
||||
}))
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "local_rpm" {
|
||||
description = "Map of local RPM repositories"
|
||||
type = map(object({
|
||||
description = optional(string, "")
|
||||
}))
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "local_terraform" {
|
||||
description = "Map of local Terraform repositories"
|
||||
type = map(object({
|
||||
description = optional(string, "")
|
||||
}))
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "virtual" {
|
||||
description = "Map of virtual repositories"
|
||||
type = map(object({
|
||||
|
||||
Reference in New Issue
Block a user