Skip to content

feat: ascii readme update for architecture #291

feat: ascii readme update for architecture

feat: ascii readme update for architecture #291

name: Validate Docker Compose Stacks
on:
push:
branches:
- "**"
pull_request:
branches:
- "**"
workflow_dispatch:
jobs:
validate:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- name: immich
path: docker-compose/immich
gpu: false
host_mounts: true
upload_location: /tmp/immich/uploads
db_data_location: /tmp/immich/postgres
db_password: immich
db_username: immich
db_database_name: immich
pihole_password: placeholder
tailscale_ip: 127.0.0.1
- name: pihole
path: docker-compose/pihole
gpu: false
host_mounts: true
upload_location: /tmp/uploads-unused
db_data_location: /tmp/db-unused
db_password: placeholder
db_username: placeholder
db_database_name: placeholder
pihole_password: placeholder
tailscale_ip: 127.0.0.1
- name: nginx-proxy-manager
path: docker-compose/nginx-proxy-manager
gpu: false
host_mounts: true
upload_location: /tmp/uploads-unused
db_data_location: /tmp/db-unused
db_password: placeholder
db_username: placeholder
db_database_name: placeholder
pihole_password: placeholder
tailscale_ip: 127.0.0.1
- name: jellyfin-arr-stack
path: docker-compose/jellyfin-arr-stack
gpu: true
host_mounts: true
upload_location: /tmp/uploads-unused
db_data_location: /tmp/db-unused
db_password: placeholder
db_username: placeholder
db_database_name: placeholder
pihole_password: placeholder
tailscale_ip: 127.0.0.1
- name: nextcloud-aio
path: docker-compose/nextcloud-aio
gpu: false
host_mounts: true
upload_location: /tmp/uploads-unused
db_data_location: /tmp/db-unused
db_password: placeholder
db_username: placeholder
db_database_name: placeholder
pihole_password: placeholder
tailscale_ip: 127.0.0.1
- name: openclaw
path: docker-compose/openclaw
gpu: false
host_mounts: true
upload_location: /tmp/uploads-unused
db_data_location: /tmp/db-unused
db_password: placeholder
db_username: placeholder
db_database_name: placeholder
pihole_password: placeholder
tailscale_ip: 127.0.0.1
- name: actual-budget
path: docker-compose/actual-budget
gpu: false
host_mounts: true
upload_location: /tmp/uploads-unused
db_data_location: /tmp/db-unused
db_password: placeholder
db_username: placeholder
db_database_name: placeholder
pihole_password: placeholder
tailscale_ip: 127.0.0.1
- name: uptime-kuma
path: docker-compose/uptime-kuma
gpu: false
host_mounts: true
upload_location: /tmp/uploads-unused
db_data_location: /tmp/db-unused
db_password: placeholder
db_username: placeholder
db_database_name: placeholder
pihole_password: placeholder
tailscale_ip: 127.0.0.1
- name: vaultwarden
path: docker-compose/vaultwarden
gpu: false
host_mounts: true
upload_location: /tmp/uploads-unused
db_data_location: /tmp/db-unused
db_password: placeholder
db_username: placeholder
db_database_name: placeholder
pihole_password: placeholder
tailscale_ip: 127.0.0.1
- name: watchtower
path: docker-compose/watchtower
gpu: false
host_mounts: true
upload_location: /tmp/uploads-unused
db_data_location: /tmp/db-unused
db_password: placeholder
db_username: placeholder
db_database_name: placeholder
pihole_password: placeholder
tailscale_ip: 127.0.0.1
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Set Up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Prepare docker-compose for ${{ matrix.name }}
id: prepare-compose
working-directory: ${{ matrix.path }}
env:
OPENCLAW_GATEWAY_TOKEN: placeholder
UPLOAD_LOCATION: ${{ matrix.upload_location }}
DB_DATA_LOCATION: ${{ matrix.db_data_location }}
DB_PASSWORD: ${{ matrix.db_password }}
DB_USERNAME: ${{ matrix.db_username }}
DB_DATABASE_NAME: ${{ matrix.db_database_name }}
PIHOLE_PASSWORD: ${{ matrix.pihole_password }}
TAILSCALE_IP: ${{ matrix.tailscale_ip }}
run: |
compose_args=""
if [ -f docker-compose.yml ] && grep -q "<tailscale-ip>" docker-compose.yml; then
tmp_file="docker-compose.ci.yml"
sed "s/<tailscale-ip>/${TAILSCALE_IP}/g" docker-compose.yml > "${tmp_file}"
echo "compose_args=-f ${tmp_file}" >> "$GITHUB_OUTPUT"
else
echo "compose_args=" >> "$GITHUB_OUTPUT"
fi
- name: Validate docker-compose.yml for ${{ matrix.name }}
working-directory: ${{ matrix.path }}
env:
OPENCLAW_GATEWAY_TOKEN: placeholder
UPLOAD_LOCATION: ${{ matrix.upload_location }}
DB_DATA_LOCATION: ${{ matrix.db_data_location }}
DB_PASSWORD: ${{ matrix.db_password }}
DB_USERNAME: ${{ matrix.db_username }}
DB_DATABASE_NAME: ${{ matrix.db_database_name }}
PIHOLE_PASSWORD: ${{ matrix.pihole_password }}
TAILSCALE_IP: ${{ matrix.tailscale_ip }}
run: docker compose ${{ steps.prepare-compose.outputs.compose_args }} config
- name: Run Docker Compose (non-GPU, no host mounts)
if: matrix.gpu == false && matrix.host_mounts == false
working-directory: ${{ matrix.path }}
env:
OPENCLAW_GATEWAY_TOKEN: placeholder
UPLOAD_LOCATION: ${{ matrix.upload_location }}
DB_DATA_LOCATION: ${{ matrix.db_data_location }}
DB_PASSWORD: ${{ matrix.db_password }}
DB_USERNAME: ${{ matrix.db_username }}
DB_DATABASE_NAME: ${{ matrix.db_database_name }}
PIHOLE_PASSWORD: ${{ matrix.pihole_password }}
TAILSCALE_IP: ${{ matrix.tailscale_ip }}
run: docker compose ${{ steps.prepare-compose.outputs.compose_args }} up -d
- name: Tear Down Docker Compose (non-GPU, no host mounts)
if: matrix.gpu == false && matrix.host_mounts == false && always()
working-directory: ${{ matrix.path }}
env:
OPENCLAW_GATEWAY_TOKEN: placeholder
UPLOAD_LOCATION: ${{ matrix.upload_location }}
DB_DATA_LOCATION: ${{ matrix.db_data_location }}
DB_PASSWORD: ${{ matrix.db_password }}
DB_USERNAME: ${{ matrix.db_username }}
DB_DATABASE_NAME: ${{ matrix.db_database_name }}
PIHOLE_PASSWORD: ${{ matrix.pihole_password }}
TAILSCALE_IP: ${{ matrix.tailscale_ip }}
run: docker compose ${{ steps.prepare-compose.outputs.compose_args }} down