mirror of
https://github.com/aliasvault/aliasvault.git
synced 2026-07-31 09:17:11 -04:00
79 lines
2.4 KiB
YAML
79 lines
2.4 KiB
YAML
# Deploys the documentation site (docs/) to docs.aliasvault.com.
|
|
#
|
|
# Triggers:
|
|
# - Automatically on every published GitHub release.
|
|
# - Manually via "Run workflow" (workflow_dispatch).
|
|
name: Deploy docs
|
|
|
|
on:
|
|
release:
|
|
types: [published]
|
|
workflow_dispatch:
|
|
inputs:
|
|
ref:
|
|
description: 'Branch or tag to deploy the docs from (defaults to the branch this workflow is run on)'
|
|
required: false
|
|
type: string
|
|
|
|
# Never run two deploys at once; cancel-in-progress is off so an in-flight
|
|
# deploy finishes cleanly before the next one starts.
|
|
concurrency:
|
|
group: deploy-docs
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
deploy:
|
|
name: Deploy docs to production
|
|
runs-on: ubuntu-latest
|
|
environment:
|
|
name: docs-production
|
|
url: https://docs.aliasvault.com
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.ref || github.ref }}
|
|
sparse-checkout: docs
|
|
|
|
# Build the static site in CI, we only deploy the built site to the server.
|
|
- name: Setup Node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: npm
|
|
cache-dependency-path: docs/package-lock.json
|
|
|
|
- name: Build static site
|
|
working-directory: docs
|
|
run: |
|
|
npm ci
|
|
npm run build
|
|
|
|
- name: Setup SSH
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
echo "${{ secrets.DOCS_DEPLOY_SSH_KEY }}" > ~/.ssh/deploy_key
|
|
chmod 600 ~/.ssh/deploy_key
|
|
ssh-keyscan -H "${{ secrets.DOCS_DEPLOY_HOST }}" >> ~/.ssh/known_hosts
|
|
|
|
# Rsync the pre-built static site plus the small serving config.
|
|
- name: Rsync docs to server
|
|
run: |
|
|
rsync -az --delete \
|
|
--exclude='docker-compose.override.yml' \
|
|
--exclude='.env' \
|
|
-e "ssh -i ~/.ssh/deploy_key" \
|
|
./docs/build \
|
|
./docs/nginx.conf \
|
|
./docs/Dockerfile \
|
|
./docs/.dockerignore \
|
|
./docs/docker-compose.yml \
|
|
${{ secrets.DOCS_DEPLOY_USER }}@${{ secrets.DOCS_DEPLOY_HOST }}:/opt/docs/
|
|
|
|
- name: Rebuild and restart Docker Compose
|
|
run: |
|
|
ssh -i ~/.ssh/deploy_key \
|
|
${{ secrets.DOCS_DEPLOY_USER }}@${{ secrets.DOCS_DEPLOY_HOST }} \
|
|
"cd /opt/docs && docker compose up -d --build --force-recreate && docker system prune -af"
|