Centralized GitHub Actions workflows, issue templates and configuration for the control-toolbox organization's Julia packages.
- Reusable workflows (
on: workflow_call) that every package calls with a thin caller:uses: control-toolbox/CTActions/.github/workflows/<name>.yml@main. CI, coverage, documentation, breakage, formatting, spell check, CompatHelper, README generation, issue assignment, project board. - Workflows for the whole organization, run here on a schedule: the monthly
[compat]prune of every CT* package, the maintenance and watchdog of theoccidataself-hosted runner. - The organization's GitHub App,
control-toolbox-bot, used by the workflows that write to other repositories. - Issue templates and the Dependabot configuration.
docs/README.md: the philosophy (centralize then call, opt-in labels), the catalog of every workflow with its page, and the conventions:
| Page | Content |
|---|---|
| Labels | Opt-in triggers on pull requests, and their vocabulary |
| Runners | GitHub-hosted and self-hosted (GPU) runners, split CI |
| Secrets and registries | Every secret, ct-registry |
| GitHub App | control-toolbox-bot, and how to use it for something new |
| Repositories | Which repository has which workflow, and why |
| Recipes | A new repository, a change across the organization |
# .github/workflows/CI.yml in a control-toolbox package
name: CI
on:
push:
branches: [main]
tags: '*'
pull_request:
types: [labeled, synchronize, reopened]
jobs:
test-cpu-github:
if: >
github.event_name != 'pull_request' ||
(github.event.action == 'labeled' && github.event.label.name == 'run ci github-runner') ||
(github.event.action != 'labeled' && contains(github.event.pull_request.labels.*.name, 'run ci github-runner'))
uses: control-toolbox/CTActions/.github/workflows/ci.yml@main
with:
runs_on: '["ubuntu-latest", "macos-latest", "windows-latest"]'
use_ct_registry: true
secrets:
SSH_KEY: ${{ secrets.SSH_KEY }}More callers: one per page in docs/workflows/.
Five templates: Bug report, Feature request, Documentation suggestion, Developers (internal) and Blank issue. Discussions are redirected to GitHub Discussions.
Weekly updates of the GitHub Actions versions (.github/dependabot.yml).