1. 产品简介
  2. 快速开始
  3. 编写构建流程
  4. 配置构建计划
  5. 构建节点
  6. 管理构建计划
  7. 系统插件
  8. 自定义团队插件
  9. 最佳实践
  10. 常见问题
  11. 词汇表
持续集成 / 构建制品 / npm

构建 npm 类型制品

功能介绍

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

npmrc

创建 .npmrc 文件,提交到代码库,参考代码:

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=zhang@example.com

Jenkinsfile

pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        checkout([
          $class: 'GitSCM',
          branches: [[name: GIT_BUILD_REF]],
          userRemoteConfigs: [[
            url: GIT_REPO_URL,
            credentialsId: CREDENTIALS_ID
          ]]])
      }
    }
    stage('安装依赖') {
      steps {
        sh 'rm -rf /usr/lib/node_modules/npm/'
        dir ('/root/.cache/downloads') {
          sh 'wget -nc "https://coding-public-generic.pkg.coding.net/public/downloads/node-linux-x64.tar.xz?version=v16.13.0" -O node-v16.13.0-linux-x64.tar.xz | true'
          sh 'tar -xf node-v16.13.0-linux-x64.tar.xz -C /usr --strip-components 1'
        }
        withCredentials([
          usernamePassword(
            // CODING 持续集成的环境变量中内置了一个用于上传到当前项目制品库的凭证
            credentialsId: env.CODING_ARTIFACTS_CREDENTIALS_ID,
            usernameVariable: 'CODING_ARTIFACTS_USERNAME',
            passwordVariable: 'CODING_ARTIFACTS_PASSWORD'
          )]) {
              script {
                sh '''
                CODING_ARTIFACTS_PASSWORD_ENCODED=$(echo -n "${CODING_ARTIFACTS_PASSWORD}" | base64)
                echo "CODING_ARTIFACTS_USERNAME=${CODING_ARTIFACTS_USERNAME}" >> $CI_ENV_FILE
                echo "CODING_ARTIFACTS_PASSWORD_ENCODED=${CODING_ARTIFACTS_PASSWORD_ENCODED}" >> $CI_ENV_FILE
                '''
                readProperties(file: env.CI_ENV_FILE).each {key, value -> env[key] = value }
              }
            }
        sh 'npm install'
      }
    }
    stage('检查代码规范') {
      steps {
        sh 'npm run lint'
      }
    }
    stage('单元测试') {
      steps {
        sh 'npm run test'
      }
    }
    stage('发布私有包 npm') {
      when {
        anyOf {
          tag '*'
        }
      }
      steps {
        sh 'npm publish'
      }
    }
  }
}

环境变量配置

如果发布到「本项目」的制品库,无需设置环境变量。如果发布到「其他项目」,请阅读《外部制品库认证》

团队成员在进行本地开发时,可以使用自己的账号和密码,在 Linux/macOS 中这样设置:

export CODING_ARTIFACTS_USERNAME=lilei@example.com
export CODING_ARTIFACTS_PASSWORD=123456

常见问题

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

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

您希望我们如何改进?

工单咨询