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"