1. 持续集成
  2. 词汇表
持续集成 / Composer / npm

构建 npm 类型制品

功能介绍

本文将给出如何使用持续集成任务构建 Npm 制品的示例 Jenkinsfile。构建完成后可以使用预置插件便捷的上传至 CODING 制品仓库中。在使用该功能之前,请确保您对 Npm 类型制品库有初步了解

Jenkinsfile 配置

想要在持续集成中向 CODING 制品库发布或下载 npm 包,需要在 .npmrc 中使用有效的拉取或者推送凭据,直接把凭据信息提交到代码仓库中又会有安全风险。

解决方法:npm 支持用户通过环境变量来读取配置,如:

registry=https://my-team-npm.pkg.coding.net/my-project/my-npm-repo/
always-auth=true
//my-team-npm.pkg.coding.net/my-project/my-npm-repo/:username=${CODING_ARTIFACTS_USERNAME}
//my-team-npm.pkg.coding.net/my-project/my-npm-repo/:_password=${CODING_ARTIFACTS_PASSWORD_ENCODED}
//my-team-npm.pkg.coding.net/my-project/my-npm-repo/:email=required but not used

代码检出与制品上传的 Jenkinsfile 配置示例如下:

pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        // 请确保代码仓库内有 .npmrc 文件
        checkout([
          $class: 'GitSCM',
          branches: [[name: env.GIT_BUILD_REF]],
          userRemoteConfigs: [
            [url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]
          ]
        ])
      }
    }
    stage('上传到私有 npm') {
      steps {
          withCredentials([
            usernamePassword(
              // CODING 持续集成的环境变量中内置了一个用于上传到当前项目制品库的凭证
              credentialsId: env.CODING_ARTIFACTS_CREDENTIALS_ID,
              usernameVariable: 'CODING_ARTIFACTS_USERNAME',
              passwordVariable: 'CODING_ARTIFACTS_PASSWORD'
            )]) {
                script {
                  // .npmrc 使用的 password 必须经过 base64 encode
                  CODING_ARTIFACTS_PASSWORD_ENCODED = sh (
                      script: 'echo -n "${CODING_ARTIFACTS_PASSWORD}" | base64',
                      returnStdout: true
                  )
                }

                withEnv(["CODING_ARTIFACTS_PASSWORD_ENCODED=${CODING_ARTIFACTS_PASSWORD_ENCODED}"]){
                    sh 'npm publish'
                }
            }
          }
      }
  }
}
  • 若想将制品推送到本项目的制品库,使用 CODING 持续集成内置的 CODING_ARTIFACTS_CREDENTIALS_ID 即可。

  • 若想要从 A 项目的持续集成中推送到 B 项目的制品库中,需要您手动创建能够推送到 B 项目的凭据。

常见问题

  1. 如何找到 .npmrc 文件?
npm config list
  1. 如何创建凭据?
    点击查看:持续集成——使用凭据进行认证
上一篇构建 Maven 类型制品
最近更新
感谢反馈有用
感谢反馈没用

在阅读中是否遇到以下问题?

您希望我们如何改进?