Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
ae1aceb
feat: drawio
Dec 12, 2022
ca8e271
Update README.md
Dec 12, 2022
2c53001
Merge branch 'develop' into 'feature/test'
Dec 12, 2022
58627c3
Merge branch 'feature/test' into 'develop'
Dec 12, 2022
50d38b4
feat: merge filepath 需要是文件
Mar 22, 2023
3cca4ab
chore: 新增命令
May 20, 2023
b83f86b
Merge branch 'develop' of http://192.168.13.78/frontend/web/test-cove…
May 20, 2023
ca81892
chore: update package.json
May 20, 2023
a865e72
Merge branch 'feature/test' into develop
May 20, 2023
6c3cb2f
创建 Jenkinsfile
May 25, 2023
e90b9cc
更新 Jenkinsfile
May 25, 2023
1f974e1
更新 Jenkinsfile
May 25, 2023
8913a34
1.0.1-0
May 25, 2023
e40171f
1.0.1-beta.0
May 25, 2023
849fd64
feat: 导出支持读取gitlab文件
Jun 3, 2023
50673d8
1.0.1-beta.1
Jun 3, 2023
68126a9
1.0.1-beta.2
Jun 3, 2023
e7e18bd
1.0.1
Jun 3, 2023
6011d41
1.0.2
Jun 3, 2023
1b8c283
1.0.3-beta.0
Jun 3, 2023
f37754b
feat: 删除build命令
Jun 3, 2023
91863f6
1.0.3-beta.1
Jun 3, 2023
340e1e9
更新 Jenkinsfile
Jun 3, 2023
1dc2d63
feat: 更新版本
Jun 3, 2023
c5df650
还原Jenkinsfile
Jun 3, 2023
543f8c4
更新 Jenkinsfile
Jun 5, 2023
1b5e564
更新 Jenkinsfile
Jun 5, 2023
1deca65
1.0.3-beta.2
Jun 5, 2023
f6a503f
feat: 文件读取
Jun 5, 2023
1146dbd
1.0.3-beta.3
Jun 5, 2023
0bb2171
feat: 增加全局对象配置
Jun 11, 2023
5723468
feat: 增加全局对象配置
Jun 11, 2023
7560cf5
feat: 增加全局对象配置
Jun 12, 2023
dcbcf93
1.0.3-beta.4
Jun 12, 2023
f52ea27
feat: 增加 type,git diff
Jul 17, 2023
f58528f
update: package.json
Jul 17, 2023
5094875
update: package.json
Jul 18, 2023
1610dc6
1.0.3-beta.5
Jul 18, 2023
b5414a3
update: package.json
Jul 28, 2023
00854c2
1.0.3-beta.6
Jul 28, 2023
cd57539
windows平台下将文件路径转成unix风格
Dec 8, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
pipeline {
agent {
node {
label 'nodejs-14.19.0'
}
}

parameters {
string(name:'TAG_NAME',defaultValue: '',description:'')
}

options{
buildDiscarder(logRotator(numToKeepStr: '10'))
}

environment {
HARBOR_CREDENTIAL_ID = 'pipeline-user-harbor'
KUBECONFIG_CREDENTIAL_ID = 'pipeline-user-kubeconfig'
APP_NAME = 'ur-utils-test-coverage-cli'
GITLAB_URL = 'http://192.168.13.78/frontend/web/test-coverage-cli.git'
WX_WORK_TOKEN = '11103d05-ea96-4031-994d-b2f91783d7fb'
}

stages {
stage ('checkout scm') {
steps {
checkout(scm)
script {
sh 'wget http://192.168.13.78/paas-pub/pipeline/-/raw/master/script/notify-qywx.py'
}
}
}

stage('develop publish'){
when{
branch 'develop'
}

environment {
HARBOR_HOST = 'bytest-harbor.ur.com.cn'
HARBOR_NAMESPACE = 'ur-utils-test-coverage-cli-dev'
HARBOR_CREDENTIAL_ID = 'pipeline-user-harbor'
}

steps{
container ('nodejs') {
sh 'npm config set registry http://nexus.ur.com.cn/repository/npm-group/'
sh 'npm install -g npm-cli-adduser'
sh 'npm-cli-adduser -u pipeline-user -p !Q2w3e4r -e pipeline-user@ur.com.cn -r http://nexus.ur.com.cn/repository/npm-host'
sh 'npm install'
sh 'npm publish --tag beta'
}
}

post {
aborted {
sh 'python `pwd`/notify-qywx.py $APP_NAME $HARBOR_NAMESPACE $GITLAB_URL dev发布取消 $WX_WORK_TOKEN'
}
success {
sh 'python `pwd`/notify-qywx.py $APP_NAME $HARBOR_NAMESPACE $GITLAB_URL dev发布成功 $WX_WORK_TOKEN'
}
failure {
sh 'python `pwd`/notify-qywx.py $APP_NAME $HARBOR_NAMESPACE $GITLAB_URL dev发布失败 $WX_WORK_TOKEN'
}
}
}

stage('prod publish'){
when{
branch 'master'
}

steps{
container ('nodejs') {
sh 'npm config set registry http://nexus.ur.com.cn/repository/npm-group/'
sh 'npm install -g npm-cli-adduser'
sh 'npm-cli-adduser -u pipeline-user -p !Q2w3e4r -e pipeline-user@ur.com.cn -r http://nexus.ur.com.cn/repository/npm-host'
sh 'yarn install'
sh 'npm publish'
}
}

post {
aborted {
sh 'python `pwd`/notify-qywx.py $APP_NAME $HARBOR_NAMESPACE $GITLAB_URL prod发布取消 $WX_WORK_TOKEN'
}
success {
sh 'python `pwd`/notify-qywx.py $APP_NAME $HARBOR_NAMESPACE $GITLAB_URL prod发布成功 $WX_WORK_TOKEN'
}
failure {
sh 'python `pwd`/notify-qywx.py $APP_NAME $HARBOR_NAMESPACE $GITLAB_URL prod发布失败 $WX_WORK_TOKEN'
}
}
}
}
}
38 changes: 38 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,39 @@
# test-coverage-cli
### 1.为了达到多种项目平台可用,以及对原项目的代码侵入性最低和功能的易扩展性考虑等,综上我们将此插桩工具设计为脚手架(Cli)。该脚手架提供以下几种命令。
* `instrument`
* `merge`
* `reporter`
* `uploader`

``` bash
# instrument 通过instrument命令可以对需要实现代码测试覆盖率的项目进行代码插桩。
cli-test instrument <input-directory> [output-directory]

# merge 通过merge命令可以对上报的一份货多份测试代码覆盖率数据进行合并、生成一份新的测试代码覆盖率数据。
cli-test merge <input-directory> [output-file]

# report 通过reporter命令可以对上述测试代码覆盖率数据导出成一份可视化的网页进行更加直观的预览
cli-test report <input-directory> [output-directory]
```



## 设计思路
在代码进行构建发布构建前,采用`instrument`命令对项目进行插桩后再进行构建发布,对开发人员来说是无感插入的。也不会影响原项目代码。项目接入成本低.

通过提供开始收集和结束收集两种接口,可以实现按需收集,在测试人员需要进行测试代码覆盖率时在进行收集。以及测试完成后结束收集进行数据的上报。避免在其它情况下收集到多份无用的测试代码覆盖率数据。造成磁盘空间以及网络带宽的浪费

## Config
``` json
# test-coverage.config.js
{
extension: ['.js', '.ts', '.vue'],
all: true,
exclude: ['**/*.d.ts', '**/*.css', '*.scss'],
reporter: ['html-spa', 'lcov', 'html'],
reportDir: './report',
}
```

## TODO:
[ ] uploader: 通过uploader命令可以对上述测试代码覆盖率数据导出成一份可视化的网页进行预览
Loading