registry

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 31, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Overview

Package registry 는 스택이 선택한 이미지 레지스트리에 맞춰 이미지 저장 위치를 결정한다.

GitLab 스택에서는 앱 프로젝트 자신의 Container Registry 를 쓰지만, Harbor 를 고른 스택에서는 Harbor 프로젝트를 써야 한다. CI 스크립트가 특정 레지스트리를 전제하지 않도록 이 결정을 한곳에 모은다.

Index

Constants

View Source
const (

	// GHCRHost 는 GitHub Container Registry 의 호스트다.
	GHCRHost = "ghcr.io"
)

Variables

This section is empty.

Functions

func ResolverFor

func ResolverFor(cfg Config) (port.ImageRegistryResolver, error)

ResolverFor 는 스택 구성에 맞는 resolver 를 고른다.

어디에 올릴지 정할 수 없으면 실패한다 — 기본값으로 조용히 흘리면 CI 가 엉뚱한 곳에 이미지를 올리고, 배포는 존재하지 않는 이미지를 집게 된다.

Types

type Config

type Config struct {
	// ToolName 은 스택이 고른 도구 이름이다 (예: "GitLab Registry", "Harbor").
	ToolName string
	// HarborHost 는 Harbor 를 고른 경우의 호스트다.
	HarborHost string
	// NexusDockerHost 는 Nexus 를 고른 경우의 Docker 커넥터 호스트다.
	//
	// Nexus 는 웹 UI 와 Docker 레지스트리를 다른 포트로 연다. UI 주소로 push
	// 하면 이미지 대신 HTML 을 받아 원인을 알기 어려운 실패가 나므로 별도 값이다.
	NexusDockerHost string
	// ExternalRepositoryPrefix 는 외부 레지스트리의 저장소 접두사다
	// (예: "ghcr.io/acme"). 알 수 없는 도구의 폴백으로도 쓴다.
	ExternalRepositoryPrefix string
	// GitHubOwner 는 GHCR 을 고른 경우의 organization/사용자다.
	// GHCR 경로가 ghcr.io/{owner}/{repo} 라서 소유자를 알아야 한다.
	GitHubOwner string
}

Config 는 스택 구성에서 온 레지스트리 선택 정보다.

type ExternalResolver

type ExternalResolver struct {
	// contains filtered or unexported fields
}

ExternalResolver 는 클러스터 밖 레지스트리를 쓴다.

func NewExternalResolver

func NewExternalResolver(prefix string) *ExternalResolver

NewExternalResolver 는 저장소 접두사(예: "ghcr.io/acme")로 resolver 를 만든다.

func (*ExternalResolver) Resolve

Resolve 는 {prefix}/{app} 경로를 만든다.

type GHCRResolver

type GHCRResolver struct {
	// contains filtered or unexported fields
}

GHCRResolver 는 GitHub Container Registry 를 쓴다.

다른 레지스트리와 달리 자격증명을 등록받지 않는다 — GitHub Actions 잡은 내장 GITHUB_TOKEN 으로 자기 리포의 패키지에 push 할 수 있다(packages: write). 사용자에게 시크릿을 요구하면 쓸데없이 PAT 가 워크플로에 노출된다.

func NewGHCRResolver

func NewGHCRResolver(owner string) *GHCRResolver

NewGHCRResolver 는 organization/사용자 이름으로 resolver 를 만든다.

func (*GHCRResolver) Resolve

Resolve 는 ghcr.io/{owner}/{repo} 경로를 만든다.

GitHub 어댑터가 알려준 경로가 있으면 그것을 쓴다 — 리포 이름이 앱 이름과 다를 수 있고(이미 있는 리포를 재사용하는 경우), 그때 앱 이름으로 조립하면 존재하지 않는 패키지를 가리키게 된다.

type HarborResolver

type HarborResolver struct {
	// contains filtered or unexported fields
}

HarborResolver 는 독립 설치된 Harbor 를 쓴다.

func NewHarborResolver

func NewHarborResolver(host string) *HarborResolver

NewHarborResolver 는 HarborResolver 를 만든다.

func (*HarborResolver) Resolve

Resolve 는 {harbor}/{org}/{app} 경로를 만든다.

type NexusResolver

type NexusResolver struct {
	// contains filtered or unexported fields
}

NexusResolver 는 Nexus 의 Docker 커넥터를 쓴다.

Harbor 와 달리 프로젝트 개념이 없다. 이미지는 커넥터 호스트 바로 아래에 놓이므로 조직 경로를 끼워 넣지 않는다 — 넣으면 존재하지 않는 저장소를 가리키게 되고 push 가 거부된다.

func NewNexusResolver

func NewNexusResolver(host string) *NexusResolver

NewNexusResolver 는 Docker 커넥터 호스트(host:port)로 resolver 를 만든다.

func (*NexusResolver) Resolve

Resolve 는 {nexus-docker-host}/{app} 경로를 만든다.

type SCMProjectResolver

type SCMProjectResolver struct{}

SCMProjectResolver 는 SCM 프로젝트에 딸린 레지스트리를 쓴다.

func NewSCMProjectResolver

func NewSCMProjectResolver() *SCMProjectResolver

NewSCMProjectResolver 는 SCMProjectResolver 를 만든다.

func (*SCMProjectResolver) Resolve

Resolve 는 SCM 이 알려준 프로젝트 레지스트리 경로를 그대로 쓴다.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL