feat: add artifactapi_remote_github_rpm resource
The artifactapi server gains a github_rpm remote type that exposes a GitHub repo's releases as a metadata-only yum repository (synthesized repodata, no precache, downloads redirected to a backend remote). Surface it through the provider so these remotes are declarable as code alongside the other types. - Register the github_rpm remote resource (artifactapi_remote_github_rpm), reusing the shared remoteResource plumbing; add the NewRemoteGitHubRPM constructor to match its siblings. - Generalize the releases_remote attribute description: it now names the backend remote that serves download bytes for both the terraform remote (URL rewriting) and the github_rpm remote (302 redirect of .rpm downloads). - Document the type and add an example wiring a github_rpm remote to a generic github.com releases_remote. Tests cover the resource metadata type name, the constructor, and mapping of package_type/base_url/releases_remote/patterns through the API model; the resource-count and expected-types assertions are updated. Depends on the github_rpm API surface in artifactapi (separate PR). Cut a minor release (make minor) once merged.
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
artifactapi = {
|
||||
source = "git.unkin.net/unkin/artifactapi"
|
||||
version = "0.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "artifactapi" {
|
||||
endpoint = "https://artifactapi.example.com"
|
||||
}
|
||||
|
||||
# Backend generic remote that serves the actual .rpm bytes from github.com.
|
||||
# Its patterns must allowlist the target repo's release-download assets.
|
||||
resource "artifactapi_remote_generic" "github" {
|
||||
name = "github"
|
||||
base_url = "https://github.com"
|
||||
|
||||
patterns = [
|
||||
"acme/tools/releases/download/.*\\.rpm$",
|
||||
]
|
||||
}
|
||||
|
||||
# Metadata-only remote: scans acme/tools releases for .rpm assets and serves a
|
||||
# synthesized yum repo. Packages are never precached; downloads 302-redirect to
|
||||
# the "github" remote above.
|
||||
resource "artifactapi_remote_github_rpm" "acme_tools" {
|
||||
name = "acme-tools"
|
||||
base_url = "https://api.github.com/repos/acme/tools"
|
||||
description = "acme/tools GitHub releases as a yum repo"
|
||||
releases_remote = artifactapi_remote_generic.github.name
|
||||
|
||||
mutable_ttl = 3600
|
||||
|
||||
# Optional: restrict which release assets become packages.
|
||||
patterns = [
|
||||
".*\\.x86_64\\.rpm$",
|
||||
".*\\.noarch\\.rpm$",
|
||||
]
|
||||
|
||||
# Optional: token for private repos / higher GitHub API rate limits.
|
||||
# password = var.github_token
|
||||
}
|
||||
Reference in New Issue
Block a user