add gitea actions workflow for vercel auto-deploy
Some checks failed
Deploy to Vercel / deploy (push) Has been cancelled

On push to master, Gitea Actions checks out, installs deps, type-
checks, and runs `vercel deploy --prod`. See .gitea/RUNNER_SETUP.md
for one-time setup (act_runner install, Vercel token, three Gitea
secrets).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-30 13:28:41 +02:00
parent a7c05104af
commit c25d568149
2 changed files with 145 additions and 0 deletions

110
.gitea/RUNNER_SETUP.md Normal file
View File

@@ -0,0 +1,110 @@
# Gitea Actions runner + Vercel auto-deploy
Pushes to `master` on Gitea trigger
[`.gitea/workflows/deploy.yml`](workflows/deploy.yml), which type-checks
the project and ships to Vercel production.
You only need to do this setup once.
---
## 1. Enable Actions on the Gitea instance
If you've never used Actions on this Gitea before, enable it in
`/etc/gitea/app.ini` (path varies by install):
```ini
[actions]
ENABLED = true
DEFAULT_ACTIONS_URL = https://github.com
```
Restart Gitea (`systemctl restart gitea` or however you run it).
Then on the **repo** in Gitea: Settings → Actions → Enable Actions
for this repository.
## 2. Install a Gitea Actions runner on the Debian box
Gitea ships its own runner binary called `act_runner`. SSH into your
Debian box and:
```bash
# Download latest act_runner (check https://gitea.com/gitea/act_runner/releases for newest)
wget -O act_runner https://dl.gitea.com/act_runner/act_runner-linux-amd64
chmod +x act_runner
sudo mv act_runner /usr/local/bin/
# Generate config
act_runner generate-config > config.yaml
# Register with your Gitea instance
# Get a registration token from: https://git.sometimescode.com/-/admin/actions/runners
# (admin level — registers a global runner) OR from the repo settings (repo-scoped)
act_runner register --no-interactive \
--instance https://git.sometimescode.com \
--token <REGISTRATION_TOKEN> \
--name debian-runner \
--labels ubuntu-latest:docker://node:24-bookworm,self-hosted
# Run as a service (systemd)
sudo cp /usr/local/bin/act_runner /etc/systemd/system/
# (Gitea docs walk through the .service file; or just run in tmux for now)
act_runner daemon
```
The `--labels ubuntu-latest:docker://node:24-bookworm` line tells the
runner: when a workflow says `runs-on: ubuntu-latest`, use the
`node:24-bookworm` Docker image. That image has Node 24 + git
preinstalled, which is what our workflow needs.
Verify it's online: Gitea → Repo → Settings → Actions → Runners
should show one online runner.
## 3. Get a Vercel API token
1. https://vercel.com/account/tokens
2. Create Token, name it "Gitea fivedevs deploy"
3. Scope: full account (or just the `fivedevs` project if Vercel
supports per-project tokens on your plan)
4. Copy the token — you'll only see it once
## 4. Add the three secrets to Gitea
Repo → Settings → Secrets → New Secret. Add three:
| Secret name | Value |
|-----------------------|--------------------------------------------------|
| `VERCEL_TOKEN` | The token from step 3 |
| `VERCEL_ORG_ID` | `team_dvgkcoMxfZwVhSau0vhTeT1I` |
| `VERCEL_PROJECT_ID` | `prj_QVFJhWqmkrzGVP0HBsJJrDxQ96c3` |
(The org and project IDs come from `.vercel/project.json` in this
repo. They're not sensitive but treating them as secrets keeps the
workflow file portable.)
## 5. Test it
Push any tiny change to master. Within ~10 seconds:
- Gitea: Repo → Actions tab → you should see a workflow run
- After ~2-3 min: Vercel dashboard → fivedevs project → new
deployment with the matching commit SHA
If the workflow fails, click into it for logs. Common issues:
- **`vercel deploy` fails with "missing project"** → double-check
`VERCEL_ORG_ID` / `VERCEL_PROJECT_ID` secret values
- **`pnpm: command not found`** → runner isn't using a Node-equipped
image; revisit step 2's `--labels` line
- **Workflow doesn't trigger at all** → repo Settings → Actions
isn't enabled
## What the workflow does
1. Checks out the repo (full history)
2. Installs pnpm + Node 24 with dependency caching
3. `pnpm install --frozen-lockfile`
4. `tsc --noEmit` to fail fast on type errors
5. `vercel deploy --prod --yes` — uploads source to Vercel, Vercel
builds & deploys, returns the prod URL
The whole pipeline is ~2 min on a warm cache.

View File

@@ -0,0 +1,35 @@
name: Deploy to Vercel
on:
push:
branches: [master]
jobs:
deploy:
runs-on: ubuntu-latest
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 24
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Type check
run: pnpm exec tsc --noEmit
- name: Deploy to Vercel
run: npx vercel deploy --prod --yes --token=${{ secrets.VERCEL_TOKEN }}