86 lines
2.8 KiB
YAML
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"
|