Skip to content
CAI
Software that uses CAICheck a score

sbt/sbt-github-actions

58.8

Adequate · 20 September 2026

1.5k

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is an sbt plugin that automatically generates and maintains GitHub Actions workflow files, specifically ci.yml and clean.yml, based on Scala build configuration. It allows developers to define build matrices, JDK versions, and publishing targets within sbt, which the plugin then renders into valid YAML while keeping the workflows in sync with the project definition. The tool includes features for handling cross-platform builds, artifact management, and preserving manual changes to action references during regeneration.

How it got here

2020 — Initial sbt-github-actions plugin release

7 changes.

This period focused on the initial development and release of the sbt-github-actions plugin, which automatically generates and maintains GitHub Actions workflow files from sbt build definitions. The work included implementing the core generative logic, defining configuration models for build matrices and publishing, and establishing comprehensive unit and scripted tests to ensure YAML output correctness. The project also underwent foundational maintenance, including upgrading build tools and migrating its organization namespace.

2021–2026 — test coverage expansion and build maintenance

6 changes.

This period focused on significantly expanding scripted test coverage for various sbt-github-actions features, including native client behavior, Scala version suppression, and hash preservation. Concurrently, the project upgraded its build tool to sbt 1.12.2 and restructured the build layout to resolve cyclical dependencies.

Features

Initial release of sbt-github-actions plugin

This change introduces the sbt-github-actions plugin, which allows sbt projects to automatically generate and maintain GitHub Actions workflow files (ci.yml and clean.yml) directly from the build definition. The plugin provides settings to configure build matrices (Scala/Java versions, OSes), JDK selection, caching, and publishing targets, while ensuring the generated workflows stay in sync with the build configuration. It also includes documentation for usage, Windows-specific setup, and integration with sbt-ci-release.

(repo-wide) · high confidence

Introduce generative GitHub Actions plugin with comprehensive configuration model

The \src/main\ area introduces the core of a new sbt plugin that generates GitHub Actions workflows (\ci.yml\ and \clean.yml\) from Scala configuration. \GenerativeKeys\ defines the settings API, allowing users to configure build matrices (Scala/Java/OS versions), publish triggers, timeouts, and environment variables. \GenerativePlugin\ implements the logic to render these settings into valid YAML, including support for job containers, services, and matrix inclusions/exclusions. The codebase also defines the underlying data models (\WorkflowJob\, \WorkflowStep\, \JavaSpec\, \RefPredicate\) and provides built-in actions for setting up Java (including GraalVM), sbt, and handling Windows pagefile fixes.

src/main · high confidence

Behavioural changes

A new symbolic link named 'main' has been created in the project/src directory, pointing to the ../../src/main directory. This change establishes a local reference to the main source code location, likely to simplify path resolution or align with a specific project structure requirement.

project/src · low confidence

Test coverage

Added scripted tests for CI and clean workflow regeneration; Added scripted tests for GitHub workflow OSes clean publish; Added scripted tests for sbt native thin client; Added scripted tests for suppressed Scala version workflow generation; Added test for cross-Scala version stability; Added test for non-existent target handling; Initial unit tests for the workflow generation plugin; Test coverage for preserving action hashes during workflow updates.

Dependencies

Upgrade sbt build tool to version 1.12.2

The project's build definition has been updated to use sbt version 1.12.2, as specified in the newly created \project/project/build.properties\ file. This change also includes structural adjustments to the build project layout, such as adding symlinks for \libraries.sbt\ and \src/main\ to reference files in the parent directory, which supports the untying of the \sbt-github-actions\ cyclical dependency mentioned in the commit history.

project/project · high confidence

Upgrade to sbt 2.0.0 and Scala 2.12.20

The plugin's build has been upgraded to target sbt 2.0.0 for Scala 3 builds and sbt 1.5.5 for Scala 2.12, with the Scala compiler version bumped to 2.12.20. This change also updates the test dependency \specs2-core\ to version 4.20.8 and migrates the organization from \com.codecommit\ to \com.github.sbt\.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 59.

Lenses

  • Code Health 90
  • Architecture 100
  • Maturity 53
  • Readiness 50
  • Security 70

Changes since last survey

  • 300 commits — 279 feature/other, 21 fixes

By area

  • (repo) — 119 commits
  • (root) — 56 commits
  • src/sbt-test — 54 commits
  • src/main — 51 commits
  • .github/workflows — 13 commits
  • project/build.properties — 2 commits
  • src/test — 2 commits
  • dumps/1638295906794 — 1 commit
  • project/plugins.sbt — 1 commit
  • project/project — 1 commit

Notable commits

  • fix: Add a pagefile fix which for windows workflows
  • fix: Fix REPO link
  • fix: Fix example of appending to githubWorkflowPublishTargetBranches
  • fix: Fix missing quotes in the expected output.
  • fix: Fix publishing
  • fix: Fix sbtn scripted test
  • fix: Fixed Java matrix exclusions
  • fix: Fixed graalvm version specs
  • fix: Fixed tests for new Java installation method
  • fix: Merge pull request #107 from hagay3/bugfix/hagai/removeWhitesspaceValidationForParams
  • fix: Merge pull request #146 from mdedetrich/windows-pagefile-fix
  • fix: Merge pull request #177 from mdedetrich/windows-pagefile-disk-root-fix
  • fix: Merge pull request #233 from nafg/fix-sbt2-cross-scala-target-aggregation
  • fix: Merge pull request #42 from matankdr/fix-missing-name
  • fix: Merge pull request #73 from djspiewak/bug/githubWorkflowScalaVersions
  • fix: Merge pull request #92 from djspiewak/bug/graalvm-version-spec
  • fix: Revert default JDK to 8 and GraalVM to 22.3.0
  • fix: Revert sbt-spiewak version bump
  • fix: Windows page file disk root fix
  • fix: fix sbt 2 implementation and scripted tests
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

sbt/sbt-github-actions was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 870ce57c4e8faa1ba9d0acbabbba0a4c6012265b — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.