Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion app/pipeline/convert/build_step.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,9 @@ func buildCommandNew(
if len(buildVars) > 0 {
var args []string
for k, v := range buildVars {
args = append(args, fmt.Sprintf("%s=%s", k, v))
// Escape single quotes in value and wrap value in single quotes
escapedValue := strings.ReplaceAll(v, `'`, `'\''`)
args = append(args, fmt.Sprintf(`%s='%s'`, k, escapedValue))
}
addSecret(pCtx, step, "CLOUDNESS_BUILD_ARGS", strings.Join(args, " "))
}
Expand Down
4 changes: 4 additions & 0 deletions app/pipeline/convert/templates/static/4-httproute.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ spec:
type: PathPrefix
value: /

timeouts:
request: 300s
backendRequest: 300s

backendRefs:
- name: {{ $.PrivateDomain }}
namespace: {{ $.Namespace }}
Expand Down
5 changes: 5 additions & 0 deletions app/services/manager/kube/ingress.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ func (m *K8sManager) AddHttpRoute(ctx context.Context, server *types.Server, nam
WithMatches(v1.HTTPRouteMatch().WithPath(v1.HTTPPathMatch().WithType(gatewayv1.PathMatchPathPrefix).WithValue("/"))).
WithBackendRefs(
v1.HTTPBackendRef().WithName(gatewayv1.ObjectName(service)).WithNamespace(gatewayv1.Namespace(namespace)).WithPort(gatewayv1.PortNumber(port)),
).
WithTimeouts(
v1.HTTPRouteTimeouts().
WithRequest(gatewayv1.Duration("300s")).
WithBackendRequest(gatewayv1.Duration("300s")),
),
),
)
Expand Down
117 changes: 117 additions & 0 deletions templates/6-matomo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
{
"icon": "https://raw.githubusercontent.com/cloudness-io/icons/refs/heads/main/matomo.svg",
"name": "Matomo Analytics",
"readme": "Matomo is a powerful open-source web analytics platform that gives you 100% data ownership and user privacy protection.",
"tags": [
"analytics",
"monitoring"
],
"services": [
{
"icon": "https://raw.githubusercontent.com/cloudness-io/icons/refs/heads/main/matomo.svg",
"name": "Matomo",
"build": {
"source": {
"registry": {
"image": "matomo:latest"
}
}
},
"deploy": {
"startCommand": "sh -c 'if ! id -u www-data > /dev/null 2>&1; then addgroup -g 82 www-data && adduser -u 82 -D -S -G www-data www-data; fi && /entrypoint.sh apache2-foreground'"
},
"networking": {
"containerPorts": [
80
],
"serviceDomain": {
"port": 80,
"path": "/"
}
},
"volumes": [
{
"name": "matomo-data",
"mountPath": "/var/www/html"
}
],
"variables": [
{
"key": "MATOMO_DATABASE_HOST",
"value": "${{matomo-db.CLOUDNESS_PRIVATE_DOMAIN}}",
"type": "run"
},
{
"key": "MATOMO_DATABASE_ADAPTER",
"value": "mysql",
"type": "run"
},
{
"key": "MATOMO_DATABASE_TABLES_PREFIX",
"value": "matomo_",
"type": "run"
},
{
"key": "MATOMO_DATABASE_USERNAME",
"value": "${{matomo-db.MYSQL_USER}}",
"type": "run"
},
{
"key": "MATOMO_DATABASE_PASSWORD",
"value": "${{matomo-db.MYSQL_PASSWORD}}",
"type": "run"
},
{
"key": "MATOMO_DATABASE_DBNAME",
"value": "${{matomo-db.MYSQL_DATABASE}}",
"type": "run"
}
]
},
{
"icon": "https://raw.githubusercontent.com/cloudness-io/icons/refs/heads/main/mysql.svg",
"name": "matomo-db",
"build": {
"source": {
"registry": {
"image": "mysql:latest"
}
}
},
"deploy": {},
"networking": {
"containerPorts": [
3306
]
},
"volumes": [
{
"name": "db-data",
"mountPath": "/var/lib/mysql"
}
],
"variables": [
{
"key": "MYSQL_ROOT_PASSWORD",
"value": "${{secret(32)}}",
"type": "run"
},
{
"key": "MYSQL_DATABASE",
"value": "matomo",
"type": "run"
},
{
"key": "MYSQL_USER",
"value": "matomo",
"type": "run"
},
{
"key": "MYSQL_PASSWORD",
"value": "${{secret(32)}}",
"type": "run"
}
]
}
]
}
Loading