argo_ci house mascot

argo_ci

Push to Gitea, get a build/vet/test/lint commit status back -- one script scaffolds the whole Argo pipeline.

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

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