blob: 5c9677110c58d404a5173c7dcb985745a0a00d4f [file] [log] [blame]
input: {
network: #Network @name(Network)
subdomain: string @name(Subdomain)
sshPort: int @name(SSH Port)
adminKey: string @name(Admin SSH Public Key)
}
_domain: "\(input.subdomain).\(input.network.domain)"
name: "Soft-Serve"
namespace: "app-soft-serve"
// TODO(gio): make public network an option
readme: "softserve application will be installed on private network and be accessible to any user on https://\(_domain)"
description: "A tasty, self-hostable Git server for the command line. 🍦"
icon: "<svg xmlns='http://www.w3.org/2000/svg' width='50' height='50' viewBox='0 0 48 48'><g fill='none' stroke='currentColor' stroke-linecap='round' stroke-width='4'><path stroke-linejoin='round' d='M15.34 22.5L21 37l3 6l3-6l5.66-14.5'/><path d='M19 32h10'/><path stroke-linejoin='round' d='M24 3c-6 0-8 6-8 6s-6 2-6 7s5 7 5 7s3.5-2 9-2s9 2 9 2s5-2 5-7s-6-7-6-7s-2-6-8-6Z'/></g></svg>"
images: {
softserve: {
repository: "charmcli"
name: "soft-serve"
tag: "v0.7.1"
pullPolicy: "IfNotPresent"
}
}
charts: {
softserve: {
kind: "GitRepository"
address: "https://github.com/giolekva/pcloud.git"
branch: "main"
path: "charts/soft-serve"
}
}
ingress: {
gerrit: { // TODO(gio): rename to soft-serve
auth: enabled: false
network: input.network
subdomain: input.subdomain
service: {
name: "soft-serve"
port: number: 80
}
}
}
portForward: [#PortForward & {
allocator: input.network.allocatePortAddr
sourcePort: input.sshPort
// TODO(gio): namespace part must be populated by app manager. Otherwise
// third-party app developer might point to a service from different namespace.
targetService: "\(release.namespace)/soft-serve"
targetPort: 22
}]
helm: {
softserve: {
chart: charts.softserve
info: "Installing SoftServe server"
values: {
serviceType: "ClusterIP"
adminKey: input.adminKey
sshPublicPort: input.sshPort
ingress: {
enabled: false
domain: _domain
}
image: {
repository: images.softserve.fullName
tag: images.softserve.tag
pullPolicy: images.softserve.pullPolicy
}
}
}
}
help: [{
title: "Access"
contents: """
SSH CLI: ssh \(_domain) -p \(input.sshPort) help
SSH TUI: ssh \(_domain) -p \(input.sshPort)
Create repository: ssh \(_domain) -p \(input.sshPort) repos create \\<REPO-NAME\\>
HTTP: git clone https://\(_domain)/\\<REPO-NAME\\>
SSH: git clone ssh://\(_domain):\(input.sshPort)/\\<REPO-NAME\\>
See following resource on what you can do with Soft-Serve TUI: [https://github.com/charmbracelet/soft-serve](https://github.com/charmbracelet/soft-serve)
"""
}]