commit e246c01af7d3fe344691545214761137d56e0156 Author: will Date: Thu Jul 30 11:30:05 2026 +0000 Initial commit diff --git a/.gitea/workflows/sync.yml b/.gitea/workflows/sync.yml new file mode 100644 index 0000000..57e8f73 --- /dev/null +++ b/.gitea/workflows/sync.yml @@ -0,0 +1,26 @@ +name: Sync courses +on: + push: + branches: [master] + +jobs: + sync: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Package and sync + run: | + tar czf /tmp/courses.tar.gz courses + status=$(curl -s -o /tmp/sync-response.json -w '%{http_code}' \ + -X POST "http://eec-__CLIENT__:8080/admin/sync" \ + -H "Authorization: Bearer ${__CLIENT___EEC_SYNC_TOKEN}" \ + --data-binary @/tmp/courses.tar.gz) + cat /tmp/sync-response.json + echo + if [ "$status" -ge 300 ]; then + echo "sync failed with status $status" + exit 1 + fi + env: + __CLIENT___EEC_SYNC_TOKEN: ${{ secrets.__CLIENT___EEC_SYNC_TOKEN }} diff --git a/README.md b/README.md new file mode 100644 index 0000000..a2f1d51 --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ +# __CLIENT__-eec-courses + +Course content for [eec](https://gitea.reground.org/will/eec), the self-paced +email course engine — this instance served at eec.__DOMAIN__. Push to +`master` and CI syncs `courses/` straight to production — there's no staging +step, so treat a push here the same as a push to `eec` itself. + +Full reference for course/step file format, `course.yml` fields, the +readiness step, drip-triggered courses, and sync guardrails lives in the +[`eec-courses`](https://gitea.reground.org/will/eec-courses) README — the +format is identical, only the target instance differs. + +## Layout + +``` +courses/ + / + course.yml + day-0.md + day-1.md + ... +``` + +## Deploying + +Push to `master` → `.gitea/workflows/sync.yml` tars up `courses/` and +`POST`s it to this domain's `eec-__CLIENT__` container over the internal +Docker network, authenticated with `__CLIENT___EEC_SYNC_TOKEN` (a Gitea +Actions secret shared with the `eec-__CLIENT__` Ansible role's copy). No +separate deploy step, no staging — a push here goes live immediately. + +--- + +**Generating a new client repo from this template:** + +1. Gitea → "Generate Repo" from this template repo's page, named `-eec-courses`. +2. Find/replace `__CLIENT__` → the client's slug (must match the `eec-` container name) and `__DOMAIN__` → the client's domain, in this README and in `.gitea/workflows/sync.yml`. +3. Add the `_EEC_SYNC_TOKEN` Actions secret to the new repo (Gitea does not carry secrets over from a template) — value must match the `eec-` Ansible role's copy. +4. Delete this "Generating a new client repo" section from the new repo's README once done. diff --git a/courses/.gitkeep b/courses/.gitkeep new file mode 100644 index 0000000..e69de29