前提文件
.gitlab-ci.yml, .dockerignore, ci-funcs.sh, Dockerfile, karma.conf.js, nginx.conf, nginx-custom.conf, sonar-project.properties
1.test.ts
const context = require.context('./app/pages', true, /\.spec\.ts$/);
2.sonar-project.properties
sonar.sources=src/app/xxx
sonar.javascript.lcov.reportPaths=coverage/lcov.info
3.karma.conf.js
coverageIstanbulReporter: {
dir: require('path').join(__dirname, './coverage'),
reports: ['html', 'lcovonly', 'text-summary'],
fixWebpackSourcePaths: true
},
4.angular.json
"test": {
...,
"codeCoverage": true
},
5.config.toml
[[runners]]
name = "webapp-angular runner on wsl"
url = "https://gitlab.xxx.com/"
token = "..."
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "harbor.xxx.com/base_image/alpine:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/data/gitlab-runner/builds:/builds","/data/gitlab-runner/cache:/cache","/var/run/docker.sock:/var/run/docker.sock"]
shm_size = 0
6.CI/CD Settings
Test coverage parsing: Statements.*?(\d+(?:\.\d+)?)%
7.Command
ng test --no-watch --code-coverage
sonar-scanner -Dproject.settings=sonar-project.properties
8.Reference
https://gitlab.xxx.com.cn/xxx/webapp-angular