Skip to content

Develop#166

Merged
bedatty merged 8 commits intomainfrom
develop
Mar 24, 2026
Merged

Develop#166
bedatty merged 8 commits intomainfrom
develop

Conversation

@bedatty
Copy link
Contributor

@bedatty bedatty commented Mar 24, 2026

Lerian

GitHub Actions Shared Workflows


Description

Type of Change

  • feat: New workflow or new input/output/step in an existing workflow
  • fix: Bug fix in a workflow (incorrect behavior, broken step, wrong condition)
  • perf: Performance improvement (e.g. caching, parallelism, reduced steps)
  • refactor: Internal restructuring with no behavior change
  • docs: Documentation only (README, docs/, inline comments)
  • ci: Changes to self-CI (workflows under .github/workflows/ that run on this repo)
  • chore: Dependency bumps, config updates, maintenance
  • test: Adding or updating tests
  • BREAKING CHANGE: Callers must update their configuration after this PR

Breaking Changes

None.

Testing

  • YAML syntax validated locally
  • Triggered a real workflow run on a caller repository using @develop or the beta tag
  • Verified all existing inputs still work with default values
  • Confirmed no secrets or tokens are printed in logs
  • Checked that unrelated workflows are not affected

Caller repo / workflow run:

Related Issues

Closes #

Summary by CodeRabbit

Release Notes

  • New Features

    • Added CodeQL-based security analysis for GitHub Actions with automated pull request vulnerability reporting.
  • Chores

    • Pinned shared workflow action versions to specific releases for improved consistency and stability.
    • Updated GitHub Actions runner dependencies to latest compatible versions.
    • Enhanced workflow error handling and robustness across CI/CD pipelines.

dependabot bot and others added 8 commits March 20, 2026 17:59
Bumps the aws group with 1 update: [aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials).


Updates `aws-actions/configure-aws-credentials` from 4 to 6
- [Release notes](https://github.com/aws-actions/configure-aws-credentials/releases)
- [Changelog](https://github.com/aws-actions/configure-aws-credentials/blob/main/CHANGELOG.md)
- [Commits](aws-actions/configure-aws-credentials@v4...v6)

---
updated-dependencies:
- dependency-name: aws-actions/configure-aws-credentials
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: aws
...

Signed-off-by: dependabot[bot] <support@github.com>
…evelop/aws-e11c4ba6fd

chore(deps): bump aws-actions/configure-aws-credentials from 4 to 6 in the aws group
… in READMEs (#160)

* chore(refs): pin all @develop refs to v1.18.0 in workflows and v1.x.x in README examples

* fix(lint): quote GITHUB_OUTPUT in release-notification SC2086
Bumps the security-scanners group with 1 update: [securego/gosec](https://github.com/securego/gosec).


Updates `securego/gosec` from 2.24.7 to 2.25.0
- [Release notes](https://github.com/securego/gosec/releases)
- [Commits](securego/gosec@v2.24.7...v2.25.0)

---
updated-dependencies:
- dependency-name: securego/gosec
  dependency-version: 2.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: security-scanners
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…141)

Bumps the go-tooling group with 1 update: [fgrosse/go-coverage-report](https://github.com/fgrosse/go-coverage-report).


Updates `fgrosse/go-coverage-report` from 1.2.0 to 1.3.0
- [Release notes](https://github.com/fgrosse/go-coverage-report/releases)
- [Changelog](https://github.com/fgrosse/go-coverage-report/blob/main/CHANGELOG.md)
- [Commits](fgrosse/go-coverage-report@v1.2.0...v1.3.0)

---
updated-dependencies:
- dependency-name: fgrosse/go-coverage-report
  dependency-version: 1.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-tooling
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…oup (#163)

Bumps the actions-core group with 1 update: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 4 to 6
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions-core
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…scan (#162)

* ci(codeql): add CodeQL analysis workflow for this repository

* ci(codeql): extract CodeQL steps into composites and improve workflow

Extract init and analyze steps into reusable composite actions under
src/security/. Remove schedule trigger (moving to future schedule-job),
remove unnecessary matrix strategy, and add YAML path filters.

New composites:
- src/security/codeql-init — initializes CodeQL with security-extended suite
- src/security/codeql-analyze — performs analysis and uploads SARIF results

* refactor(codeql): use changed-workflows composite and remove push trigger

Reuse existing changed-workflows composite for file detection instead of
inline git diff. CodeQL analysis now only runs when action/workflow YAML
files are changed in PRs. Full repo scan will move to a future schedule-job.

* docs(codeql-analyze): add actions:read to permissions section

Align codeql-analyze README permissions with codeql-init for
consistency, since both composites are used together.

* docs(codeql): document wrapped upstream actions in READMEs

Add references to github/codeql-action/init and github/codeql-action/analyze
in composite README descriptions for transparency.

* feat(security): add CodeQL to pr-security-scan and consolidate self-codeql into self-pr-validation

Add CodeQL as optional feature in pr-security-scan.yml with new inputs
(enable_codeql, codeql_languages, codeql_queries). Create codeql-reporter
composite that reads SARIF and posts findings as PR comments.

Remove standalone self-codeql.yml and move CodeQL analysis into
self-pr-validation.yml as a job alongside existing linters.

* refactor(security): extract CodeQL config generation into codeql-config composite

Create src/security/codeql-config composite that generates a dynamic
CodeQL configuration scoped to changed paths. Supports both file lists
(extracts parent dirs) and directory lists (uses as-is).

Update self-pr-validation.yml and pr-security-scan.yml to use the new
composite instead of inline shell scripts.

* fix(security): address code injection risks and improve robustness

Move ${{ }} interpolations to env: blocks in pr-security-scan.yml and
codeql-config composite to prevent shell injection. Fix path-mode
detection in pr-security-scan to correctly switch between dirs/files
mode based on actual fallback behavior. Remove overly broad permissions
from self-pr-validation.yml workflow level. Add SARIF availability
detection in codeql-reporter to avoid false negatives.

* fix(codeql-reporter): mark SARIF unavailable on parse errors and move outputs to env

Set sarifAvailable = false when SARIF parsing fails to prevent false
negatives. Move step output interpolations to env: blocks for
consistency with the injection prevention pattern.

* fix(codeql-reporter): separate parse errors from SARIF unavailability

Track parse errors independently so a corrupt SARIF file does not
suppress findings from other valid SARIF files. Only show the
unavailable warning when no SARIF directory or files exist at all.

* revert(pr-security-scan): remove CodeQL changes from reusable workflow

Remove CodeQL integration from pr-security-scan.yml — will be added
in a separate PR with proper planning for external consumers.

* fix(codeql-config): use exact file paths instead of parent directories

The dirname extraction was causing CodeQL to scan entire directories
(e.g., all of .github/workflows/) instead of only the changed files.
Now uses exact file paths in the config, ensuring CodeQL only analyzes
the specific files that were modified in the PR.

* fix(codeql-reporter): add PR filter to security tab link

Pre-filter the Security tab URL with pr:<number>+is:open so the link
opens directly to the findings for the current PR.

* fix(security): warn on partial parse errors and remove dead path-mode input

Add warning in codeql-reporter when findings exist but some SARIF files
failed to parse. Remove unused path-mode input and PATH_MODE env var
from codeql-config (became dead code after dirname removal).
…es (#165)

* feat(build): add build_context_from_working_dir input for independent modules

Adds a new boolean input to build.yml and pr-security-scan.yml that uses
the component working_dir as Docker build context instead of the repo root.
This enables building tools/services with their own go.mod without
conflicting with the main project dependencies.

* fix(gitops): change enable_docker_login default to false

GitOps updates only modify YAML files in the gitops repo and do not
pull or push Docker images. Docker login is unnecessary by default
and can be explicitly enabled when needed.

* fix(gitops): remove trailing spaces and add cd guard for shellcheck

Fix pre-existing lint issues:
- Remove trailing whitespace from 17 lines
- Add || exit 1 to cd commands (SC2164)
@bedatty bedatty self-assigned this Mar 24, 2026
@bedatty bedatty requested a review from a team as a code owner March 24, 2026 21:42
@coderabbitai
Copy link

coderabbitai bot commented Mar 24, 2026

Caution

Review failed

Pull request was closed or merged during review

Walkthrough

This PR pins shared GitHub Actions references from the develop branch to specific version tag v1.18.0 across multiple workflows, adds new CodeQL composite actions (codeql-init, codeql-analyze, codeql-config, codeql-reporter), introduces a CodeQL job to self-pr-validation, updates action versions (go-coverage-report, gosec, actions/checkout, aws-actions/configure-aws-credentials), modifies workflow input defaults and error handling, and updates corresponding README documentation.

Changes

Cohort / File(s) Summary
Shared Action Version Pinning (v1.18.0)
.github/workflows/branch-cleanup.yml, .github/workflows/build.yml, .github/workflows/gptchangelog.yml, .github/workflows/labels-sync.yml, .github/workflows/pr-security-scan.yml, .github/workflows/release.yml, .github/workflows/typescript-build.yml, .github/workflows/typescript-release.yml
Pinned reusable action references for changed-paths, branch-cleanup, labels-sync, and related actions from @develop to @v1.18.0.
New CodeQL Composite Actions
src/security/codeql-init/action.yml, src/security/codeql-analyze/action.yml, src/security/codeql-config/action.yml, src/security/codeql-reporter/action.yml, src/security/codeql-*/README.md
Added four new composite GitHub Actions for CodeQL workflows: codeql-init (wraps init action), codeql-analyze (wraps analyze action), codeql-config (generates dynamic PR-scoped config with path filtering), and codeql-reporter (parses SARIF, posts formatted PR comment, supports fail-on-findings gate). Config and reporter actions contain complex path normalization and SARIF parsing logic.
CodeQL Job Addition
.github/workflows/self-pr-validation.yml
Added new codeql job that runs CodeQL analysis on changed GitHub Actions files, conditionally initializes CodeQL based on changed paths, and posts results to PR. Runs on blacksmith-4vcpu-ubuntu-2404.
Build Context Input Additions
.github/workflows/build.yml, .github/workflows/pr-security-scan.yml
Added new boolean workflow input build_context_from_working_dir (default false) to conditionally switch Docker build context from inputs.build_context to matrix.app.working_dir or matrix.working_dir.
Workflow Security Scan Pinning
.github/workflows/pr-security-scan.yml
Pinned six reusable action references to @v1.18.0: changed-paths, trivy-fs-scan, trivy-image-scan, dockerfile-checks, pr-security-reporter, slack-notify.
Action Version Bumps
.github/workflows/go-ci.yml, .github/workflows/go-pr-analysis.yml, .github/workflows/s3-upload.yml
Updated action versions: fgrosse/go-coverage-report (v1.2.0v1.3.0), securego/gosec (v2.24.7v2.25.0), actions/checkout (v4v6), aws-actions/configure-aws-credentials (v4v6).
Workflow Logic Updates
.github/workflows/gitops-update.yml, .github/workflows/release-notification.yml
Changed enable_docker_login default from true to false in gitops-update; added explicit || exit 1 error handling for directory changes; fixed output path quoting in release-notification with "$GITHUB_OUTPUT".
Action Documentation
src/lint/.../README.md, src/notify/.../README.md, src/security/.../README.md
Updated usage examples in README files to reference versioned tags (@v1.x.x) instead of @develop branch for composite actions: composite-schema, readme-check, shellcheck, discord-release, pr-lint-reporter, slack-notify, slack-release, dockerfile-checks, pr-security-reporter, trivy-fs-scan, trivy-image-scan.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

workflow, security, dependencies, size/XL

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description has checkboxes marked for 'feat' and 'fix' but lacks substantive detail about what was changed, why, or which workflows are affected. Testing checklist items are unchecked with no validation evidence provided. Fill in the Description section with specific details on workflow changes, list affected workflows, explain the rationale for version pinning and CodeQL additions, and provide evidence of testing (validation runs or YAML checks).
Title check ❓ Inconclusive The PR title 'Develop' is vague and generic, providing no meaningful information about the changeset's primary objective. Use a descriptive title that summarizes the main change, such as 'Pin shared workflow versions to v1.18.0 and add CodeQL support' or 'Update workflow action versions and add CodeQL composites'.
✅ Passed checks (1 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

Comment @coderabbitai help to get the list of available commands and usage tips.

@lerian-studio lerian-studio added the size/L PR changes 500–999 lines label Mar 24, 2026
@github-actions github-actions bot added workflow Changes to one or more reusable workflow files typescript Changes to TypeScript or Frontend workflows security Changes to security workflows or vulnerability reporting policy golang Changes to Go-related workflows and removed size/L PR changes 500–999 lines labels Mar 24, 2026
@lerian-studio
Copy link

🔍 Lint Analysis

Check Files Scanned Status
YAML Lint 18 file(s) ❌ failure
Action Lint 14 file(s) ❌ failure
Pinned Actions 18 file(s) ✅ success
Markdown Link Check 15 file(s) ✅ success
Spelling Check 33 file(s) ✅ success
Shell Check 18 file(s) ❌ failure
README Check 18 file(s) ✅ success
Composite Schema 4 file(s) ✅ success
❌ Failures (3)

YAML Lint

.github

  • .github (line 87) — Process completed with exit code 1.

Action Lint

.github/workflows/go-pr-analysis.yml

  • .github/workflows/go-pr-analysis.yml (line 258) — shellcheck reported issue in this script: SC2086:info:4:29: Double quote to prevent globbing and word splitting
  • .github/workflows/go-pr-analysis.yml (line 258) — shellcheck reported issue in this script: SC2086:info:11:28: Double quote to prevent globbing and word splitting
  • .github/workflows/go-pr-analysis.yml (line 251) — shellcheck reported issue in this script: SC2086:info:2:32: Double quote to prevent globbing and word splitting
  • .github/workflows/go-pr-analysis.yml (line 251) — shellcheck reported issue in this script: SC2046:warning:1:101: Quote this to prevent word splitting
  • .github/workflows/go-pr-analysis.yml (line 112) — shellcheck reported issue in this script: SC2181:style:9:9: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?
  • .github/workflows/go-pr-analysis.yml (line 112) — shellcheck reported issue in this script: SC2086:info:10:34: Double quote to prevent globbing and word splitting

.github/workflows/go-ci.yml

  • .github/workflows/go-ci.yml (line 171) — shellcheck reported issue in this script: SC2162:info:13:39: read without -r will mangle backslashes
  • .github/workflows/go-ci.yml (line 171) — shellcheck reported issue in this script: SC2086:info:23:43: Double quote to prevent globbing and word splitting
  • .github/workflows/go-ci.yml (line 171) — shellcheck reported issue in this script: SC2086:info:15:15: Double quote to prevent globbing and word splitting
  • .github/workflows/go-ci.yml (line 171) — shellcheck reported issue in this script: SC2086:info:14:13: Double quote to prevent globbing and word splitting

Shell Check

.github

  • .github (line 148) — Process completed with exit code 1.
  • .github (line 147) — Found 1 shellcheck error(s) in run: blocks.

🔍 View full scan logs

Copy link

@github-advanced-security github-advanced-security bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

@lerian-studio
Copy link

🛡️ CodeQL Analysis Results

Languages analyzed: actions

Found 44 issue(s): 44 Medium

Severity Rule File Message
🟡 Medium actions/missing-workflow-permissions .github/workflows/release-notification.yml:110 Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. C...
🟡 Medium actions/unpinned-tag .github/workflows/branch-cleanup.yml:54 Unpinned 3rd party Action 'Branch Cleanup' step Uses Step uses 'LerianSt...
🟡 Medium actions/unpinned-tag .github/workflows/go-ci.yml:129 Unpinned 3rd party Action 'Go CI' step Uses Step uses 'fgrosse/go-covera...
🟡 Medium actions/unpinned-tag .github/workflows/gitops-update.yml:78 Unpinned 3rd party Action 'GitOps Update' step Uses Step uses 'docker/lo...
🟡 Medium actions/unpinned-tag .github/workflows/go-ci.yml:149 Unpinned 3rd party Action 'Go CI' step Uses Step uses 'golangci/golangci...
🟡 Medium actions/unpinned-tag .github/workflows/go-ci.yml:268 Unpinned 3rd party Action 'Go CI' step Uses Step uses 'tcort/github-acti...
🟡 Medium actions/unpinned-tag .github/workflows/go-pr-analysis.yml:336 Unpinned 3rd party Action 'Go PR Analysis' step Uses Step: gosec-sarif u...
🟡 Medium actions/unpinned-tag .github/workflows/gitops-update.yml:421 Unpinned 3rd party Action 'GitOps Update' step Uses Step uses 'crazy-max...
🟡 Medium actions/unpinned-tag .github/workflows/gitops-update.yml:461 Unpinned 3rd party Action 'GitOps Update' step Uses Step uses 'LerianStu...
🟡 Medium actions/unpinned-tag .github/workflows/build.yml:146 Unpinned 3rd party Action 'Build and Push Docker Images' step [Uses Step: cha...
🟡 Medium actions/unpinned-tag .github/workflows/build.yml:213 Unpinned 3rd party Action 'Build and Push Docker Images' step Uses Step ...
🟡 Medium actions/unpinned-tag .github/workflows/build.yml:216 Unpinned 3rd party Action 'Build and Push Docker Images' step Uses Step ...
🟡 Medium actions/unpinned-tag .github/workflows/build.yml:220 Unpinned 3rd party Action 'Build and Push Docker Images' step Uses Step ...
🟡 Medium actions/unpinned-tag .github/workflows/labels-sync.yml:47 Unpinned 3rd party Action 'Sync Labels' step Uses Step uses 'LerianStudi...
🟡 Medium actions/unpinned-tag .github/workflows/pr-security-scan.yml:89 Unpinned 3rd party Action 'PR Security Scan' step Uses Step uses 'docker...
🟡 Medium actions/unpinned-tag .github/workflows/pr-security-scan.yml:98 Unpinned 3rd party Action 'PR Security Scan' step [Uses Step: changed-paths](...
🟡 Medium actions/unpinned-tag .github/workflows/build.yml:227 Unpinned 3rd party Action 'Build and Push Docker Images' step Uses Step ...
🟡 Medium actions/unpinned-tag .github/workflows/build.yml:277 Unpinned 3rd party Action 'Build and Push Docker Images' step [Uses Step: met...
🟡 Medium actions/unpinned-tag .github/workflows/build.yml:286 Unpinned 3rd party Action 'Build and Push Docker Images' step Uses Step ...
🟡 Medium actions/unpinned-tag .github/workflows/pr-security-scan.yml:131 Unpinned 3rd party Action 'PR Security Scan' step Uses Step uses 'docker...
🟡 Medium actions/unpinned-tag .github/workflows/pr-security-scan.yml:142 Unpinned 3rd party Action 'PR Security Scan' step Uses Step uses 'docker...
🟡 Medium actions/unpinned-tag .github/workflows/pr-security-scan.yml:148 Unpinned 3rd party Action 'PR Security Scan' step Uses Step: fs-scan use...
🟡 Medium actions/unpinned-tag .github/workflows/pr-security-scan.yml:156 Unpinned 3rd party Action 'PR Security Scan' step Uses Step uses 'docker...
🟡 Medium actions/unpinned-tag .github/workflows/pr-security-scan.yml:172 Unpinned 3rd party Action 'PR Security Scan' step Uses Step: image-scan ...
🟡 Medium actions/unpinned-tag .github/workflows/pr-security-scan.yml:182 Unpinned 3rd party Action 'PR Security Scan' step [Uses Step: dockerfile-chec...
🟡 Medium actions/unpinned-tag .github/workflows/pr-security-scan.yml:190 Unpinned 3rd party Action 'PR Security Scan' step [Uses Step: post-results](1...
🟡 Medium actions/unpinned-tag .github/workflows/pr-security-scan.yml:222 Unpinned 3rd party Action 'PR Security Scan' step Uses Step uses 'Lerian...
🟡 Medium actions/unpinned-tag .github/workflows/release.yml:63 Unpinned 3rd party Action 'Release Workflow' step [Uses Step: changed-paths](...
🟡 Medium actions/unpinned-tag .github/workflows/release.yml:124 Unpinned 3rd party Action 'Release Workflow' step Uses Step: import_gpg ...
🟡 Medium actions/unpinned-tag .github/workflows/release.yml:151 Unpinned 3rd party Action 'Release Workflow' step Uses Step: semantic us...

... and 14 more findings.


🔍 View full scan logs | 🛡️ Security tab

@bedatty bedatty merged commit 971f78d into main Mar 24, 2026
22 of 27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

golang Changes to Go-related workflows security Changes to security workflows or vulnerability reporting policy typescript Changes to TypeScript or Frontend workflows workflow Changes to one or more reusable workflow files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants