deploy

package
v0.4.2 Latest Latest
Warning

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

Go to latest
Published: Jul 3, 2026 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BackupDatabase added in v0.2.0

func BackupDatabase(client *goss.Client, dbType DBType, dbName, containerName string, destDir string) (string, error)

BackupDatabase dumps a database via pg_dump/mysqldump/mongodump inside its container. Returns the local path to the dump file.

func BackupServices

func BackupServices(client *goss.Client, destDir string) (string, error)

BackupServices creates a tarball of all services on a node and downloads it.

func BuildAndPushImage

func BuildAndPushImage(dir, name string, reg RegistryConfig) (string, error)

BuildAndPushImage builds a Go binary locally, wraps in minimal Docker image, pushes to registry

func BuildImage added in v0.1.0

func BuildImage(dir, name string, reg RegistryConfig, builder BuilderType) (string, error)

func DeployBare added in v0.2.0

func DeployBare(client *goss.Client, name, versionDir string) error

func DeployBlueGreen added in v0.1.0

func DeployBlueGreen(client *goss.Client, name, serviceDir, version string) error

func DeployK3s added in v0.1.0

func DeployK3s(client *goss.Client, name, imageRef, domain string, port int) error

func DeployK3sFromCompose added in v0.1.0

func DeployK3sFromCompose(client *goss.Client, name, versionDir, imageRef string) error

func DeploySwarm added in v0.2.0

func DeploySwarm(client *goss.Client, name, versionDir, imageRef string) error

func DiffVersions added in v0.4.0

func DiffVersions(client *goss.Client, serviceName, verA, verB string) (string, error)

func GenerateCompose

func GenerateCompose(imageRef, serviceName string, port int, hasDB bool) []byte

GenerateCompose generates a docker-compose.yml with optional postgres sidecar

func GetCertInfo

func GetCertInfo(client *goss.Client, domain string) (string, error)

func HealthCheck

func HealthCheck(client *goss.Client, name string, timeout int, healthURL string) error

func InstallAlertRule

func InstallAlertRule(client *goss.Client, ruleFilePath string) error

func InstallAlertmanager

func InstallAlertmanager(client *goss.Client, cfg AlertmanagerConfig) error

func InstallCert added in v0.1.0

func InstallCert(client *goss.Client, cfg CertConfig) error

func InstallPromtail

func InstallPromtail(client *goss.Client, cfg PromtailConfig) error

func ListBackupSchedules added in v0.2.0

func ListBackupSchedules(client *goss.Client) ([]string, error)

ListBackupSchedules lists active systemd backup timers.

func ListDatabases added in v0.2.0

func ListDatabases(client *goss.Client) ([]string, error)

func ListServices

func ListServices(client *goss.Client) ([]string, error)

func ListVersions

func ListVersions(client *goss.Client, serviceName string) ([]string, error)

func RemoveDatabase added in v0.2.0

func RemoveDatabase(client *goss.Client, name string) error

func RemoveSwarmStack added in v0.2.0

func RemoveSwarmStack(client *goss.Client, name string) error

func RestoreServices

func RestoreServices(client *goss.Client, backupPath string) error

func Rollback

func Rollback(client *goss.Client, serviceName, targetVersion string) error

func RotateDBPassword added in v0.3.0

func RotateDBPassword(client *goss.Client, dbType DBType, containerName, newPass string) (string, error)

func RotateServiceEnv added in v0.3.0

func RotateServiceEnv(client *goss.Client, serviceName, key, newValue string) error

func RunService

func RunService(client *goss.Client, cfg ServiceConfig) error

func ScheduleBackup added in v0.2.0

func ScheduleBackup(client *goss.Client, backupType BackupType, dbName, containerName, cronExpr string, s3Cfg *S3Config) error

ScheduleBackup installs a systemd timer on the remote node that runs a backup script on a cron schedule.

func ServiceLogs

func ServiceLogs(client *goss.Client, name string, tail int, follow bool) error

func ServiceStatus

func ServiceStatus(client *goss.Client, name string) (string, error)

func UninstallAlertmanager

func UninstallAlertmanager(client *goss.Client) error

func UninstallCaddy

func UninstallCaddy(client *goss.Client) error

func UninstallPromtail

func UninstallPromtail(client *goss.Client) error

func UnscheduleBackup added in v0.2.0

func UnscheduleBackup(client *goss.Client, backupType BackupType) error

UnscheduleBackup removes a systemd timer and service.

func UploadImage

func UploadImage(client *goss.Client, serviceName, version string, imageTar []byte) (string, error)

UploadImage uploads a Docker image tar.gz to the VPS and loads it

func UploadToS3 added in v0.2.0

func UploadToS3(localPath string, cfg S3Config) error

UploadToS3 uploads a local file to S3-compatible storage.

Types

type AlertmanagerConfig

type AlertmanagerConfig struct {
	SlackWebhookURL string
	Email           string
	TelegramToken   string
	TelegramChatID  string
}

func (AlertmanagerConfig) HasReceiver

func (c AlertmanagerConfig) HasReceiver() bool

type BackupType added in v0.2.0

type BackupType string

BackupType represents what to backup.

const (
	BackupTypeServices BackupType = "services"
	BackupTypePostgres BackupType = "postgres"
	BackupTypeMySQL    BackupType = "mysql"
	BackupTypeMongoDB  BackupType = "mongodb"
	BackupTypeRedis    BackupType = "redis" // RDB dump via SAVE
)

type Builder added in v0.1.0

type Builder interface {
	Type() BuilderType
	Detect(dir string) bool
	Build(dir, name string, reg RegistryConfig) (string, error)
}

func NewBuilder added in v0.1.0

func NewBuilder(b BuilderType) Builder

type BuilderType added in v0.1.0

type BuilderType string
const (
	BuilderDockerfile BuilderType = "dockerfile"
	BuilderNixpacks   BuilderType = "nixpacks"
	BuilderPack       BuilderType = "pack"
)

func DetectBuilder added in v0.1.0

func DetectBuilder(dir string) BuilderType

type CaddyProxy added in v0.1.0

type CaddyProxy struct{}

func (*CaddyProxy) Install added in v0.1.0

func (p *CaddyProxy) Install(client *goss.Client, cfg ProxyConfig) error

func (*CaddyProxy) Remove added in v0.1.0

func (p *CaddyProxy) Remove(client *goss.Client) error

func (*CaddyProxy) Status added in v0.1.0

func (p *CaddyProxy) Status(client *goss.Client) (string, error)

func (*CaddyProxy) Type added in v0.1.0

func (p *CaddyProxy) Type() ProxyType

func (*CaddyProxy) UpdateTargetPort added in v0.1.0

func (p *CaddyProxy) UpdateTargetPort(client *goss.Client, domain string, port int) error

type CertConfig added in v0.1.0

type CertConfig struct {
	Domain     string
	Email      string
	Provider   CertProvider
	CertFile   string
	KeyFile    string
	TargetPort int
	Staging    bool
	Runtime    string
}

type CertProvider added in v0.1.0

type CertProvider string
const (
	CertLetsEncrypt CertProvider = "letsencrypt"
	CertCloudflare  CertProvider = "cloudflare"
	CertManual      CertProvider = "manual"
)

type DBConfig added in v0.2.0

type DBConfig struct {
	Type    DBType
	Name    string
	Version string
	Port    int // 0 = no external port (internal only)
	Network string
	User    string
	Pass    string
}

type DBResult added in v0.2.0

type DBResult struct {
	ConnString    string
	ContainerName string
	Image         string
	InternalPort  int
	ExposedPort   int
	User          string
	Pass          string
	Database      string
}

func ProvisionDatabase added in v0.2.0

func ProvisionDatabase(client *goss.Client, cfg DBConfig) (*DBResult, error)

type DBType added in v0.2.0

type DBType string
const (
	DBPostgres DBType = "postgres"
	DBMySQL    DBType = "mysql"
	DBRedis    DBType = "redis"
	DBMongoDB  DBType = "mongodb"
)

type DeployResult

type DeployResult struct {
	Version     string
	ServicePath string
}

func UploadAndDeploy

func UploadAndDeploy(client *goss.Client, cfg UploadConfig) (*DeployResult, error)

type DockerfileBuilder added in v0.1.0

type DockerfileBuilder struct{}

func (*DockerfileBuilder) Build added in v0.1.0

func (b *DockerfileBuilder) Build(dir, name string, reg RegistryConfig) (string, error)

func (*DockerfileBuilder) Detect added in v0.1.0

func (b *DockerfileBuilder) Detect(dir string) bool

func (*DockerfileBuilder) Type added in v0.1.0

func (b *DockerfileBuilder) Type() BuilderType

type NginxProxy added in v0.1.0

type NginxProxy struct{}

func (*NginxProxy) Install added in v0.1.0

func (p *NginxProxy) Install(client *goss.Client, cfg ProxyConfig) error

func (*NginxProxy) Remove added in v0.1.0

func (p *NginxProxy) Remove(client *goss.Client) error

func (*NginxProxy) Status added in v0.1.0

func (p *NginxProxy) Status(client *goss.Client) (string, error)

func (*NginxProxy) Type added in v0.1.0

func (p *NginxProxy) Type() ProxyType

func (*NginxProxy) UpdateTargetPort added in v0.1.0

func (p *NginxProxy) UpdateTargetPort(client *goss.Client, domain string, port int) error

type NixpacksBuilder added in v0.1.0

type NixpacksBuilder struct{}

func (*NixpacksBuilder) Build added in v0.1.0

func (b *NixpacksBuilder) Build(dir, name string, reg RegistryConfig) (string, error)

func (*NixpacksBuilder) Detect added in v0.1.0

func (b *NixpacksBuilder) Detect(dir string) bool

func (*NixpacksBuilder) Type added in v0.1.0

func (b *NixpacksBuilder) Type() BuilderType

type PackBuilder added in v0.1.0

type PackBuilder struct{}

func (*PackBuilder) Build added in v0.1.0

func (b *PackBuilder) Build(dir, name string, reg RegistryConfig) (string, error)

func (*PackBuilder) Detect added in v0.1.0

func (b *PackBuilder) Detect(dir string) bool

func (*PackBuilder) Type added in v0.1.0

func (b *PackBuilder) Type() BuilderType

type PromtailConfig

type PromtailConfig struct {
	LokiURL  string
	NodeName string
	Port     int
}

type Proxy added in v0.1.0

type Proxy interface {
	Type() ProxyType
	Install(client *goss.Client, cfg ProxyConfig) error
	UpdateTargetPort(client *goss.Client, domain string, port int) error
	Status(client *goss.Client) (string, error)
	Remove(client *goss.Client) error
}

func NewProxy added in v0.1.0

func NewProxy(p ProxyType) Proxy

type ProxyConfig added in v0.1.0

type ProxyConfig struct {
	Domain     string
	Email      string
	TargetPort int
	Staging    bool
}

type ProxyType added in v0.1.0

type ProxyType string
const (
	ProxyCaddy   ProxyType = "caddy"
	ProxyTraefik ProxyType = "traefik"
	ProxyNginx   ProxyType = "nginx"
)

func DetectProxy added in v0.1.0

func DetectProxy(client *goss.Client) ProxyType

type RegistryConfig

type RegistryConfig struct {
	Server   string
	Username string
	Password string
}

func DefaultRegistry

func DefaultRegistry() RegistryConfig

func (RegistryConfig) Valid added in v0.4.2

func (r RegistryConfig) Valid() bool

type S3Config added in v0.2.0

type S3Config struct {
	Endpoint  string // e.g., https://s3.amazonaws.com
	Region    string
	Bucket    string
	AccessKey string
	SecretKey string
	Path      string // optional prefix path
}

S3Config holds S3-compatible storage settings.

func S3ConfigFromEnv added in v0.2.0

func S3ConfigFromEnv() S3Config

S3ConfigFromEnv populates S3Config from environment variables.

type ServiceConfig

type ServiceConfig struct {
	Name          string
	Type          string // docker, k3s, systemd
	Image         string // Docker image (for docker type)
	Port          int
	Replicas      int
	EnvFile       string
	HealthURL     string
	HealthTimeout int
}

type TraefikProxy added in v0.1.0

type TraefikProxy struct{}

func (*TraefikProxy) Install added in v0.1.0

func (p *TraefikProxy) Install(client *goss.Client, cfg ProxyConfig) error

func (*TraefikProxy) Remove added in v0.1.0

func (p *TraefikProxy) Remove(client *goss.Client) error

func (*TraefikProxy) Status added in v0.1.0

func (p *TraefikProxy) Status(client *goss.Client) (string, error)

func (*TraefikProxy) Type added in v0.1.0

func (p *TraefikProxy) Type() ProxyType

func (*TraefikProxy) UpdateTargetPort added in v0.1.0

func (p *TraefikProxy) UpdateTargetPort(client *goss.Client, domain string, port int) error

type UploadConfig

type UploadConfig struct {
	ServiceName string
	SourceDir   string   // Local directory to upload
	Files       []string // Specific files to include (empty = all)
	Exclude     []string // Patterns to exclude
}

Jump to

Keyboard shortcuts

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