about summary refs log tree commit diff
path: root/bundles/www
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2025-09-07 17:32:13 +0200
committerRobert Günzler <r@gnzler.io>2025-09-07 17:42:42 +0200
commit38be6c13f76e893cf47636257071b440dec0c5b2 (patch)
treef7ded3235a7e3362cbd1ed3d91523968fe0faf90 /bundles/www
initial commit
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to 'bundles/www')
-rw-r--r--bundles/www/files/etc/s6-rc/templates/www/+service-log/consumer-for1
-rw-r--r--bundles/www/files/etc/s6-rc/templates/www/+service-log/notification-fd1
-rw-r--r--bundles/www/files/etc/s6-rc/templates/www/+service-log/pipeline-name1
-rw-r--r--bundles/www/files/etc/s6-rc/templates/www/+service-log/run10
-rw-r--r--bundles/www/files/etc/s6-rc/templates/www/+service-log/type1
-rw-r--r--bundles/www/files/etc/s6-rc/templates/www/+service-srv/notification-fd1
-rw-r--r--bundles/www/files/etc/s6-rc/templates/www/+service-srv/producer-for1
-rwxr-xr-xbundles/www/files/etc/s6-rc/templates/www/+service-srv/run31
-rw-r--r--bundles/www/files/etc/s6-rc/templates/www/+service-srv/type1
-rw-r--r--bundles/www/items.py40
-rw-r--r--bundles/www/metadata.py8
11 files changed, 96 insertions, 0 deletions
diff --git a/bundles/www/files/etc/s6-rc/templates/www/+service-log/consumer-for b/bundles/www/files/etc/s6-rc/templates/www/+service-log/consumer-for
new file mode 100644
index 0000000..83c1762
--- /dev/null
+++ b/bundles/www/files/etc/s6-rc/templates/www/+service-log/consumer-for
@@ -0,0 +1 @@
++service-srv
diff --git a/bundles/www/files/etc/s6-rc/templates/www/+service-log/notification-fd b/bundles/www/files/etc/s6-rc/templates/www/+service-log/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/bundles/www/files/etc/s6-rc/templates/www/+service-log/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/bundles/www/files/etc/s6-rc/templates/www/+service-log/pipeline-name b/bundles/www/files/etc/s6-rc/templates/www/+service-log/pipeline-name
new file mode 100644
index 0000000..0db7d83
--- /dev/null
+++ b/bundles/www/files/etc/s6-rc/templates/www/+service-log/pipeline-name
@@ -0,0 +1 @@
++service
diff --git a/bundles/www/files/etc/s6-rc/templates/www/+service-log/run b/bundles/www/files/etc/s6-rc/templates/www/+service-log/run
new file mode 100644
index 0000000..d558f3c
--- /dev/null
+++ b/bundles/www/files/etc/s6-rc/templates/www/+service-log/run
@@ -0,0 +1,10 @@
+#!/bin/execlineb -P
+
+envfile -I /etc/s6-rc/system.conf
+importas -sCuD "/run/log" s6_log_dir s6_log_dir
+
+envfile -I /etc/s6-rc/+service.conf
+importas -sCuD "n3 s2000000 T" s6_log_directives s6_log_directives
+
+foreground { install -d ${s6_log_dir}/+service }
+exec -c s6-log -d3 -b -- ${s6_log_directives} ${s6_log_dir}/+service
diff --git a/bundles/www/files/etc/s6-rc/templates/www/+service-log/type b/bundles/www/files/etc/s6-rc/templates/www/+service-log/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/bundles/www/files/etc/s6-rc/templates/www/+service-log/type
@@ -0,0 +1 @@
+longrun
diff --git a/bundles/www/files/etc/s6-rc/templates/www/+service-srv/notification-fd b/bundles/www/files/etc/s6-rc/templates/www/+service-srv/notification-fd
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/bundles/www/files/etc/s6-rc/templates/www/+service-srv/notification-fd
@@ -0,0 +1 @@
+3
diff --git a/bundles/www/files/etc/s6-rc/templates/www/+service-srv/producer-for b/bundles/www/files/etc/s6-rc/templates/www/+service-srv/producer-for
new file mode 100644
index 0000000..cba6eea
--- /dev/null
+++ b/bundles/www/files/etc/s6-rc/templates/www/+service-srv/producer-for
@@ -0,0 +1 @@
++service-log
diff --git a/bundles/www/files/etc/s6-rc/templates/www/+service-srv/run b/bundles/www/files/etc/s6-rc/templates/www/+service-srv/run
new file mode 100755
index 0000000..677d7e1
--- /dev/null
+++ b/bundles/www/files/etc/s6-rc/templates/www/+service-srv/run
@@ -0,0 +1,31 @@
+#!/bin/execlineb -P
+
+# load location of deployments from system config
+envfile /etc/s6-rc/system.conf
+importas -iu www_dir www_dir
+
+# load port from service config
+envfile /etc/s6-rc/+service.conf
+importas -iu www_port www_port
+
+# route all logs to stdout
+fdmove -c 2 1
+
+ifthenelse -s { eltest -e ${www_dir}/+service/Caddyfile }
+{
+	define caddyfile ${www_dir}/+service/Caddyfile
+}
+{
+	define caddyfile /etc/caddy/www.conf
+}
+
+# check that port env var is actually used
+if -X { grep -q CADDY_HTTP_PORT ${caddyfile} }
+export CADDY_HTTP_PORT ${www_port}
+
+cd ${www_dir}/+service
+
+exec caddy run --watch \
+	--pidfile=/dev/fd/3 \
+	--adapter=caddyfile \
+	--config=${caddyfile}
diff --git a/bundles/www/files/etc/s6-rc/templates/www/+service-srv/type b/bundles/www/files/etc/s6-rc/templates/www/+service-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/bundles/www/files/etc/s6-rc/templates/www/+service-srv/type
@@ -0,0 +1 @@
+longrun
diff --git a/bundles/www/items.py b/bundles/www/items.py
new file mode 100644
index 0000000..7805991
--- /dev/null
+++ b/bundles/www/items.py
@@ -0,0 +1,40 @@
+if node.os != "alpine":
+    raise BundleError(f"{node.name}: OS {node.os} is not supported.")
+
+from os.path import join
+
+files = {
+    "/etc/s6-rc/templates/www/+service-srv/run": { "mode": "0755" },
+    "/etc/s6-rc/templates/www/+service-log/run": { "mode": "0755" },
+    "/etc/s6-rc/services/default/contents.d/www": {
+        "content_type": "text",
+        "content": "",
+        "triggers": {
+            "svc_openrc:s6-rc-init:reload",
+            "svc_openrc:s6-rc-up:restart",
+        },
+    },
+    "/etc/s6-rc/services/www/type": {
+        "content_type": "text",
+        "content": "bundle",
+        "triggers": {
+            "svc_openrc:s6-rc-init:reload",
+            "svc_openrc:s6-rc-up:restart",
+        },
+    },
+}
+
+repo.libs.gen.add_files_recursive(
+    files,
+    join(repo.path, "bundles", "www", "files"),
+)
+
+directories = {
+    "/etc/s6-rc/services/www/contents.d": {}
+}
+
+for www, _ in node.metadata.get("www", {}).items():
+    svc_s6rc[www] = {
+        "bundle": "www",
+        "generate": "www",
+    }
diff --git a/bundles/www/metadata.py b/bundles/www/metadata.py
new file mode 100644
index 0000000..1d5700a
--- /dev/null
+++ b/bundles/www/metadata.py
@@ -0,0 +1,8 @@
+defaults = {
+    "apk": {
+        "packages": {
+            "caddy": {},
+            "rsync": {}, # used to sync up changes
+        },
+    },
+}