b26e651d45
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.
45 lines
1.2 KiB
Terraform
45 lines
1.2 KiB
Terraform
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
|
|
}
|