Files
rodydavis 163e593d26
Update README Actions Table / update-readme (push) Successful in 8s
fix: extract deploy script to separate file to resolve YAML parsing error
2026-10-13 12:07:58 -07:00

86 lines
2.8 KiB
YAML

name: 'Deploy Static Pages'
description: 'Packages static web assets into a hardened Nginx container, pushes to Gitea registry, and deploys to TrueNAS with Traefik ingress.'
inputs:
path:
description: 'Path to static files directory (e.g. ./dist, ./build/web, ./public)'
required: false
default: './dist'
domain:
description: 'Target URL or domain for Traefik router (e.g. "my-app.rodydavis.dev" or "https://my-app.rodydavis.dev")'
required: false
default: ''
app_name:
description: 'Application / container name (defaults to repository name)'
required: false
default: ''
registry:
description: 'Container registry host'
required: false
default: 'git.rodydavis.dev'
image_name:
description: 'Container image tag (defaults to registry/repository:latest)'
required: false
default: ''
git_token:
description: 'Token with package write permissions for container registry'
required: false
default: ''
ssh_key:
description: 'Private SSH key for authenticating to TrueNAS SCALE'
required: false
default: ''
host:
description: 'TrueNAS SSH host IP or domain'
required: false
default: '10.0.0.218'
user:
description: 'TrueNAS SSH user'
required: false
default: 'root'
network:
description: 'Docker external network name for Traefik'
required: false
default: 'apps-net'
spa:
description: 'Enable SPA router fallback in Nginx (try_files $uri $uri/ /index.html)'
required: false
default: 'true'
traefik_entrypoints:
description: 'Traefik entrypoint (e.g. web, websecure)'
required: false
default: 'web'
push_image:
description: 'Whether to push the built Docker image to registry'
required: false
default: 'true'
deploy:
description: 'Whether to deploy to TrueNAS'
required: false
default: 'true'
runs:
using: 'composite'
steps:
- name: Package and Deploy Static Pages
shell: bash
env:
INPUT_PATH: ${{ inputs.path }}
INPUT_DOMAIN: ${{ inputs.domain }}
INPUT_APP_NAME: ${{ inputs.app_name }}
INPUT_REGISTRY: ${{ inputs.registry }}
INPUT_IMAGE_NAME: ${{ inputs.image_name }}
INPUT_GIT_TOKEN: ${{ inputs.git_token }}
INPUT_SSH_KEY: ${{ inputs.ssh_key }}
INPUT_HOST: ${{ inputs.host }}
INPUT_USER: ${{ inputs.user }}
INPUT_NETWORK: ${{ inputs.network }}
INPUT_SPA: ${{ inputs.spa }}
INPUT_ENTRYPOINTS: ${{ inputs.traefik_entrypoints }}
INPUT_PUSH_IMAGE: ${{ inputs.push_image }}
INPUT_DEPLOY: ${{ inputs.deploy }}
REPO_NAME: ${{ github.event.repository.name }}
GITHUB_REPOSITORY: ${{ github.repository }}
GITHUB_ACTOR: ${{ github.actor }}
run: |
bash "${{ github.action_path }}/deploy.sh"