GitHub Workflows#

We have a limited amount of free usage of GitHub Actions, but we are currently well under that limit. Small GitHub Actions are fine to add, but longer jobs may need discussion or approval.

Use of GitHub Workflows (Actions) in SSW projects is not required, but there are a few suggested tools. The suggested tools are collected into the repository at lsst-ts/tssw_workflows. It contains the following:

  • enforce_rebase checks that the branch is rebased onto the latest develop branch.

    .github/workflows/enforce_rebase.yaml#
    name: enforce_rebase
    
    on:
      pull_request:
        types: [assigned, opened, synchronize, reopened, labeled, unlabeled]
    
    jobs:
      call-workflow:
        uses: lsst-ts/tssw_workflows/.github/workflows/enforce_rebase.yaml@main
    
  • lint uses the standard pre-commit configuration and runs generate_pre_commit_conf and all pre-commit hooks.

    .github/workflows/lint.yaml#
    name: lint
    
    on: push
    
    jobs:
      call-workflow:
        uses: lsst-ts/tssw_workflows/.github/workflows/lint.yaml@main
    
  • news_creation confirms that at least one news fragment has been added.

    .github/workflows/news_creation.yaml#
    name: news_creation
    
    on:
      pull_request:
        types: [opened, reopened, synchronize]
    
    jobs:
      call-workflow:
        uses: lsst-ts/tssw_workflows/.github/workflows/news_creation.yaml@main
    

Although the lint action is redundant with Jenkins, the other two provide independent checks; however, the addition of the lint action gives rapid feedback when lint rules have been violated and makes the information available to users who don’t have access to Jenkins.