diff --git a/lotus-land-story/main.yml b/lotus-land-story/main.yml
index c3aad08..5fda767 100644
--- a/lotus-land-story/main.yml
+++ b/lotus-land-story/main.yml
@@ -97,7 +97,9 @@
- import_playbook: grafana.yml # noqa: name[play]
- import_playbook: loki.yml # noqa: name[play]
- import_playbook: miniflux.yml # noqa: name[play]
-- import_playbook: caddy.yml # noqa: name[play]
- import_playbook: golink.yml # noqa: name[play]
+- import_playbook: woodpecker.yml # noqa: name[play]
+
+- import_playbook: caddy.yml # noqa: name[play]
# vim: ft=yaml.ansible
diff --git a/lotus-land-story/templates/Caddyfile b/lotus-land-story/templates/Caddyfile
index bd26f53..0e518cf 100644
--- a/lotus-land-story/templates/Caddyfile
+++ b/lotus-land-story/templates/Caddyfile
@@ -17,3 +17,11 @@ prometheus.{{ domain }} {
grafana.{{ domain }} {
reverse_proxy grafana:3000
}
+
+ci.{{ domain }} {
+ reverse_proxy woodpecker-server:8000
+}
+
+woodpecker.{{ domain }} {
+ reverse_proxy woodpecker-server:8000
+}
diff --git a/lotus-land-story/templates/prometheus.yml b/lotus-land-story/templates/prometheus.yml
index d45ddff..b7fb768 100644
--- a/lotus-land-story/templates/prometheus.yml
+++ b/lotus-land-story/templates/prometheus.yml
@@ -37,6 +37,11 @@ scrape_configs:
static_configs:
- targets: ['miniflux:8080']
+ - job_name: woodpecker
+ bearer_token: {{ woodpecker.api_token }}
+ static_configs:
+ - targets: ['woodpecker-server:8000']
+
- job_name: linode
linode_sd_configs:
- authorization:
diff --git a/lotus-land-story/woodpecker.yml b/lotus-land-story/woodpecker.yml
new file mode 100644
index 0000000..ec5732e
--- /dev/null
+++ b/lotus-land-story/woodpecker.yml
@@ -0,0 +1,53 @@
+- name: Set up Woodpecker
+ hosts: lotus-land-story
+ vars_files:
+ - vars.yml
+ tasks:
+
+ - name: Make /mnt/lotus-land-story/woodpecker
+ ansible.builtin.file:
+ path: /mnt/lotus-land-story/woodpecker
+ state: directory
+ mode: "0755"
+ # owner: 65532
+ # group: 65532
+
+ - name: Run Woodpecker server
+ community.docker.docker_container:
+ name: woodpecker-server
+ image: woodpeckerci/woodpecker-server:v0.15.11
+ restart: true
+ env:
+ # WOODPECKER_OPEN: "true"
+ WOODPECKER_HOST: "{{ woodpecker.host }}"
+ WOODPECKER_AGENT_SECRET: "{{ woodpecker.secret }}"
+ WOODPECKER_GITEA: "true"
+ WOODPECKER_GITEA_URL: "{{ woodpecker.gitea.url }}"
+ WOODPECKER_GITEA_CLIENT: "{{ woodpecker.gitea.client }}"
+ WOODPECKER_GITEA_SECRET: "{{ woodpecker.gitea.secret }}"
+ WOODPECKER_ADMIN: "alpha"
+ volumes:
+ - /mnt/lotus-land-story/woodpecker:/var/lib/woodpecker
+ restart_policy: unless-stopped
+ networks:
+ - name: lotus_land_story
+
+ - name: Run Woodpecker agent
+ community.docker.docker_container:
+ name: woodpecker-agent
+ image: woodpeckerci/woodpecker-agent:v0.15.11
+ restart: true
+ env:
+ WOODPECKER_SERVER: woodpecker-server:9000
+ WOODPECKER_AGENT_SECRET: "{{ woodpecker.secret }}"
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
+ restart_policy: unless-stopped
+ networks:
+ - name: lotus_land_story
+
+ handlers:
+ - name: Import restarts
+ ansible.builtin.import_tasks: restarts.yml
+
+# vim: ft=yaml.ansible