blob: c2fd9668e84c5de09cf72972a0c94d98ece0c0bb [file] [log] [blame]
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +04001input: {
gio9bd87ca2025-04-20 08:05:34 +04002 network: #Network @name(Network)
3 subdomain: string @name(Subdomain)
4 sshPort: int @name(SSH Port) @role(port)
5 adminKey: string @name(Admin SSH Public Key)
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +04006}
7
gio0eaf2712024-04-14 13:08:46 +04008_domain: "\(input.subdomain).\(input.network.domain)"
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +04009
gio9bd87ca2025-04-20 08:05:34 +040010name: "Soft-Serve"
Giorgi Lekveishvilief21c132024-01-17 18:57:58 +040011namespace: "app-soft-serve"
12// TODO(gio): make public network an option
gio9bd87ca2025-04-20 08:05:34 +040013readme: "softserve application will be installed on private network and be accessible to any user on https://\(_domain)"
Giorgi Lekveishvilief21c132024-01-17 18:57:58 +040014description: "A tasty, self-hostable Git server for the command line. 🍦"
gio8c942d22024-07-17 13:43:02 +040015icon: """
giod2d2df02025-05-03 19:15:17 +040016 <svg width='50px' height='50px' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 28.17637795 39.68590646'>
17 <defs>
18 <style>
19 .cls-1 {
20 fill: currentColor;
21 }
22
23 .cls-2 {
24 fill: none;
25 stroke: #3a3a3a;
26 stroke-miterlimit: 10;
27 stroke-width: .98133445px;
28 }
29 </style>
30 </defs>
31 <rect class='cls-2' x='-15.72872096' y='-9.97395671' width='59.63381987' height='59.63381987'/>
32 <g>
33 <path class='cls-1' d='m14.08828766,39.68590646c-.24966985,0-.47802402-.14131246-.58973401-.36472824l-2.87761777-5.75512747-5.45346067-13.9623024c-.13243358-.33946568.03513141-.72156194.37420873-.85419039.33927469-.13262845.72157548.03473602.85381169.3742017l5.42918447,13.90783,2.26321282,4.52199865,2.28827849-4.57647105,5.40471091-13.8533576c.13243358-.33788677.51374753-.5060407.85381169-.3742017.33907732.13262845.50664231.51472471.37420873.85419039l-5.42898711,13.90783-2.90209134,5.80959987c-.11151262.22341579-.33986679.36472824-.58953664.36472824Z'/>
34 <path class='cls-1' d='m18.88431728,29.13483942h-9.59205924c-.36414299,0-.65920736-.2952562-.65920736-.65919498s.29506437-.65919498.65920736-.65919498h9.59205924c.36414299,0,.65920736.2952562.65920736.65919498s-.29506437.65919498-.65920736.65919498Z'/>
35 <path class='cls-1' d='m5.45484225,20.50214821c-.08269697,0-.16559131-.0157891-.24414357-.0473673-.21276214-.08447169-5.21069868-2.14337052-5.21069868-7.32614307,0-4.61041762,4.65846449-6.74115686,5.90878744-7.230619.52262907-1.25207574,2.82373645-5.89801884,8.17950022-5.89801884s7.65687115,4.6459431,8.17950022,5.89801884c1.25032295.48946214,5.90859007,2.62099084,5.90859007,7.230619,0,5.18277255-4.99773918,7.24167137-5.21050131,7.32614307-.18572279.07499823-.39670862.05999859-.57078673-.0386833-.03236827-.01894692-3.28912895-1.83232522-8.30680224-1.83232522s-8.27443398,1.8133783-8.30680224,1.83232522c-.10065741.05684077-.21335424.0860506-.32664317.0860506ZM14.08828766,1.31838997c-5.19806716,0-6.97555863,5.08882739-7.0485846,5.30592754-.06592074.1949954-.22045947.3497286-.41585327.41525337-.05309185.01736801-5.30543507,1.83311468-5.30543507,6.08906697,0,3.70728102,3.15531381,5.5175015,4.1153092,5.98170108.96295591-.47840977,4.11215132-1.8449565,8.65456373-1.8449565s7.69160783,1.36654673,8.65456373,1.8449565c.95979803-.46419958,4.11511183-2.27442006,4.11511183-5.98170108,0-4.25595229-5.25234322-6.07169896-5.3052377-6.08906697-.1953938-.06552477-.34993253-.22025797-.41585327-.41525337-.07302597-.21710014-1.85051744-5.30592754-7.0485846-5.30592754Zm-7.67364739,5.09593249h.00809207-.00809207Z'/>
36 </g>
37 </svg>"""
gio7fbd4ad2024-08-27 10:06:39 +040038
39out: {
40 images: {
41 softserve: {
42 repository: "charmcli"
gio9bd87ca2025-04-20 08:05:34 +040043 name: "soft-serve"
44 tag: "v0.7.1"
gio7fbd4ad2024-08-27 10:06:39 +040045 pullPolicy: "IfNotPresent"
46 }
47 }
48
49 charts: {
50 softserve: {
gio9bd87ca2025-04-20 08:05:34 +040051 kind: "GitRepository"
gio7fbd4ad2024-08-27 10:06:39 +040052 address: "https://code.v1.dodo.cloud/helm-charts"
gio9bd87ca2025-04-20 08:05:34 +040053 branch: "main"
54 path: "charts/soft-serve"
gio7fbd4ad2024-08-27 10:06:39 +040055 }
56 }
57
58 ingress: {
59 softserve: {
60 auth: enabled: false
gio9bd87ca2025-04-20 08:05:34 +040061 network: input.network
gio7fbd4ad2024-08-27 10:06:39 +040062 subdomain: input.subdomain
63 service: {
64 name: "soft-serve"
gio24312cc2025-04-20 15:53:15 +040065 port: _webPort
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040066 }
gio7fbd4ad2024-08-27 10:06:39 +040067 }
68 }
69
gio802311e2024-11-04 08:37:34 +040070 openPort: [{
gio9bd87ca2025-04-20 08:05:34 +040071 name: "ssh"
gio802311e2024-11-04 08:37:34 +040072 network: input.network
gio9bd87ca2025-04-20 08:05:34 +040073 port: input.sshPort
gio802311e2024-11-04 08:37:34 +040074 service: {
75 name: "soft-serve"
gio24312cc2025-04-20 15:53:15 +040076 port: _sshPort
gio802311e2024-11-04 08:37:34 +040077 }
78 }]
79
giofc441e32024-11-11 16:26:14 +040080 volume: data: size: "1Gi"
gio7fbd4ad2024-08-27 10:06:39 +040081
82 helm: {
83 softserve: {
84 chart: charts.softserve
gio9bd87ca2025-04-20 08:05:34 +040085 info: "Installing SoftServe server"
gio7fbd4ad2024-08-27 10:06:39 +040086 values: {
gio9bd87ca2025-04-20 08:05:34 +040087 serviceType: "ClusterIP"
88 adminKey: input.adminKey
89 host: _domain
gio24312cc2025-04-20 15:53:15 +040090 httpPort: _webPort
91 sshPort: _sshPort
gio9bd87ca2025-04-20 08:05:34 +040092 sshPublicPort: input.sshPort
giofc441e32024-11-11 16:26:14 +040093 persistentVolumeClaimName: volume.data.name
gio7fbd4ad2024-08-27 10:06:39 +040094 image: {
95 repository: images.softserve.fullName
gio9bd87ca2025-04-20 08:05:34 +040096 tag: images.softserve.tag
gio7fbd4ad2024-08-27 10:06:39 +040097 pullPolicy: images.softserve.pullPolicy
98 }
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040099 }
100 }
101 }
102}
gioff2a29a2024-05-01 17:06:42 +0400103
104help: [{
gio9bd87ca2025-04-20 08:05:34 +0400105 title: "Access"
gioff2a29a2024-05-01 17:06:42 +0400106 contents: """
107 SSH CLI: ssh \(_domain) -p \(input.sshPort) help
108 SSH TUI: ssh \(_domain) -p \(input.sshPort)
gio4e3e9982024-05-20 13:09:45 +0400109 Create repository: ssh \(_domain) -p \(input.sshPort) repos create \\<REPO-NAME\\>
110 HTTP: git clone https://\(_domain)/\\<REPO-NAME\\>
111 SSH: git clone ssh://\(_domain):\(input.sshPort)/\\<REPO-NAME\\>
gioff2a29a2024-05-01 17:06:42 +0400112
113 See following resource on what you can do with Soft-Serve TUI: [https://github.com/charmbracelet/soft-serve](https://github.com/charmbracelet/soft-serve)
114 """
115}]
gio24312cc2025-04-20 15:53:15 +0400116
117_webPort: 8080
118_sshPort: 22