Initial commit: deploy-site action

This commit is contained in:
Christopher Mühl 2026-02-16 11:05:35 +01:00
commit 0933cf2bf5
No known key found for this signature in database
GPG key ID: 925AC7D69955293F
3 changed files with 113 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
*.tar.gz
.DS_Store

61
README.md Normal file
View file

@ -0,0 +1,61 @@
# CI Actions
Reusable Forgejo/Gitea actions for toph's infrastructure.
## Available Actions
### `deploy-site`
Deploy a static site to production.
**Usage:**
```yaml
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: self-hosted
steps:
- uses: actions/checkout@v4
- name: Build site (if needed)
run: npm run build
- name: Deploy
uses: https://git.toph.so/toph/ci-actions/deploy-site@main
with:
site-name: mysite
source-dir: dist # optional, defaults to current dir
```
**What it does:**
- Packages your site
- Uploads to deployment server
- Triggers Nomad deployment
- Site becomes available at `https://{site-name}.toph.so`
**No configuration needed** - infrastructure handles:
- Docker images
- Resource limits
- Domains & SSL
- Load balancing
## Development
To add a new action:
```bash
mkdir -p new-action
cd new-action
vim action.yaml
```
Then commit and push to `main`.
## License
MIT

50
deploy-site/action.yaml Normal file
View file

@ -0,0 +1,50 @@
name: Deploy Site
description: Deploy a static site to production
inputs:
site-name:
description: 'Site identifier (determines URL and deployment)'
required: true
source-dir:
description: 'Directory containing the built site'
required: false
default: '.'
runs:
using: composite
steps:
- name: Package site
shell: bash
run: |
echo "📦 Packaging ${{ inputs.site-name }}..."
cd "${{ inputs.source-dir }}"
tar czf /tmp/${{ inputs.site-name }}.tar.gz .
echo "✓ Packaged $(du -h /tmp/${{ inputs.site-name }}.tar.gz | cut -f1)"
- name: Deploy via API
shell: bash
run: |
echo "🚀 Deploying ${{ inputs.site-name }}..."
# TODO: Replace with actual deployment endpoint
# For now, use rsync + nomad dispatch
# Extract to deployment location
ssh deploy@alvin "mkdir -p /var/www/sites/${{ inputs.site-name }}"
scp /tmp/${{ inputs.site-name }}.tar.gz deploy@alvin:/tmp/
ssh deploy@alvin "cd /var/www/sites/${{ inputs.site-name }} && tar xzf /tmp/${{ inputs.site-name }}.tar.gz"
# Trigger deployment
ssh deploy@alvin "nomad job dispatch -meta site=${{ inputs.site-name }} deploy-site"
echo "✅ Deployed!"
- name: Show deployment info
shell: bash
run: |
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Site: ${{ inputs.site-name }}"
echo "URL: https://${{ inputs.site-name }}.toph.so"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"