From 66891144c5f5e53dc9c20be29779c6cb86a72d9f Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Mon, 1 Jan 2024 12:32:24 +0300 Subject: [PATCH] Add Docker repository configuration --- jfrog-oauth/main.tf | 18 +++--------------- jfrog-oauth/run.sh | 29 ++++++++++++++++++++++------- jfrog-token/main.tf | 18 +++--------------- jfrog-token/run.sh | 28 ++++++++++++++++++++++------ 4 files changed, 50 insertions(+), 43 deletions(-) diff --git a/jfrog-oauth/main.tf b/jfrog-oauth/main.tf index a6b6e56..044fc8f 100644 --- a/jfrog-oauth/main.tf +++ b/jfrog-oauth/main.tf @@ -54,7 +54,8 @@ For example: { "npm": "YOUR_NPM_REPO_KEY", "go": "YOUR_GO_REPO_KEY", - "pypi": "YOUR_PYPI_REPO_KEY" + "pypi": "YOUR_PYPI_REPO_KEY", + "docker": "YOUR_DOCKER_REPO_KEY" } EOF } @@ -85,6 +86,7 @@ resource "coder_script" "jfrog" { REPOSITORY_NPM : lookup(var.package_managers, "npm", ""), REPOSITORY_GO : lookup(var.package_managers, "go", ""), REPOSITORY_PYPI : lookup(var.package_managers, "pypi", ""), + REPOSITORY_DOCKER : lookup(var.package_managers, "docker", ""), }) run_on_start = true } @@ -96,20 +98,6 @@ resource "coder_env" "jfrog_ide_url" { value = var.jfrog_url } -resource "coder_env" "jfrog_ide_username" { - count = var.configure_code_server ? 1 : 0 - agent_id = var.agent_id - name = "JFROG_IDE_USERNAME" - value = local.username -} - -resource "coder_env" "jfrog_ide_password" { - count = var.configure_code_server ? 1 : 0 - agent_id = var.agent_id - name = "JFROG_IDE_PASSWORD" - value = data.coder_external_auth.jfrog.access_token -} - resource "coder_env" "jfrog_ide_access_token" { count = var.configure_code_server ? 1 : 0 agent_id = var.agent_id diff --git a/jfrog-oauth/run.sh b/jfrog-oauth/run.sh index 7fdd6f4..dbd9cdc 100644 --- a/jfrog-oauth/run.sh +++ b/jfrog-oauth/run.sh @@ -22,16 +22,13 @@ if [ -z "${REPOSITORY_NPM}" ]; then echo "🤔 no npm repository is set, skipping npm configuration." echo "You can configure an npm repository by providing the a key for 'npm' in the 'package_managers' input." else - # check if npm is installed and configure it to use the Artifactory "npm" repository. - if command -v npm > /dev/null 2>&1; then - echo "📦 Configuring npm..." - jf npmc --global --repo-resolve "${REPOSITORY_NPM}" - fi - # if npm version is greater than or equal to 9.0.0, use the new npmrc format + echo "📦 Configuring npm..." + jf npmc --global --repo-resolve "${REPOSITORY_NPM}" cat << EOF > ~/.npmrc email=${ARTIFACTORY_EMAIL} registry=${JFROG_URL}/artifactory/api/npm/${REPOSITORY_NPM} EOF + # if npm version is greater than or equal to 9.0.0, use the new .npmrc format if [ "$(npm --version | cut -d. -f1)" -ge 9 ]; then echo "//${JFROG_HOST}/artifactory/api/npm/${REPOSITORY_NPM}/:_authToken=${ARTIFACTORY_ACCESS_TOKEN}" >> ~/.npmrc else @@ -45,7 +42,7 @@ if [ -z "${REPOSITORY_PYPI}" ]; then echo "🤔 no pypi repository is set, skipping pip configuration." echo "You can configure a pypi repository by providing the a key for 'pypi' in the 'package_managers' input." else - echo "🐍 Configuring pip..." + echo "📦 Configuring pip..." jf pipc --global --repo-resolve "${REPOSITORY_PYPI}" mkdir -p ~/.pip cat << EOF > ~/.pip/pip.conf @@ -64,6 +61,24 @@ else fi echo "🥳 Configuration complete!" +# Configure the JFrog CLI to use the Artifactory "docker" repository. +if [ -z "${REPOSITORY_DOCKER}" ]; then + echo "🤔 no docker repository is set, skipping docker configuration." + echo "You can configure a docker repository by providing the a key for 'docker' in the 'package_managers' input." +else + echo "🐳 Configuring docker..." + mkdir -p ~/.docker + cat << EOF > ~/.docker/config.json +{ + "auths": { + "${JFROG_HOST}": { + "auth": "$(echo -n "${ARTIFACTORY_USERNAME}:${ARTIFACTORY_ACCESS_TOKEN}" | base64)" + } + } +} +EOF +fi + # Install the JFrog vscode extension for code-server. if [ "${CONFIGURE_CODE_SERVER}" == "true" ]; then while ! [ -x /tmp/code-server/bin/code-server ]; do diff --git a/jfrog-token/main.tf b/jfrog-token/main.tf index 269bdca..c018352 100644 --- a/jfrog-token/main.tf +++ b/jfrog-token/main.tf @@ -76,7 +76,8 @@ For example: { "npm": "YOUR_NPM_REPO_KEY", "go": "YOUR_GO_REPO_KEY", - "pypi": "YOUR_PYPI_REPO_KEY" + "pypi": "YOUR_PYPI_REPO_KEY", + "docker": "YOUR_DOCKER_REPO_KEY" } EOF } @@ -119,6 +120,7 @@ resource "coder_script" "jfrog" { REPOSITORY_NPM : lookup(var.package_managers, "npm", ""), REPOSITORY_GO : lookup(var.package_managers, "go", ""), REPOSITORY_PYPI : lookup(var.package_managers, "pypi", ""), + REPOSITORY_DOCKER : lookup(var.package_managers, "docker", ""), }) run_on_start = true } @@ -130,20 +132,6 @@ resource "coder_env" "jfrog_ide_url" { value = var.jfrog_url } -resource "coder_env" "jfrog_ide_username" { - count = var.configure_code_server ? 1 : 0 - agent_id = var.agent_id - name = "JFROG_IDE_USERNAME" - value = local.username -} - -resource "coder_env" "jfrog_ide_password" { - count = var.configure_code_server ? 1 : 0 - agent_id = var.agent_id - name = "JFROG_IDE_PASSWORD" - value = artifactory_scoped_token.me.access_token -} - resource "coder_env" "jfrog_ide_access_token" { count = var.configure_code_server ? 1 : 0 agent_id = var.agent_id diff --git a/jfrog-token/run.sh b/jfrog-token/run.sh index 3dd57d1..bac8a7d 100644 --- a/jfrog-token/run.sh +++ b/jfrog-token/run.sh @@ -22,16 +22,13 @@ if [ -z "${REPOSITORY_NPM}" ]; then echo "🤔 no npm repository is set, skipping npm configuration." echo "You can configure an npm repository by providing the a key for 'npm' in the 'package_managers' input." else - # check if npm is installed and configure it to use the Artifactory "npm" repository. - if command -v npm > /dev/null 2>&1; then - echo "📦 Configuring npm..." - jf npmc --global --repo-resolve "${REPOSITORY_NPM}" - fi - # if npm version is greater than or equal to 9.0.0, use the new npmrc format + echo "📦 Configuring npm..." + jf npmc --global --repo-resolve "${REPOSITORY_NPM}" cat << EOF > ~/.npmrc email=${ARTIFACTORY_EMAIL} registry=${JFROG_URL}/artifactory/api/npm/${REPOSITORY_NPM} EOF + # if npm version is greater than or equal to 9.0.0, use the new npmrc format if [ "$(npm --version | cut -d. -f1)" -ge 9 ]; then echo "//${JFROG_HOST}/artifactory/api/npm/${REPOSITORY_NPM}/:_authToken=${ARTIFACTORY_ACCESS_TOKEN}" >> ~/.npmrc else @@ -39,6 +36,7 @@ EOF echo "always-auth=true" >> ~/.npmrc fi fi + # Configure the `pip` to use the Artifactory "python" repository. if [ -z "${REPOSITORY_PYPI}" ]; then echo "🤔 no pypi repository is set, skipping pip configuration." @@ -63,6 +61,24 @@ else fi echo "🥳 Configuration complete!" +# Configure the JFrog CLI to use the Artifactory "docker" repository. +if [ -z "${REPOSITORY_DOCKER}" ]; then + echo "🤔 no docker repository is set, skipping docker configuration." + echo "You can configure a docker repository by providing the a key for 'docker' in the 'package_managers' input." +else + echo "🐳 Configuring docker..." + mkdir -p ~/.docker + cat << EOF > ~/.docker/config.json +{ + "auths": { + "${JFROG_HOST}": { + "auth": "$(echo -n "${ARTIFACTORY_USERNAME}:${ARTIFACTORY_ACCESS_TOKEN}" | base64)" + } + } +} +EOF +fi + # Install the JFrog vscode extension for code-server. if [ "${CONFIGURE_CODE_SERVER}" == "true" ]; then while ! [ -x /tmp/code-server/bin/code-server ]; do