generated from will/eec-courses-template
Initial commit
This commit is contained in:
@@ -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 }}
|
||||||
@@ -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/
|
||||||
|
<slug>/
|
||||||
|
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 `<client>-eec-courses`.
|
||||||
|
2. Find/replace `__CLIENT__` → the client's slug (must match the `eec-<client>` container name) and `__DOMAIN__` → the client's domain, in this README and in `.gitea/workflows/sync.yml`.
|
||||||
|
3. Add the `<CLIENT>_EEC_SYNC_TOKEN` Actions secret to the new repo (Gitea does not carry secrets over from a template) — value must match the `eec-<client>` Ansible role's copy.
|
||||||
|
4. Delete this "Generating a new client repo" section from the new repo's README once done.
|
||||||
Reference in New Issue
Block a user