docs(registry/coder/modules/jfrog-oauth): clarify JFrog SaaS and self-hosted OAuth setup - #1040
Merged
Conversation
…-hosted OAuth setup
Contributor
Module Scorecard Check
|
| Theme | Before | After |
|---|---|---|
| Presentation & Onboarding | 21 / 25 | 17 / 25 |
| Integration | — | — |
| Credential Hygiene | 18 / 20 | 20 / 20 |
| Restricted-Environment | 2 / 20 | 17 / 20 |
| Engineering Quality | 10 / 10 | 10 / 10 |
| Overall | 68 / 100 | 85 / 100 |
Full scorecard for this PR
| Presentation & Onboarding | Credential Hygiene | Restricted-Environment Readiness | Engineering Quality | Overall |
|---|---|---|---|---|
| 17 / 25 | 20 / 20 | 17 / 20 | 10 / 10 | 85 / 100 |
Drilldown
Presentation & Onboarding — 17 / 25
| Criterion | Max | Score | Notes |
|---|---|---|---|
| Configuration-mode examples | 12 | 12 | Multiple documented examples covering npm, pypi, go, docker, conda, maven package managers; code-server integration example; using access token in other resources. Each major mode (different package manager combinations) has sensible defaults. |
| Coder-context framing | 8 | 5 | README explains OAuth flow via Coder external-auth and mentions JFrog CLI installation, but lacks clarity on where Coder fits in the overall workflow. The integration setup is documented but the value-add over direct JFrog usage is not clearly articulated. |
| Visual preview | 5 | 0 | README references  but the actual image file is not included in the module files provided. |
Credential Hygiene — 20 / 20
| Criterion | Max | Score | Notes |
|---|---|---|---|
| Secrets marked sensitive | 16 | 16 | access_token output is marked sensitive = true. README examples use OAuth flow via external-auth; no inline secrets in examples. All credential handling goes through data.coder_external_auth.jfrog.access_token. |
| Non-hardcoded auth path | 4 | 4 | Uses Coder external-auth OAuth flow. README documents complete setup with JFrog application integration and Coder external auth provider. No API keys pasted into templates. |
Restricted-Environment Readiness — 17 / 20
| Criterion | Max | Score | Notes |
|---|---|---|---|
| Mirrorable artifact source | 10 | 0 | The JFrog CLI is downloaded from hardcoded https://install-cli.jfrog.io in run.sh with no module variable to override this URL. The module only allows skipping the download if jf is already installed, which is bring-your-own binary, not mirrorable source. |
| Bring-your-own binary | 5 | 5 | Documented in "Offline and air-gapped environments" section: "If jf is already on the PATH (for example, baked into your workspace image), the module detects it and skips the download." Script checks command -v jf before installing. |
| Egress transparency | 3 | 3 | Dedicated "External endpoints" section enumerates: https://install-cli.jfrog.io (conditional on CLI not installed) and the user's jfrog_url. Clear notes for restricted environments. |
| Runs without sudo | 2 | 0 | run.sh line 30: `curl -fL https://install-cli.jfrog.io |
Engineering Quality — 10 / 10
| Criterion | Max | Score | Notes |
|---|---|---|---|
| Input quality | 6 | 6 | All inputs have clear descriptions. jfrog_url has regex validation for http/https. username_field has validation for email/username. package_managers has detailed description with examples. Sensible defaults: username_field = "username", external_auth_id = "jfrog", configure_code_server = false, jfrog_server_id = "0". |
| Test coverage | 4 | 4 | Comprehensive .tftest.hcl with 11 test runs covering: required vars, empty/valid access tokens, URL validation, username_field validation, each package manager (npm, go, pypi, docker, conda, maven), code-server configuration, and GOPROXY env. Tests use override_data for external auth mocking and verify script content with assertions. |
Overall — 85 / 100
Raw 64 / 75 → round(64 / 75 × 100) = 85
Track: Utility (auth/integration helper module)
Normalized from 75-point denominator (Utility modules skip track section).
Scored against SCORECARD.md with claude-sonnet-4-5. Language-model scores are advisory.
matifali
marked this pull request as draft
August 7, 2026 11:23
…lications UI path
matifali
marked this pull request as ready for review
August 10, 2026 20:21
Member
Author
|
Addressed the valid scorecard items in d48fde3 (README-scoped):
Not addressed here (out of scope for a README change, tracking as follow-ups):
|
matifali
added a commit
to coder/coder
that referenced
this pull request
Aug 10, 2026
## Summary Refreshes the JFrog Artifactory integration guide to cover JFrog SaaS. The JFrog-OAuth section previously implied the module was self-hosted only and mixed the SaaS and self-hosted setup into one ambiguous step. ## Changes - **JFrog-OAuth**: State the module works with both JFrog SaaS and self-hosted (on-premises) Artifactory. - **JFrog-OAuth**: Split setup into a SaaS UI flow (**External Applications** > **Custom Integration**) and a self-hosted Helm integration-template flow. - **JFrog-OAuth**: Update the module example to `registry.coder.com/coder/jfrog-oauth/coder`, `1.2.4`. - **JFrog-Token**: Update the stale example to `registry.coder.com/coder/jfrog-token/coder`, `1.2.2`. ## Validation - `markdownlint-cli2` passes on the file. - No emdash/endash. Preview: https://coder.com/docs/@matifali/jfrog-oauth-docs-saas/admin/integrations/jfrog-artifactory#jfrog-oauth Related to the registry README refresh in coder/registry#1040. 🤖 Generated with [Claude Code](https://claude.ai/code) > 🤖 This PR was created with the help of Coder Agents, and needs a human review. 🧑💻
DevelopmentCats
approved these changes
Aug 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The JFrog OAuth module README said it was only "usable by JFrog self-hosted (on-premises) Artifactory," which gave mixed signals. The module also works with JFrog SaaS, and a customer asked for clearer setup instructions since they only have a production SaaS instance to test against.
Fix
Custom Integrationpath, redirect URI, scope, and theCODER_EXTERNAL_AUTH_*configuration.docs/v2/latestlinks to current paths.No version bump: documentation-only change per the registry versioning guidelines.
Note
The same misleading sentence also exists in the Coder docs guide (
docs/admin/integrations/jfrog-artifactory.mdincoder/coder). This PR fixes only the registry module README per REG-73. A follow-up againstcoder/coderwill fix the guide.Closes REG-73
🤖 Generated with Claude Code