Skip to content

feat: Dependabot grouping, CodeQL scanning, and dependency review workflows - #137

Merged
adamtasteslikegood merged 4 commits into
mainfrom
copilot/update-dependabot-rules
Mar 28, 2026
Merged

feat: Dependabot grouping, CodeQL scanning, and dependency review workflows#137
adamtasteslikegood merged 4 commits into
mainfrom
copilot/update-dependabot-rules

Conversation

Copilot AI commented Mar 27, 2026

Copy link
Copy Markdown
Contributor

Description

20 open Dependabot PRs were piling up because no grouping was configured — each dependency got its own PR (e.g., 8 separate PRs for @angular/*). Additionally, the CI pipeline lacked security scanning beyond Qodana's code quality checks.

Dependabot optimization (.github/dependabot.yml)

  • 5 npm groups: angular, testing, linting, types, build-tools — collapses ~20 PRs into ~6
  • 1 GitHub Actions group: all action updates in a single PR
  • Ignore tailwindcss major (v4 requires @tailwindcss/postcss migration, breaks postcss.config.js)
  • Commit-message prefixes: ci, build(deps), build(docker)
  • Reduced PR limits: 15/10/5 (was 25/25/25)

New: CodeQL security scanning (.github/workflows/codeql-analysis.yml)

  • JS/TS analysis on push to main, PRs, and weekly schedule
  • security-extended query suite; results in repo Security tab
  • Python backend excluded — lives in separate submodule repo

New: Dependency review (.github/workflows/dependency-review.yml)

  • Fails PRs introducing high/critical vulnerabilities
  • Blocks GPL/AGPL copyleft licenses
  • Comments dependency change summary on PRs

Improved automerge (.github/workflows/dependabot-automerge.yml)

  • Added auto-approve step for patch/minor PRs (previously only enabled automerge but never approved, so PRs requiring review approval would stall)
  • Documented GITHUB_TOKEN limitation vs. branch protection requiring specific reviewers

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Refactoring (no functional changes)
  • Performance improvement
  • CI/CD changes

Testing

No application code changed — all changes are GitHub Actions workflow YAML and Dependabot configuration. Validated with yaml.safe_load() across all 4 files.

  • Tests pass locally (npm run test)
  • Linting passes (npm run lint)
  • Code is formatted (npm run format)
  • Build succeeds (npm run build)
  • Type checking passes (npm run type-check)

Checklist

  • My code follows the project's style guidelines
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published

Screenshots (if applicable)

N/A — CI/CD config changes only.

Additional Notes

After merge, Dependabot will close existing ungrouped PRs and re-open grouped replacements on its next scheduled run (weekly). The 20 open Dependabot PRs should consolidate down to ~6-7.


📱 Kick off Copilot coding agent tasks wherever you are with GitHub Mobile, available on iOS and Android.

Copilot AI and others added 2 commits March 27, 2026 14:42
…rkflows, improve automerge

Agent-Logs-Url: https://github.com/adamtasteslikegood/tasteslikegoodtheangularsvegancookbook/sessions/36083759-c194-4101-bf83-85a13fe170e7

Co-authored-by: adamtasteslikegood <181688233+adamtasteslikegood@users.noreply.github.com>
…cy, GITHUB_TOKEN limitation, Python scope, and Tailwind ignore

Agent-Logs-Url: https://github.com/adamtasteslikegood/tasteslikegoodtheangularsvegancookbook/sessions/36083759-c194-4101-bf83-85a13fe170e7

Co-authored-by: adamtasteslikegood <181688233+adamtasteslikegood@users.noreply.github.com>
Copilot AI changed the title [WIP] Update Dependabot rules for effective PR management feat: Dependabot grouping, CodeQL scanning, and dependency review workflows Mar 27, 2026
@adamtasteslikegood
adamtasteslikegood marked this pull request as ready for review March 28, 2026 13:26
Copilot AI review requested due to automatic review settings March 28, 2026 13:26
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Deprecation Warning: The deny-licenses option is deprecated for possible removal in the next major release. For more information, see issue 997.

Dependency Review

The following issues were found:
  • ✅ 0 vulnerable package(s)
  • ✅ 0 package(s) with incompatible licenses
  • ✅ 0 package(s) with invalid SPDX license definitions
  • ⚠️ 2 package(s) with unknown licenses.
See the Details below.

Snapshot Warnings

⚠️: No snapshots were found for the head SHA 762dac8.
Ensure that dependencies are being submitted on PR branches and consider enabling retry-on-snapshot-warnings. See the documentation for more information and troubleshooting advice.

License Issues

.github/workflows/dependency-review.yml

PackageVersionLicenseIssue Type
actions/checkout6.*.*NullUnknown License
actions/dependency-review-action4.*.*NullUnknown License
Denied Licenses: GPL-2.0-only, GPL-3.0-only, AGPL-3.0-only

OpenSSF Scorecard

PackageVersionScoreDetails
actions/actions/checkout 6.*.* 🟢 6
Details
CheckScoreReason
Code-Review🟢 10all changesets reviewed
Maintained⚠️ 23 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Binary-Artifacts🟢 10no binaries found in the repo
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
License🟢 10license file detected
Fuzzing⚠️ 0project is not fuzzed
Packaging⚠️ -1packaging workflow not detected
Signed-Releases⚠️ -1no releases found
Pinned-Dependencies🟢 3dependency not pinned by hash detected -- score normalized to 3
Security-Policy🟢 9security policy file detected
Branch-Protection🟢 6branch protection is not maximal on development and all release branches
SAST🟢 8SAST tool detected but not run on all commits
actions/actions/dependency-review-action 4.*.* 🟢 7.8
Details
CheckScoreReason
Security-Policy🟢 9security policy file detected
Code-Review🟢 10all changesets reviewed
Binary-Artifacts🟢 10no binaries found in the repo
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Packaging⚠️ -1packaging workflow not detected
Token-Permissions🟢 9detected GitHub workflow tokens with excessive permissions
Maintained🟢 1030 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Pinned-Dependencies⚠️ 1dependency not pinned by hash detected -- score normalized to 1
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection🟢 6branch protection is not maximal on development and all release branches
SAST🟢 10SAST tool is run on all commits

Scanned Files

  • .github/workflows/dependency-review.yml

@adamtasteslikegood
adamtasteslikegood merged commit c2af265 into main Mar 28, 2026
31 of 32 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Qodana for JS

30 new problems were found

Inspection name Severity Problems
ESLint 🔴 Failure 20
Incorrect usage of Angular block 🔴 Failure 1
Unresolved pipe 🔴 Failure 1
Exception used for local control-flow 🔶 Warning 3
Angular CLI add dependency 🔶 Warning 1
Missing await for an async function call ◽️ Notice 2
Result of method call returning a promise is ignored ◽️ Notice 2

☁️ View the detailed Qodana report

Contact Qodana team

Contact us at qodana-support@jetbrains.com

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR improves repo maintenance and security hygiene by reducing Dependabot PR noise through update grouping and adding GitHub-native security checks (dependency review + CodeQL) to the CI/CD surface.

Changes:

  • Add Dependabot update grouping and standardized commit message prefixes for GitHub Actions, npm, and Docker updates.
  • Add a Dependency Review workflow to block vulnerable dependency changes and deny certain licenses.
  • Add a CodeQL workflow for JS/TS scanning and extend Dependabot automerge to auto-approve non-major updates.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
.github/dependabot.yml Adds update groups (Angular/testing/linting/types/build-tools + actions) and adjusts PR limits/commit prefixes.
.github/workflows/codeql-analysis.yml Adds CodeQL scanning for JavaScript/TypeScript on main pushes, PRs, and a weekly schedule.
.github/workflows/dependency-review.yml Adds dependency review gating on PRs (severity threshold + license deny list + PR summary comment).
.github/workflows/dependabot-automerge.yml Adds an approval step for non-major Dependabot PRs before enabling auto-merge.

Comment on lines +36 to +38
gh pr review "$PR_URL" --approve --body "Auto-approved: Dependabot ${{ steps.metadata.outputs.update-type }} update."
env:
PR_URL: ${{ github.event.pull_request.html_url }}

Copilot AI Mar 28, 2026

Copy link

Choose a reason for hiding this comment

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

The auto-approve step is not idempotent: this workflow runs on synchronize and reopened, and gh pr review --approve will fail if the token/user has already submitted an approving review on the PR. That failure would prevent the subsequent auto-merge enable step from running. Consider making this step tolerant (e.g., detect an existing approval from the bot before approving, or allow the command to succeed when already approved).

Suggested change
gh pr review "$PR_URL" --approve --body "Auto-approved: Dependabot ${{ steps.metadata.outputs.update-type }} update."
env:
PR_URL: ${{ github.event.pull_request.html_url }}
set -euo pipefail
# Determine the login for the current token (bot/user running this workflow)
REVIEWER_LOGIN="$(gh api user --jq .login)"
echo "Reviewer login for this token: ${REVIEWER_LOGIN}"
# Check if this reviewer already has an APPROVED review on the PR
existing_review_id="$(
gh api \
"repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}/reviews" \
--paginate \
--jq ".[] | select(.user.login == \"${REVIEWER_LOGIN}\" and .state == \"APPROVED\") | .id" \
| head -n 1 || true
)"
if [ -n "${existing_review_id}" ]; then
echo "An existing APPROVED review from ${REVIEWER_LOGIN} already exists (review id: ${existing_review_id}); skipping new approval."
else
echo "No existing APPROVED review from ${REVIEWER_LOGIN}; submitting approval."
gh pr review "$PR_URL" --approve --body "Auto-approved: Dependabot ${{ steps.metadata.outputs.update-type }} update."
fi
env:
PR_URL: ${{ github.event.pull_request.html_url }}
PR_NUMBER: ${{ github.event.pull_request.number }}

Copilot uses AI. Check for mistakes.
Comment on lines +27 to +28
# Deny copyleft licenses incompatible with the project's proprietary distribution
deny-licenses: GPL-2.0-only, GPL-3.0-only, AGPL-3.0-only

Copilot AI Mar 28, 2026

Copy link

Choose a reason for hiding this comment

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

The PR description says the dependency review workflow “Blocks GPL/AGPL copyleft licenses”, but the deny-licenses list only includes the *-only SPDX identifiers. Licenses like GPL-3.0-or-later / AGPL-3.0-or-later would still be allowed. If the intent is to block all GPL/AGPL variants, include the corresponding *-or-later IDs (and any other copyleft licenses you intend to deny).

Copilot uses AI. Check for mistakes.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 762dac832a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +34 to +36
if: steps.metadata.outputs.update-type != 'version-update:semver-major'
run: |
gh pr review "$PR_URL" --approve --body "Auto-approved: Dependabot ${{ steps.metadata.outputs.update-type }} update."

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Make Dependabot auto-approval non-blocking

This new approval step can fail in common repo configurations (for example when the repository setting that allows GitHub Actions to approve PRs is not enabled), and when it fails the job stops before Enable auto-merge (squash) runs. That turns patch/minor Dependabot updates into manual merges, which is a regression from the previous workflow behavior that at least attempted auto-merge. Please guard this command or make approval failure non-fatal so auto-merge still gets enabled when possible.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants