使用码云gitee-go做npmpublish

首页 编程分享 EXPERIENCE 正文

曾建凯 转载 编程分享 2021-04-04 23:46:03

简介 gitee-go 其实去年已经上线了,但当时太忙,没时间折腾。 经过一再折腾,终于搞通了。操作步骤按照以下流程: Step-1:在仓库的 DevOps 进入 Gitee Go 的配置页面,点击新建流水线(以下 2 图)...


gitee-go 其实去年已经上线了,但当时太忙,没时间折腾。

经过一再折腾,终于搞通了。操作步骤按照以下流程:

Step-1:在仓库的 DevOps 进入 Gitee Go 的配置页面,点击新建流水线(以下 2 图)

Step-2:新建流水线的初始化配置界面,操作如下图。

该配置文件创建保存后,会在你的仓库目录下创建对应的文件,如:.workflow/npm-publish.yml 文件。建议可在自己本地修改流水线配置文件,毕竟有代码高亮,格式也更可控。

Step-3:本地优化 npm-publish.yml 配置文件

Id ========================================================
Id npm 构建参考流水线样例
Id 功能:输出当前 npm 构建环境的环境信息
Id ========================================================
name: npm-publish                Id 定义一个唯一 ID 标识为 gitee-go-npm-example,名称为 “npm-流水线示例” 的流水线
displayName: 'npm-publish'
triggers:                                 Id 流水线触发器配置
  push:                                   Id 设置 master 分支 在产生代码 push 时精确触发(PRECISE)构建
    - matchType: PRECISE
      branch: master
commitMessage: 'build:'                   Id 通过匹配当前提交的 CommitMessage 决定是否执行流水线
stages:                                   Id 构建阶段配置
  - stage:                                Id 定义一个 ID 标识为 npm-build-stage ,名为 “npm Stage” 的阶段
      name: npm-build-stage
      displayName: 'npm publish stage'
      failFast: true                      Id 允许快速失败,即当 Stage 中有任务失败时,直接结束整个 Stage
      steps:                              Id 构建步骤配置
        - step: npmbuild@1                Id 采用 npm 编译环境
          name: npm-test                  Id 定义一个 ID 标识为 npm-build ,名为 “npm Step” 的阶段
          displayName: 'npm test'
          inputs:                         Id 构建输入参数设定
            nodeVersion: 14.15            Id 指定 node 环境版本为 10.1
            goals: |
              node -v && npm -v
              npm install
              cat package.json
              npm run eslint-check
              npm run test
        - step: npmbuild@1                Id 采用 npm 编译环境
          name: npm-build                 Id 定义一个 ID 标识为 npm-build ,名为 “npm Step” 的阶段
          dependsOn: npm-test             Id 依赖于上一个步骤
          displayName: 'npm publish'
          inputs:                         Id 构建输入参数设定
            nodeVersion: 14.15            Id 指定 node 环境版本为 10.1
            goals: |                      Id 先用 taobao 的 install,再切换官方源 publish 试试
              npm install
              npm run build
              npm install -g @jsdevtools/npm-publish
              npm-publish --token=$NPM_TOKEN ./package.json

具体的说明,可以参考这里:Gitee Go 快速入门 和 流水线配置(YAML)格式说明 。这里补充说明一下这个配置文件的关键信息:

  1. commitMessage 为匹配 git commit 提交时的注释信息,这里我用了匹配 build: 这个前缀
  2. stage 这里配置了两个 steps,第一个 step 执行测试,第二个 step 执行 publish
  3. Gitee Go 针对国内环境,默认使用的是 taobao 的仓库,所以要做 npm publish 需要手动修改仓库,或者用 @jsdevtools/npm-publish 这个库来辅助发布。经过摸索,这个库更易用,推荐使用。
  4. $NPM_TOKEN 这个变量,是配置在仓库的环境变量,推荐阅读:环境变量管理 。补充说明,新建变量的时候,记得勾选 密钥模式 ,勾选该项后,这个变量在 Gitee Go 运行阶段,会自动掩饰为 ****** ,防止关键信息外泄。



    被掩藏了的 $NPM_TOKEN 的截图说明:

Step-4:git 提交前,记得检查 package.json 中的 version 字段,加版本号。然后提交的时候,填写注释如:build: 1.0.0 ,这样就会触发 npm-publish.yml 的 commitMessage。

之后,进入仓库的 Gitee Go 界面,即可看到触发了一个新的流水线的记录:

点击【查看】,可进入该流水线的详情记录:

点击 【构建详情】,可查看构建的过程,注意,未完成的 step ,无法获得查看执行的详情:

补充说明:

  1. 经过摸索,Stage(流水线)的 Step(环节)的失败判定,来自于 node.js 执行时的 process.stderr 的写入,如 eslint、单元测试、npm指令执行发生错误的时候,都会抛出错误,写入 process.stderr,即会触发 Step 的执行失败的判定。
  2. 通过指定 dependsOn 字段,可以使 Step 依赖于前一个 Step 无失败才往后执行,如果不指定这个字段所有 Step 会同时执行。
 
 

转载链接:https://my.oschina.net/janpoem/blog/5006328


Tags:


本篇评论 —— 揽流光,涤眉霜,清露烈酒一口话苍茫。


    声明:参照站内规则,不文明言论将会删除,谢谢合作。


      最新评论




ABOUT ME

Blogger:袅袅牧童 | Arkin

Ido:PHP攻城狮

WeChat:nnmutong

Email:nnmutong@icloud.com

标签云