Generates YYYY.M.BUILD version tags on each successful deploy using the Gitea API (bypasses branch protection). Matches the pattern used in Paper Dynasty workflows. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
75 lines
2.5 KiB
YAML
75 lines
2.5 KiB
YAML
name: Deploy to Foundry Server
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0 # Full history for tag counting
|
|
|
|
# Generate CalVer: YYYY.MM.BUILD
|
|
# BUILD = count of tags matching current month + 1
|
|
- name: Generate CalVer version
|
|
id: meta
|
|
run: |
|
|
YEAR=$(date -u +%Y)
|
|
MONTH=$(date -u +%-m)
|
|
PREFIX="${YEAR}.${MONTH}."
|
|
|
|
git fetch --tags
|
|
BUILD=$(git tag -l "${PREFIX}*" | wc -l)
|
|
BUILD=$((BUILD + 1))
|
|
|
|
VERSION="${PREFIX}${BUILD}"
|
|
echo "version=${VERSION}" >> $GITHUB_OUTPUT
|
|
echo "CalVer version: ${VERSION}"
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '20'
|
|
cache: 'npm'
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Build system
|
|
run: npm run build
|
|
|
|
- name: Deploy to Foundry server
|
|
uses: burnett01/rsync-deployments@7.0.1
|
|
with:
|
|
switches: -avz --delete --exclude='.git' --exclude='node_modules' --exclude='foundrydata' --exclude='.env' --exclude='.env.example' --exclude='.gitea' --exclude='.github' --exclude='.claude' --exclude='.husky' --exclude='docs' --exclude='docker-compose.yml' --exclude='test_results'
|
|
path: ./
|
|
remote_path: /opt/foundry/data/Data/systems/vagabond/
|
|
remote_host: ${{ secrets.DEPLOY_HOST }}
|
|
remote_user: root
|
|
remote_key: ${{ secrets.DEPLOY_SSH_KEY }}
|
|
|
|
- name: Fix ownership and restart Foundry
|
|
uses: appleboy/ssh-action@v1
|
|
with:
|
|
host: ${{ secrets.DEPLOY_HOST }}
|
|
username: root
|
|
key: ${{ secrets.DEPLOY_SSH_KEY }}
|
|
script: |
|
|
chown -R 1000:1000 /opt/foundry/data/Data/systems/vagabond/
|
|
cd /opt/foundry && docker compose restart foundry
|
|
|
|
# Create git tag via Gitea API (avoids branch protection issues)
|
|
- name: Tag release
|
|
if: success()
|
|
run: |
|
|
curl -s -X POST \
|
|
-H "Authorization: token ${{ github.token }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"tag_name\": \"${{ steps.meta.outputs.version }}\", \"target\": \"${{ github.sha }}\", \"name\": \"${{ steps.meta.outputs.version }}\"}" \
|
|
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/tags"
|
|
echo "Created tag ${{ steps.meta.outputs.version }}"
|