Files
markusgraf_ch/openspec/specs/deployment/spec.md
gurixandClaude adbee2c655 chore: archive completed OpenSpec changes
Archive all 6 deployed changes following OpenSpec workflow:
- add-minimal-hugo-site → hugo-site spec
- add-multilingual-support → internationalization spec
- migrate-site-content → content-migration + image-assets specs
- add-custom-bootstrap-styling → styling spec
- add-cv-page → content-management spec
- simple-deployment → deployment spec

All changes moved to archive/ with 2025-10-30 date prefix.
Created 7 capability specs reflecting deployed functionality.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 17:22:03 +01:00

4.9 KiB

deployment Specification

Purpose

TBD - created by archiving change simple-deployment. Update Purpose after archive.

Requirements

Requirement: Rsync Deployment Script SHALL be provided

The system SHALL provide an automated deployment script that syncs the built Hugo site to the production server via rsync over SSH, properly mirroring content.

Scenario: User deploys site after building

Given the Hugo site has been built successfully (public/ directory exists) And the user has set the SSH_USER and SSH_HOST environment variables When the user runs the deployment script Then the script connects to the specified SSH_HOST via rsync over SSH And syncs all files from the public/ directory to the REMOTE_ROOT directory on the server And deletes remote files that don't exist locally (mirror behavior) And displays sync progress and completion status And exits with status code 0 on success

Scenario: Script fails when credentials are missing

Given the Hugo site has been built And the SSH_USER or SSH_HOST environment variable is not set When the user runs the deployment script Then the script displays an error message explaining the missing configuration And exits with a non-zero status code And does not attempt to connect to the server

Scenario: Script handles connection failures gracefully

Given the SSH_USER and SSH_HOST are set correctly And the network connection to the server is unavailable or SSH authentication fails When the user runs the deployment script Then the script displays a clear error message about the connection failure And exits with a non-zero status code And does not leave the deployment in a partially completed state

Requirement: Secure Credential Management SHALL be enforced

The deployment process SHALL handle credentials securely without exposing them in version control or script output.

Scenario: Configuration stored as environment variables

Given the user needs to deploy the site When the user reviews the deployment documentation Then the documentation instructs them to set SSH_USER, SSH_HOST, SSH_PORT, and REMOTE_ROOT as environment variables And the deployment script reads configuration only from environment variables And credentials are never hardcoded in scripts or configuration files And SSH key-based authentication is used for secure, password-less access

Scenario: Script does not expose credentials in output

Given the deployment script is running When the script displays status messages or logs Then SSH keys or passwords are never displayed in plain text And connection strings show only the host and user information And error messages do not reveal credential values

Requirement: Deployment Status Feedback SHALL be provided

The deployment script SHALL provide clear feedback about the deployment process and outcome.

Scenario: User receives progress updates during deployment

Given the deployment script is uploading files When the upload is in progress Then the script displays which files or directories are being uploaded And shows overall progress indicators And provides estimated time or completion percentage when possible

Scenario: Successful deployment confirmation

Given all files have been uploaded successfully When the deployment completes Then the script displays a success message And confirms the total number of files uploaded And exits with status code 0

Scenario: Failed deployment with actionable error

Given an error occurs during deployment When the deployment fails Then the script displays the specific error encountered And suggests possible remediation steps And exits with a non-zero status code

Requirement: Deployment Prerequisites SHALL be verified

The deployment script SHALL verify that prerequisites are met before attempting deployment.

Scenario: Script checks for built site

Given the user runs the deployment script When the script starts Then it verifies that the public/ directory exists And contains files to deploy And exits with an error if the directory is missing or empty

Scenario: Script checks for required tools

Given the deployment script starts When it performs prerequisite checks Then it verifies that rsync is installed and available And displays an installation message if rsync is missing And exits with an error if required tools are unavailable

Scenario: Script supports configurable ports and remote directories

Given the user needs to deploy to a non-standard SSH port or directory When the user sets SSH_PORT and REMOTE_ROOT environment variables Then the script uses the specified port instead of the default (22) And the script uploads to the specified remote directory instead of the default (/httpsdocs) And if these variables are not set, the script uses sensible defaults