Skip to content

ci: add build-sign job to CircleCI CICD workflow [IDE-2483] - #460

Merged
rrama merged 4 commits into
mainfrom
ci/IDE-2483_add-build-sign-job
Oct 12, 2026
Merged

rrama merged 4 commits into
mainfrom
ci/IDE-2483_add-build-sign-job

Conversation

@rrama

@rrama rrama commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

Description

Milestone 1 of migrating snyk-eclipse-plugin's S3 publishing off static AWS keys onto CircleCI OIDC (IDE-2483).

Adds a build-sign CircleCI job that decodes the KEYSTORE/KEYSTORE_SHA secrets, verifies the checksum, and runs ./mvnw clean verify -P sign (confirmed green) — proving the Maven signing profile works with the keystore secrets copied from GitHub Actions into CircleCI. Each of KEYSTORE, KEYSTORE_SHA, KEYSTORE_PASS fails the step loudly if unset or empty, rather than surfacing as a confusing jarsigner error later.

build-sign only runs on main, gated behind a manual approval step (Approve signing job). The CircleCI context holding the signing secrets is restricted, so without an approval gate, any contributor's merge to main would trigger a job that uses those secrets unattended. The gate lets code still build and test normally for every contributor, but requires an explicit approval before the signing step itself runs.

Out of scope for this PR (tracked as later milestones on IDE-2483): S3 publish itself, the aws-cli OIDC orb, and removing the GitHub Actions publish steps.

Checklist

  • Read and understood the Code of Conduct and Contributing Guidelines.
  • Tests added and all succeed — N/A, CI-config-only change; the new job itself is the verification
  • Linted
  • CHANGELOG.md updated
  • README.md updated, if user-facing

Screenshots / GIFs

N/A — CI config change.

PR Stack — Merge Order

flowchart LR
    main(["main"])
    PR1["#460 build-sign ← YOU ARE HERE\nCircleCI signing"]
    PR2["#462 publish-preview\nCircleCI OIDC publish"]
    PR3["#463 stable-release scaffold\nworkflow + build-sign-stable"]
    PR4["#468 publish-stable\nOIDC publish, DO NOT MERGE yet"]
    PR5["#465 remove legacy workflow\nDO NOT MERGE yet"]
    main --> PR1 --> PR2 --> PR3 --> PR4 --> PR5
    style PR1 fill:#ffd700,color:#000
Loading

🤖 Generated with Claude Code


Note

Low Risk
CI and workflow-only change; signing secrets are gated behind manual approval on main with no application or runtime behavior changes.

Overview
Adds a build-sign CircleCI job (main only) that decodes and checksum-validates signing keystore secrets, then runs ./mvnw clean verify -P sign using the restricted snyk-eclipse-plugin-signing context. Secret env vars (KEYSTORE, KEYSTORE_SHA, KEYSTORE_PASS) are checked up front so missing values fail clearly instead of deep in jarsigner.

The CICD workflow now includes a manual Approve signing job approval step before build-sign, so merges to main still run the existing test jobs for everyone, but using signing credentials requires an explicit approver. This is the first CI milestone toward moving Eclipse plugin publishing off static AWS keys (S3/OIDC work is later).

Reviewed by Cursor Bugbot for commit 88f538c. Bugbot is set up for automated code reviews on this repo. Configure here.

@snyk-io

snyk-io Bot commented Sep 14, 2026 •

Copy link
Copy Markdown

✅ Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
✅ Open Source Security 0 0 0 0 0 issues
✅ Licenses 0 0 0 0 0 issues
✅ Code Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@rrama
rrama marked this pull request as ready for review September 14, 2026 16:00
@rrama
rrama requested a review from a team as a code owner September 14, 2026 16:00
@snyk-pr-review-bot

This comment has been minimized.

rrama and others added 3 commits September 30, 2026 15:17
Milestone 1 of migrating S3 publishing off static AWS keys onto CircleCI
OIDC (IDE-2483). Adds a Linux job that mirrors GH Actions' decode-keystore
step and runs `./mvnw clean verify -P sign`, so that once KEYSTORE,
KEYSTORE_SHA and KEYSTORE_PASS are populated in CircleCI, we can confirm
the signing plumbing works before adding the OIDC-authenticated S3
publish in a follow-up PR.

Each of KEYSTORE, KEYSTORE_SHA and KEYSTORE_PASS fails the step loudly if
unset or empty, instead of surfacing as a confusing jarsigner error later.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…n IDE-2483

Adds a type: approval job (Approve signing job) in front of build-sign
and restricts both to main only. Follows ProdSec's documented pattern
for restricted-context jobs (PRODSEC-10865): merging to main still
builds/tests as before, but the signing context is only touched once a
Team IDE member approves the job. Without this, any contributor's
merge to main could trigger the real signing secrets unapproved.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Needed to ensure permissions change the the approver's for the snyk-eclipse-plugin-signing context.
@rrama
rrama force-pushed the ci/IDE-2483_add-build-sign-job branch from f484afa to 51218bd Compare September 30, 2026 14:21
@rrama
rrama requested a review from a team as a code owner September 30, 2026 14:21
@snyk-pr-review-bot

This comment has been minimized.

@nick-y-snyk nick-y-snyk 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.

Looks good. The up-front variable checks and the checksum verification make failures easy to read, and keystore.jks stays out of the workspace.

Nit: the KEYSTORE_PASS check runs after the keystore is decoded. Moving it up next to the other two means a missing password fails before any work happens.

@rrama

rrama commented Oct 2, 2026

Copy link
Copy Markdown
Contributor Author

Nit: the KEYSTORE_PASS check runs after the keystore is decoded. Moving it up next to the other two means a missing password fails before any work happens.

I'd argue it's cleaner to have it right next to the use and the work done isn't real costly work anyway.

@snyk-io

snyk-io Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

✅ Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
✅ Open Source Security 0 0 0 0 0 issues
✅ Licenses 0 0 0 0 0 issues
✅ Code Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@snyk-pr-review-bot

Copy link
Copy Markdown

PR Reviewer Guide 🔍

🧪 PR contains tests
🔒 No security concerns identified
⚡ No major issues detected
📚 Repository Context Analyzed

This review considered 2 relevant code sections from 2 files (average relevance: 0.76)

🤖 Repository instructions applied (from AGENTS.md)

@rrama
rrama merged commit a2d04f8 into main Oct 12, 2026
12 checks passed
@rrama
rrama deleted the ci/IDE-2483_add-build-sign-job branch October 12, 2026 13:33
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