- Notifications
You must be signed in to change notification settings - Fork928
docs: simplify JFrog integration docs#11787
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Merged
Uh oh!
There was an error while loading.Please reload this page.
Merged
Changes fromall commits
Commits
Show all changes
17 commits Select commitHold shift + click to select a range
f7f28c7
Update jfrog.md
matifali5a7e7b8
formatting and typos
matifali4bd4ff0
move to guides
matifali4a86f6d
review comments
matifalib2d99a9
Update jfrog.md
matifali80d94a9
add configure-code-server
matifali0745274
add manifest and rename
matifalic36c574
update
matifali7b32f44
`fmt`
matifali03b3fd2
rename
matifali3fe5896
reorganize
matifalib77b494
fixup!
matifali94f8b6f
refactor
matifalibc1672e
Update JFrog integration instructions
matifali5c7ef15
fmt
matifali2e143d9
Update Artifactory integration instructions
matifali3b5bc0a
fmt
matifaliFile filter
Filter by extension
Conversations
Failed to load comments.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Jump to file
Failed to load files.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
176 changes: 176 additions & 0 deletionsdocs/guides/artifactory-integration.md
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,176 @@ | ||
# JFrog Artifactory Integration | ||
<div> | ||
<a href="https://github.com/matifali" style="text-decoration: none; color: inherit;"> | ||
<span style="vertical-align:middle;">M Atif Ali</span> | ||
<img src="https://github.com/matifali.png" width="24px" height="24px" style="vertical-align:middle; margin: 0px;"/> | ||
</a> | ||
</div> | ||
January 24, 20204 | ||
--- | ||
Use Coder and JFrog Artifactory together to secure your development environments | ||
without disturbing your developers' existing workflows. | ||
This guide will demonstrate how to use JFrog Artifactory as a package registry | ||
within a workspace. | ||
## Requirements | ||
- A JFrog Artifactory instance | ||
- 1:1 mapping of users in Coder to users in Artifactory by email address or | ||
username | ||
- Repositories configured in Artifactory for each package manager you want to | ||
use | ||
## Provisioner Authentication | ||
The most straight-forward way to authenticate your template with Artifactory is | ||
by using our official Coder [modules](https://registry.coder.com). We publish | ||
two type of modules that automate the JFrog Artifactory and Coder integration. | ||
1. JFrog-OAuth | ||
2. JFrog-Token | ||
### JFrog-OAuth | ||
This module is usable by JFrog self-hosted (on-premises) Artifactory as it | ||
requires configuring a custom integration. This integration benefits from | ||
Coder's [external-auth](https://coder.com/docs/v2/latest/admin/external-auth) | ||
feature and allows each user to authenticate with Artifactory using an OAuth | ||
flow and issues user-scoped tokens to each user. | ||
To set this up, follow these steps: | ||
1. Modify your Helm chart `values.yaml` for JFrog Artifactory to add, | ||
```yaml | ||
artifactory: | ||
enabled: true | ||
frontend: | ||
extraEnvironmentVariables: | ||
- name: JF_FRONTEND_FEATURETOGGLER_ACCESSINTEGRATION | ||
value: "true" | ||
access: | ||
accessConfig: | ||
integrations-enabled: true | ||
integration-templates: | ||
- id: "1" | ||
name: "CODER" | ||
redirect-uri: "https://CODER_URL/external-auth/jfrog/callback" | ||
scope: "applied-permissions/user" | ||
``` | ||
> Note Replace `CODER_URL` with your Coder deployment URL, e.g., | ||
> <coder.example.com> | ||
2. Create a new Application Integration by going to | ||
<https://JFROG_URL/ui/admin/configuration/integrations/new> and select the | ||
Application Type as the integration you created in step 1. | ||
 | ||
3. Add a new | ||
[external authentication](https://coder.com/docs/v2/latest/admin/external-auth) | ||
to Coder by setting these env variables, | ||
```env | ||
# JFrog Artifactory External Auth | ||
CODER_EXTERNAL_AUTH_1_ID="jfrog" | ||
CODER_EXTERNAL_AUTH_1_TYPE="jfrog" | ||
CODER_EXTERNAL_AUTH_1_CLIENT_ID="YYYYYYYYYYYYYYY" | ||
CODER_EXTERNAL_AUTH_1_CLIENT_SECRET="XXXXXXXXXXXXXXXXXXX" | ||
CODER_EXTERNAL_AUTH_1_DISPLAY_NAME="JFrog Artifactory" | ||
CODER_EXTERNAL_AUTH_1_DISPLAY_ICON="/icon/jfrog.svg" | ||
CODER_EXTERNAL_AUTH_1_AUTH_URL="https://JFROG_URL/ui/authorization" | ||
CODER_EXTERNAL_AUTH_1_SCOPES="applied-permissions/user" | ||
``` | ||
> Note Replace `JFROG_URL` with your JFrog Artifactory base URL, e.g., | ||
> <example.jfrog.io> | ||
4. Create or edit a Coder template and use the | ||
[JFrog-OAuth](https://registry.coder.com/modules/jfrog-oauth) module to | ||
configure the integration. | ||
```hcl | ||
module "jfrog" { | ||
source = "registry.coder.com/modules/jfrog-oauth/coder" | ||
version = "1.0.0" | ||
agent_id = coder_agent.example.id | ||
jfrog_url = "https://jfrog.example.com" | ||
configure_code_server = true # this depends on the code-server | ||
username_field = "username" # If you are using GitHub to login to both Coder and Artifactory, use username_field = "username" | ||
package_managers = { | ||
"npm": "npm", | ||
"go": "go", | ||
"pypi": "pypi" | ||
} | ||
} | ||
``` | ||
### JFrog-Token | ||
This module makes use of the | ||
[Artifactory terraform provider](https://registry.terraform.io/providers/jfrog/artifactory/latest/docs) | ||
and an admin-scoped token to create user-scoped tokens for each user by matching | ||
their Coder email or username with Artifactory. This can be used for both SaaS | ||
and self-hosted(on-premises) Artifactory instances. | ||
To set this up, follow these steps: | ||
1. Get a JFrog access token from your Artifactory instance. The token must be an | ||
[admin token](https://registry.terraform.io/providers/jfrog/artifactory/latest/docs#access-token) | ||
with scope `applied-permissions/admin`. | ||
2. Create or edit a Coder template and use the | ||
[JFrog-Token](https://registry.coder.com/modules/jfrog-token) module to | ||
configure the integration and pass the admin token. It is recommended to | ||
store the token in a sensitive terraform variable to prevent it from being | ||
displayed in plain text in the terraform state. | ||
```hcl | ||
variable "artifactory_access_token" { | ||
type = string | ||
sensitive = true | ||
} | ||
module "jfrog" { | ||
source = "registry.coder.com/modules/jfrog-token/coder" | ||
version = "1.0.0" | ||
agent_id = coder_agent.example.id | ||
jfrog_url = "https://example.jfrog.io" | ||
configure_code_server = true # this depends on the code-server | ||
artifactory_access_token = var.artifactory_access_token | ||
package_managers = { | ||
"npm": "npm", | ||
"go": "go", | ||
"pypi": "pypi" | ||
} | ||
} | ||
``` | ||
<blockquote class="info"> | ||
The admin-level access token is used to provision user tokens and is never exposed to | ||
developers or stored in workspaces. | ||
</blockquote> | ||
If you do not want to use the official modules, you can check example template | ||
that uses Docker as the underlying compute | ||
[here](https://github.com/coder/coder/tree/main/examples/jfrog/docker). The same | ||
concepts apply to all compute types. | ||
## Offline Deployments | ||
See the [offline deployments](../install/offline.md#coder-modules) section for | ||
instructions on how to use coder-modules in an offline environment with | ||
Artifactory. | ||
## More reading | ||
- See the full example template | ||
[here](https://github.com/coder/coder/tree/main/examples/jfrog/docker). | ||
- To serve extensions from your own VS Code Marketplace, check out | ||
[code-marketplace](https://github.com/coder/code-marketplace#artifactory-storage). | ||
- To store templates in Artifactory, check out our | ||
[Artifactory modules](../templates/modules.md#artifactory) docs. |
Binary file addeddocs/images/guides/artifactory-integration/jfrog-oauth-app.png
Loading
Sorry, something went wrong.Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 5 additions & 5 deletionsdocs/manifest.json
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
Oops, something went wrong.
Uh oh!
There was an error while loading.Please reload this page.
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.