Skip to content

Hetzner E2E Reaper

Hetzner E2E Reaper #85

name: Hetzner E2E Reaper
# Belt-and-suspenders cleanup. Runs every 30 minutes and deletes any
# `ci=true,workflow=hetzner-e2e` servers older than 60 minutes — in
# case a crashed workflow leaks one. Gracefully no-ops when
# HCLOUD_TOKEN_CI isn't set so it doesn't spam-fail before secrets
# are configured.
on:
schedule:
- cron: '*/30 * * * *'
workflow_dispatch:
concurrency:
group: hetzner-e2e-reaper
cancel-in-progress: false
# Default to least privilege. Override per-job where needed.
permissions:
contents: read
jobs:
reap:
name: Sweep stale CI servers
runs-on: ubuntu-latest
environment: ci-hetzner-e2e
timeout-minutes: 10
env:
HCLOUD_TOKEN_CI: ${{ secrets.HCLOUD_TOKEN_CI }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: 1.3.13
- name: Install dependencies
run: bun install --ignore-scripts
- name: Reap
run: bun run packages/scripts/cloud/admin/hetzner-e2e/hetzner-e2e-reaper.ts