Some checks failed
CI / build-and-test (pull_request) Has been cancelled
- .gitea/workflows/ci.yml: build + test KisaniCal scheme on a self-hosted macOS runner for every PR into main/develop (and pushes to develop). - .gitea/workflows/release.yml: archive + export IPA on push to main, with a commented TestFlight upload placeholder (App Store Connect API key). - ExportOptions.plist: export template (Team ID K8BLMMR883, app-store method). - scripts/gitea-setup.sh: idempotent Gitea API setup for develop default branch + main branch protection. - CONTRIBUTING.md: feature/* -> develop -> main workflow and PR gate rules. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.1 KiB
2.1 KiB
Contributing to KisaniCal
Branch workflow
feature/* ─PR→ develop ─PR→ main
main— protected, release-ready. Never commit or push directly. Every change arrives via a reviewed pull request. Pushes tomaintrigger the release workflow (archive → IPA → TestFlight).develop— the default working branch and integration target. CI runs on every PR into it.feature/*— short-lived branches for a single change, e.g.feature/voice-quick-add,fix/icloud-restore. Branch offdevelop.
Day-to-day
git checkout develop
git pull
git checkout -b feature/my-change
# ...work, commit...
git push -u origin feature/my-change
# then open a PR in Gitea: feature/my-change → develop
When develop is ready to ship, open a PR develop → main.
Pull request requirements
A PR into main (and develop) cannot be merged until:
- CI passes — the
build-and-testjob in.gitea/workflows/ci.ymlbuilds the app and runsKisaniCalTestson an iOS Simulator. - At least 1 approval — reviewed and approved.
- No unresolved change requests — a rejected review blocks the merge.
- Your branch is up to date with the base branch.
Direct pushes, force-pushes, and deletion of main are blocked server-side by
Gitea branch protection, and a local pre-push hook blocks accidental direct
pushes to main from this clone.
CI / CD
- CI (
.gitea/workflows/ci.yml) — runs on every PR intomain/developand on pushes todevelop. Builds + tests. A red check blocks the merge. - Release (
.gitea/workflows/release.yml) — runs only on push tomain(i.e. after a PR merges). Archives, exports an IPA viaExportOptions.plist, and (once configured) uploads to TestFlight.
Both workflows run on a self-hosted macOS runner with Xcode — there is no Gitea-hosted Mac runner.
Versioning
MARKETING_VERSION (e.g. 2.0) and CURRENT_PROJECT_VERSION (build number)
live in project.yml. The build number must increase for every TestFlight
upload — App Store Connect rejects a build number it has already seen.