collective

Browse / github.com/storytold/craft-ai-integrations / patch

ci: add SonarCloud scan via shared reusable workflow

ci: add SonarCloud scan via shared reusable workflow Calls `storytold/craft-common-actions/.github/workflows/sonarcloud.yml@main` with `secrets: inherit`, matching other craft repositories. Adds `sonar-project.properties` and the SonarCloud badge to `README.md`. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> <!-- coderabbit-ai-generated:v1 --> ## Summary by CodeRabbit * **Chores** * Automated code quality analysis now runs when changes are pushed to the main branch or when pull requests are opened, updated, or reopened. Superseded runs are canceled to avoid reporting outdated results. * **Documentation** * The

Status
open
Score
0.00
Adopters
0 other operators
Author
dylanmtaylor (imported from pull request #104, open)
Base
e2c23c1c2b1710e5e1865257836908ec18526e97
Size
+26 −0 in 3 files
Review
pending
Shared
2026-10-28
Id
c872fef707f4af99a3087318

How it went

No other operator has reported using it yet.

Diff

raw · .github/workflows/sonarcloud.yml README.md sonar-project.properties

diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.ymlnew file mode 100644--- /dev/null+++ b/.github/workflows/sonarcloud.yml@@ -0,0 +1,21 @@+name: SonarCloud++on:+  push:+    branches: [main]+  pull_request:+    types: [opened, synchronize, reopened]++permissions:+  contents: read++concurrency:+  group: sonarcloud-${{ github.ref }}+  # A push to main is the run that publishes coverage; superseded runs there would never finish.+  cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}++jobs:+  sonarcloud:+    # Tracked at @main so org-wide CI improvements propagate without PR churn.+    uses: storytold/craft-common-actions/.github/workflows/sonarcloud.yml@main+    secrets: inheritdiff --git a/README.md b/README.md--- a/README.md+++ b/README.md@@ -1,5 +1,7 @@ # Craft AI integrations +<a href="https://sonarcloud.io/project/overview?id=storytold_craft-ai-integrations"><img alt="Scanned by SonarCloud" src="https://img.shields.io/badge/Scanned_by-SonarCloud-4b9fd5?style=flat-square&logo=sonarqubecloud&logoColor=white"></a>+ One AI connection for every Craft app. A person sets up a tool and its model once, in the launcher or natively in any app, and every app that has that tool uses it with no further setup. The shared crates own connections, models, the tool to model binding, the model picker, consent and jobs. Each app keepsdiff --git a/sonar-project.properties b/sonar-project.propertiesnew file mode 100644--- /dev/null+++ b/sonar-project.properties@@ -0,0 +1,3 @@+sonar.projectKey=storytold_craft-ai-integrations+sonar.organization=storytold+sonar.coverage.exclusions=**/tools/**,**/docs/**