sync: secret names Gitea accepts (SYNC_GITHUB_KEY, SYNC_GITHUB_TOKEN) (#179) Gitea refuses secret names starting GITHUB_ or GITEA_, so the GitHub copy's deploy key is in SYNC_GITHUB_KEY. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
40 lines
1.9 KiB
YAML
40 lines
1.9 KiB
YAML
name: sync
|
|
# Keeps this repo's copies on other forges in step with it (time/sync.json, .github/time/sync.py). One home, one writer
|
|
# per branch: main goes out to every copy, fast-forward only (a copy with commits of its own is reported, never
|
|
# overwritten); the branches a copy is told to send back (claude/* from cloud sessions on GitHub) come in as PRs here,
|
|
# and Time's council reviews and lands them like any other. Each copy's token is a secret named in sync.json and passed
|
|
# below (a token for https, a deploy key for ssh); a copy without one is skipped. On a GitHub copy, turn GitHub Actions off: these workflows must run here only.
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
schedule:
|
|
- cron: "*/15 * * * *"
|
|
workflow_dispatch:
|
|
inputs:
|
|
force:
|
|
description: "Force-push main to the copies once (replaces a copy's own history, e.g. an archived copy's)"
|
|
type: boolean
|
|
default: false
|
|
concurrency:
|
|
group: sync
|
|
cancel-in-progress: false
|
|
jobs:
|
|
sync:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
with:
|
|
sparse-checkout: .github/time
|
|
persist-credentials: false
|
|
# a copy over SSH (a deploy key) needs the ssh client; the job image may not have it
|
|
- run: command -v ssh || (apt-get update -qq && apt-get install -y -qq --no-install-recommends openssh-client >/dev/null)
|
|
- run: python3 .github/time/sync.py
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
TIME_TOKEN: ${{ secrets.TIME_TOKEN }} # branches and PRs on the home go in as the `time` user
|
|
SYNC_FORCE: ${{ inputs.force && '1' || '' }}
|
|
# Gitea refuses secret names starting GITHUB_ or GITEA_, hence SYNC_
|
|
SYNC_GITHUB_KEY: ${{ secrets.SYNC_GITHUB_KEY }} # github.com/teahubxyz/time: a deploy key with write access
|
|
SYNC_GITHUB_TOKEN: ${{ secrets.SYNC_GITHUB_TOKEN }} # or a token, for a copy over https
|