From 871d35a5a732243eb2c5873c1400b865306727d0 Mon Sep 17 00:00:00 2001 From: krisz Date: Mon, 21 Apr 2025 17:34:30 +0200 Subject: [PATCH] add gitea action --- .gitea/workflows/update_stack.yml | 40 +++++++++++++++++++++++++++++++ .stack-map.json | 3 +++ services/.env.example | 4 +++- services/configs/haproxy.cfg | 32 +++++++++++++++++++++++++ services/docker-compose.yml | 6 +++++ 5 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 .gitea/workflows/update_stack.yml create mode 100644 .stack-map.json create mode 100644 services/configs/haproxy.cfg diff --git a/.gitea/workflows/update_stack.yml b/.gitea/workflows/update_stack.yml new file mode 100644 index 0000000..d57a1b6 --- /dev/null +++ b/.gitea/workflows/update_stack.yml @@ -0,0 +1,40 @@ +name: Portainer Stack Update + +on: + push: + branches: + - main + +jobs: + update_stack: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Detect changed compose files + id: changed + run: | + # Get only changed docker-compose.yml files in top-level folders + CHANGED_COMPOSE_DIRS=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }} | grep -E '^[^/]+/docker-compose\.yml$' | cut -d '/' -f1 | sort -u) + + echo "CHANGED_COMPOSE_DIRS=$CHANGED_COMPOSE_DIRS" >> $GITHUB_ENV + + - name: Update relevant stacks in Portainer + run: | + echo "Reading stack mapping..." + STACK_MAP=$(cat .stack-map.json) + + for dir in $CHANGED_COMPOSE_DIRS; do + echo "Checking directory: $dir" + STACK_ID=$(echo "$STACK_MAP" | jq -r --arg d "$dir" '.[$d]') + + if [ "$STACK_ID" != "null" ]; then + echo "Updating Portainer stack $dir (ID: $STACK_ID)..." + curl -X POST "https://portainer.szabolcsi.dev/api/stacks/webhooks/$STACK_ID" + else + echo "No stack ID found for $dir, skipping." + fi + done + env: + CHANGED_COMPOSE_DIRS: ${{ env.CHANGED_COMPOSE_DIRS }} diff --git a/.stack-map.json b/.stack-map.json new file mode 100644 index 0000000..cf884a4 --- /dev/null +++ b/.stack-map.json @@ -0,0 +1,3 @@ +{ + "services": "c4051c28-2975-44a6-aa86-13717e5fe10f" +} \ No newline at end of file diff --git a/services/.env.example b/services/.env.example index e4ef236..997ed2c 100644 --- a/services/.env.example +++ b/services/.env.example @@ -1 +1,3 @@ -GITEA_DB_PASSWORD= \ No newline at end of file +GITEA_DB_PASSWORD= +HAPROXY_CONFIG_NAME= +GITEA_RUNNER_TOKEN= \ No newline at end of file diff --git a/services/configs/haproxy.cfg b/services/configs/haproxy.cfg new file mode 100644 index 0000000..0646209 --- /dev/null +++ b/services/configs/haproxy.cfg @@ -0,0 +1,32 @@ +global + log /dev/log local0 + log /dev/log local1 notice + user root + group root + daemon + +defaults + log global + mode tcp + option tcplog + option dontlognull + timeout connect 5000 + timeout client 50000 + timeout server 50000 + +listen database + bind *:3306 + server database database_mariadb:3306 + +frontend http + bind *:80 + mode http + + acl is_portainer hdr_dom(host) -i portainer.szabolcsi.dev + use_backend portainer_backend if is_portainer + + http-request deny + +backend portainer_backend + mode http + server portainer portainer_portainer:9000 diff --git a/services/docker-compose.yml b/services/docker-compose.yml index 0e2ff89..8ee37f2 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -98,9 +98,13 @@ services: local: aliases: - database + - portainer.szabolcsi.dev database: aliases: - services-proxy + portainer: + aliases: + - service-proxy configs: - source: haproxy target: /usr/local/etc/haproxy/haproxy.cfg @@ -122,6 +126,8 @@ networks: external: true database: external: true + portainer: + external: true volumes: gitea: