argo_ci is a set of reusable Argo Workflows + Argo Events CI templates for
Go projects, plus a generate.sh renderer. It scaffolds a live-confirmed
pipeline: a Gitea push webhook triggers Argo Events, which submits an Argo
Workflow that builds/vets/tests/lints the repo and reports a commit status
back to Gitea that branch protection can require.
What it does
Gitea push --> EventSource/Sensor (Argo Events) --> Argo Workflow
|
v
build / vet / test / lint / coverage
|
v
commit status posted back to Gitea
- Renders per-project manifests (
workflow-template.yaml,rbac.yaml, theevents/EventSource/Sensor/NetworkPolicy set, and.golangci.yml) from a single params file – no Helm or Kustomize, justsed-style__ARGOCI_XXX__placeholder substitution. - Keeps cluster-wide resources (the Argo Workflows/Events controllers and
CRDs) and namespace-shared resources (
EventBus, thegitea-credentialsSecret) separate from per-project resources named afterPROJECT_NAME, so multiple projects coexist in the same namespaces without colliding. - Ships a Claude Code skill (
argo-ci-scaffold) for hands-off scaffolding into a new project, and awebhook-info.shhelper that exposes the webhook endpoint and prints the exact Target URL to paste into Gitea.
Quick start
Install Argo Workflows and Argo Events on the cluster once (not per project):
kubectl create namespace argo
kubectl apply --server-side --force-conflicts -n argo \
-f https://github.com/argoproj/argo-workflows/releases/latest/download/install.yaml
kubectl create namespace argo-events
kubectl apply --server-side --force-conflicts -n argo-events \
-f https://github.com/argoproj/argo-events/releases/latest/download/install.yaml
kubectl apply --server-side --force-conflicts -n argo-events \
-f https://github.com/argoproj/argo-events/releases/latest/download/install-validating-webhook.yaml
Copy params.example.env, fill in the required values, and render the
manifests for your project:
./generate.sh --params my-project-params.env --out /path/to/my-project/ci
Apply the gitea-credentials Secret, rbac.yaml, workflow-template.yaml,
the events/ resources, then run ./webhook-info.sh <project> <events-namespace>
to get the Target URL for Gitea’s webhook settings. Full apply order,
parameter reference, and verification steps are in the repo’s README.md
and TROUBLESHOOTING.md.
Trigger a run without changing any files:
git commit --allow-empty -m "trigger ci" && git push