v1.12.0

Stack pages and GitHub Actions on siGit CICD

This release adds a page for each stack and the backend for running GitHub Actions jobs on siGit CICD.

Stack pages

A stack now has a number, taken from the same counter as issues and pull requests, and a page at /:username/:repository/tmpk/:number. The page lists every layer top first with its state, author, position and a checks tally that links to the pull request's CICD tab. Merged layers stay in the list, and merging the bottom pull request no longer dissolves the stack. Existing stacks are numbered from their current chains by a migration.

/tmpk/:number/files shows one read-only diff from the stack's base branch to the head of the highest open layer. Line comments stay on each pull request. The stack indicator and #N references in markdown link to the page.

GitHub Actions on siGit CICD

A workflow job that carries the sigit-cicd label can run on siGit CICD runners when its repository is private and belongs to an organization whose installation of the siGit CICD GitHub App an operator has turned on. The job gets a one-job runner, and a sweep every two minutes removes runners that got no job and retries launches that were lost. /admin/cicd lists the installations with an on/off switch and the latest GitHub jobs.

Nothing runs until the App is configured and an installation is switched on, so this release changes nothing for existing repositories.

Fixes

  • The sigitcodereview and sigitcode member accounts that own data are renamed to sigitcodereview-old and sigitcode-old when the bot names are freed. In v1.11.4 the migration refused to run when such a member owned anything.
  • The "Mirrored from" box now shows on every repository page, and Sync now returns to the page it was clicked from.
  • GET /api/v1/models answers with a 500 when the model list can't be read. It used to answer an empty list, which made a missing database grant look like a catalogue with no models.
  • Code review pages and the Cloud Agent setting call the native forge siGit Si instead of sigit.si.