Frederico Falcao f2a6525224 init
2025-05-30 10:46:17 +01:00

3.2 KiB

01-deploy — Deploy Tab Documentation

This tab provides a web interface for source code deployment and management via Git.

Features

  • Deploy a specific commit: Checkout a chosen commit and run build scripts with one click.
  • Pull and merge ZIP from GitHub/GitLab: Download a repo archive at a specific commit and merge it into the current working tree.
  • Direct ZIP upload: Upload a ZIP file from your computer to merge and commit to the repository.
  • Browse commit history: View recent commits, examine their details in a modal, and deploy any commit to a chosen target.
  • Multiple deploy targets: Supports easy deployment to www (production), beta, or beta-2 via dropdown actions.

File Overview

  • 01_constants.php — Defines $repoDir, the local path to your code repository. Used everywhere the repo is referenced.
  • 02_supportFuncs.php — Helper functions for:
    • Running Git commands
    • Listing commits (listGitCommits())
    • Storing and loading last deploy info (getLastDeployData(), setLastDeployData())
    • Executing shell command sequences with formatted output (runShellSteps())
    • Sanitizing inputs for hashes/user paths (sanitizeRepoInput())
  • 03_handler.php — Main backend logic:
    • Handles POST/GET for deploys, ZIP pulls, uploads, and commit info retrieval.
    • Echoes info/error/success blocks for each operation.
    • All sensitive input is sanitized before use in shell commands.
  • 04_nav-item.html.php — Contains the navigation tab button HTML for activating the Deploy tab.
  • 05_content.html.php — Main UI HTML:
    • Forms for ZIP pull/upload.
    • Table of recent commits, each with deploy dropdown for all targets.
    • Commit history linked to the modal for details.
  • 06_modals.html.php — Bootstrap modal for commit details, loaded on demand by JavaScript.
  • 07_javascript.js
    • Handles dynamic loading of commit info into the modal via AJAX/fetch.
    • Live URL preview while typing GitHub repo/hash for ZIP pulls.

Usage

  1. Deploy a commit: Click the dropdown next to a commit, select your target, and the backend will checkout, install, build, and deploy that revision.
  2. Merge from GitHub: Fill in username/repo/hash and click to pull & merge that remote ZIP into your codebase.
  3. Upload ZIP: Upload a ZIP file (from external export or other CI pipeline) and have its content merged and committed to the repo.
  4. View commit details: Click any commit in the table to view the full diff, author, date, and message in a modal.

Security & Safety

  • Inputs are sanitized before being passed to shell or git commands.
  • Only users with web access to the admin panel can trigger deploy steps.
  • All output from shell commands is displayed to the user for transparency.

Customization

  • To update what happens on deployment, edit the $steps arrays in 03_handler.php.
  • For new deploy targets, adjust forms and handler logic as needed.
  • The build sequence (npm, asto, rsync, etc.) can be tailored for your tech stack.

This tab is a minimal self-service deployment panel fitting teams who need to pull, merge, and deploy new code quickly, review git history, and provide a safe admin pathway for ops and releases.