【voice-ui】测试持续集成

22 篇文章 0 订阅
8 篇文章 0 订阅

部署到ci上

在circleci上注册,然后关联到github,讲项目重新推送到一个专门用于持续集成的仓库,将该仓库用ci工具联系起来,建立project
在这里插入图片描述

如何自动发布

首先要注意发布命令要部署在ci上,但是不是每次运行 yarn ci命令就发布, 发布的主动命令要掌握在自己电脑上,
在本地新建deploy.sh,通过本地运行 ./deploy.sh patch等命令进行自动升版本号并发布,

#!/bin/env bash
npm version $1 && \
    git push --follow-tags

逻辑是,运行了npm version patch,所以版本号会变动,然后运行了git push --fpllow -tags,所以会推送到刚才讲的那个持续集成的仓库中,然后关联仓库的线上ci工具会自动运行,走提前配置好了的config.yml代码,如下

#https://github.com/revolunet/create-react-app-circleci/blob/master/.circleci/config.yml
defaults: &defaults
  docker:
    - image: circleci/node:10

version: 2
jobs:
  prepare:
    <<: *defaults
    steps:
      - checkout
      - restore_cache:
          keys:
            - v2-dependencies-{{ checksum "package.json" }}
      - run: yarn install
      - save_cache:
          paths:
            - node_modules
          key: v2-dependencies-{{ checksum "package.json" }}
      - persist_to_workspace:
          root: .
          paths:
            - node_modules
  build:
    <<: *defaults
    steps:
      - checkout
      - attach_workspace:
          at: .
      - run: yarn build
      - persist_to_workspace:
          root: .
          paths:
            - dist
            - package.json
            - README.md
  test:
    <<: *defaults
    steps:
      - checkout
      - attach_workspace:
          at: .
      - run: yarn ci
      - store_test_results:
          path: test-results
  publish:
    <<: *defaults
    steps:
      - attach_workspace:
          at: .
      - run: npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN
      - run: npm publish


workflows:
  version: 2
  build_accept_deploy:
    jobs:
      - prepare
      - build:
          requires:
            - test
      - test:
          requires:
            - prepare
      - publish:
          requires:
            - build
          filters:
            tags:
              only: /^v[0-9]+(\.[0-9]+)*/
            branches:
              ignore: /.*/

然后会在线上自己测试,生成测试覆盖率等,(如果要查看测试覆盖率,还得在test环节再加上发布测试结果到新仓库,等等代码命令行),然后会根据设置的publish的filters来查看是否进行发布新版本。
tags的circleci官方文档
tags的circleci官方用法

总结逻辑是:
一般的push,会在线上ci进行测试,但是监测到不是带有tag的push,所以不会发布

需要发布的时候,不用push 或者publish命令,而是运行 ./deploy.sh patch
但是明明逻辑上都没错了,运行 ./deploy.sh patch,circleci还是没有publish的那一步,搞不懂
只能本地npm publish了暂时

查了别人的代码,都说这样不行,不能用tags来filter,只有branch可以进行filter,思路是平时push就在main主分支上,要发布的时候发布在deploy分支上,所以需要修改配置

首先circleci的config.yml
改成branches 为only deploy

      - publish:
          requires:
            - build
          filters:
            branches:
              only: /deploy/
            # tags无效,只能用branches
            # tags:
            #   only: /^v.*/

然后本地deploy文件修改push命令,不必再带tag,注意现在的github是main分支,不再是master了

#!/bin/env bash
npm version $1 && \
    git push origin main:deploy

这样普通push的时候不会进行发布,需要发布的时候运行 ./deploy.sh patch就可以了,只不过会多出一个deploy分支
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值