Repository navigation
Repositories, routing and triggers: runs start from a git push - #7
Merged
Merged
Conversation
- Secrets encrypted with AES-256-GCM under a key file only the controller reads; each ciphertext is bound to its secret's name - A request is granted only if the worker holds the job, the job token is the current attempt's, the job lists the secret, and the admin's policy allows the run: repositories, pools, refs, and pull requests (off by default) - Every request is recorded, granted or not; without an audit record the secret isn't handed out - controller secret set (value from stdin), list, delete, access - Tests: granted and masked end to end, each policy denial, and attempts around the checks (unlisted secret, wrong token, another worker's job); each check verified by removing it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Repository registry: clone URL, routing rules (event + ref -> pool, first match wins, default everything -> untrusted), trigger tokens (hash-only), optional read credential encrypted with the secrets key - TriggerService: Trigger, GetRun, GetJobLog. A token only reaches its own repository. The controller reads the pipeline at the commit itself from its own mirror; the caller can't supply it or choose the pool - opifica hook post-receive: the git hook for bare repositories on your own server; never fails the push, prints the runs for the pusher - opifica trigger -wait: for GitHub Actions (reads the workflow's event; for pull requests the head commit, not GitHub's merge commit), follows the logs, exits with the run's result, writes a step summary - Repository credentials reach workers with each job, never stored in it - Git mirror moved to internal/gitmirror, shared by worker and controller - controller repo create|list|delete|token create; serve -allow-local-repos - Docs: no forge providers; your own git server or GitHub; example workflow Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tains #6) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Runs now start from a
git push, whether the repository is on your own git server or on GitHub. No forge integrations: both paths use the same trigger API and CLI code, all ours.Repository registry (
controller repo create|list|delete|token create)-route push:main=trusted -route tag:v*=release -route pull_request=untrusted. The default sends everything tountrusted.Trigger API (
TriggerService: Trigger, GetRun, GetJobLog).opifica/pipeline.yamlat the commit, from its own mirror. The caller can neither supply the pipeline nor choose the pool.Your own git server:
opifica hook post-receiveis the hook for bare repositories. It never fails a push, since the push has already been accepted, and it prints the runs it started:GitHub:
opifica trigger -wait, in a workflow step (examples/github-actions.yml).Tests
git pushof a branch and a tag starts two runs, intrustedandrelease. A push no rule matches is reported to the pusher, and the push still succeeds.opificabinary with GitHub Actions' environment: a succeeding run exits 0 with the output and summary. A failing run exits 1 and shows the failing job's exit code.maingets nothing. Also the GitHub event parsing.Next:
opifica-git, so that creating a repository makes the bare repo and installs this hook for you. It still needs a decision: push over HTTPS, SSH, or both.🤖 Generated with Claude Code