diff --git a/Capabilities.md b/Capabilities.md index 72e8055..20d7ab4 100644 --- a/Capabilities.md +++ b/Capabilities.md @@ -16,69 +16,3 @@ Rows that say Implemented or Guides written exist today. The rest is planned and | Publish a repository wiki from `wiki/` (opt-in, delivered to every organization) | Implemented in `.gitea/scoped_workflows/publish-wiki.yml`, with offline tests; a pilot in a second repository publishes its wiki (MIL-006) | | Shared quality checks (Python and shell) | Implemented as the reusable workflow `.gitea/workflows/quality-checks.yml`, with offline tests and a trial in a second organization; adopted in RepoFoundry ([guide](QualityChecksPythonShell)) | | Versioned release and publishing | Release process, changelog and upgrade guide defined; the release workflow exists and `v1.0.0` is released (MIL-004) ([guide](Upgrading)) | - -### Sync GitHub metadata - -Syncs the Gitea repository description and topics to the GitHub push mirror. - -#### Cron - -Daily at 03:17 UTC (`17 3 * * *`), plus every push to `main` and manual `workflow_dispatch`. - -#### Workflow - -```plantuml -@startuml -title Sync Gitea repository description and topics to GitHub - -autonumber - -actor "Push to main,\nmanual trigger, or schedule" as Trigger -participant "Gitea Actions\nsync-github-metadata" as Workflow -participant "Gitea REST API" as Gitea -participant "GitHub REST API" as GitHub - -Trigger -> Workflow: Start workflow -activate Workflow - -Workflow -> Workflow: Read and validate secrets -note right -TOKEN_FOR_GITEA -PAT_FOR_GITHUB -end note - -alt secret validation failed - Workflow --> Trigger: workflow failed -end - - -Workflow -> Gitea: GET /repos/{owner}/{repo} -Gitea --> Workflow: Description and topics - -Workflow -> Gitea: GET /repos/{owner}/{repo}/push_mirrors -Gitea --> Workflow: Push mirror response - -alt mirrors is not a list - Workflow --> Trigger: Log a warning and succeed\n(GitHub metadata not synced) -else mirrors is a list with no GitHub mirror - Workflow --> Trigger: Log that there is nothing to sync and succeed -else mirrors is a list - Workflow -> Workflow: Find GitHub owner and repo from remote_address - - Workflow -> GitHub: PATCH /repos/{owner}/{repo}\n{description} - GitHub --> Workflow: Repository updated - - Workflow -> GitHub: PUT /repos/{owner}/{repo}/topics\n{names} - GitHub --> Workflow: Topics updated - - Workflow --> Trigger: Sync completed -else Gitea API denies access - Gitea --> Workflow: HTTP 403 Forbidden - Workflow --> Trigger: Workflow fails -else GitHub API denies access - GitHub --> Workflow: HTTP error - Workflow --> Trigger: Workflow fails -end -deactivate Workflow -@enduml -```