workflow 内容模板 隐藏文件夹 .github , 里面放两个文件:
ISSUE_TEMPLATE.md
PULL_REQUEST_TEMPLATE.md
分支模型 Git Flow 分支模型 仓库有两个基础分支:
dev(默认分支)
master(用于发布)
通过pull request来合并新的代码:
协作者的代码通过pr合并到dev
dev通过pr合并到master
注意点:
merge 到 dev,使用squash merge
merge 到 master,使用普通的merge
永远不向master直接commit代码
GitHub Flow 分支模型 只有一个长期分支 master ,而且 master 分支上的代码,永远是可发布状态,
CI(Continuous Integration)集成 netlify to do
github action github自带的 ,貌似比Travis CI好用
ctest 怎么写
可以使用 toc-generator
在README里配置插入TOC的位置
1 2 <!-- START doctoc --> <!-- END doctoc -->
配置GitHub Action, 需要在仓库的Settings > Actions > General里的Workflow permissions开启Read and write permissions
1 2 3 4 5 6 7 8 9 10 11 12 13 14 name: Generate TOC on: push: branches: - main jobs: toc: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: technote-space/toc-generator@v4 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
travis ci Travis CI 提供的是持续集成服务(Continuous Integration,简称 CI)。它绑定 Github 上面的项目,只要有新的代码,就会自动抓取。然后,提供一个运行环境,执行测试,完成构建,还能部署到服务器。
持续集成的好处在于,每次代码的小幅变更,就能看到运行结果,从而不断累积小的变更,而不是在开发周期结束时,一下子合并一大块代码。
使用准备
登录 https://app.travis-ci.com/ ,绑定github,选择监听仓库.
项目里面有可运行的代码,项目还包含构建或测试脚本
.travis.yml
在项目根目录下新建 .travis.yml 文件。参考官方文档编写 https://docs.travis-ci.com/user/languages/cpp/
运行流程
install 阶段:安装依赖
script 阶段:运行脚本
可选部分
1 2 3 4 5 6 7 before_install:install 阶段之前执行 before_script:script 阶段之前执行 after_failure:script 阶段失败时执行 after_success:script 阶段成功时执行 before_deploy:deploy 步骤之前执行 after_deploy:deploy 步骤之后执行 after_script:script 阶段之后执行
运行状态
1 2 3 4 passed:运行成功,所有步骤的退出码都是0 canceled:用户取消执行 errored:before_install、install、before_script有非零退出码,运行会立即停止 failed :script有非零状态码 ,会继续运行
可选加密环境变量
git commit 规范 Angular规范
1 <type>(<scope>): <subject>
type 必须
name
description
实例
feat:
新功能(feature)。
打印函数 feat: Add print function for enhanced runtime information
fix/to:
修复bug,可以是QA发现的BUG,也可以是研发自己发现的BUG。
fix:
产生diff并自动修复此问题。适合于一次提交直接修复问题
to:
只产生diff不自动修复此问题。适合于多次提交。最终修复问题提交时使用fix
docs:
文档(documentation)。
style:
格式(不影响代码运行的变动)。
refactor:
重构(即不是新增功能,也不是修改bug的代码变动)。
perf:
优化相关,比如提升性能、体验。
test:
增加测试。
chore:
构建过程或辅助工具的变动。
revert:
回滚到上一个版本。
merge:
代码合并。
sync:
同步主线或分支的Bug。
规范化commit message 格式为:
1 2 3 4 5 <type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer>
对于Revert: If the commit reverts a previous commit, it should begin with revert:, followed by the header of the reverted commit. In the body it should say: This reverts commit <hash>., where the hash is the SHA of the commit being reverted .
type 的类型有:
feat: A new feature
fix: A bug fix
docs: Documentation only changes
style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)空白、格式、缺少分号等
refactor:(重构) A code change that neither fixes a bug nor adds a feature
perf: A code change that improves performance
test: Adding missing or correcting existing tests
chore: (琐事)Changes to the build process or auxiliary tools(辅助工具) and libraries such as documentation generation
scope : commit 改变的位置,如果是多处写*
subject : 简明的描述:
使用祈使句,现在时态
不要.结尾
第一个字母不要大写
body : 包括改变的动机,并将其与以前的行为进行对比。
footer : Breaking Changes或者reference GitHub issues that this commit closes. Breaking Changes should start with the wordBREAKING CHANGE: with a space or two newlines. The rest of the commit message is then used for this.
自动生成Release Notes 规范化commit 插件 vscode插件git-commit-plugin
命令行 husky + commitlint
工具
Standard Version
实现自动化版本控制,自动创建changelog, 创建 git tags
安装
1 2 3 4 5 6 7 8 9 10 11 npm cache clean --force #npm指令清除npm缓存 # 删除node_module包 npm install -g npm # npm 更新到最新 npm install -g n n latest # node 更新 Note: the node command changed location and the old location may be remembered in your current shell. old : /usr/bin/node new : /usr/local/bin/node To reset the command location hash either start a new shell, or execute PATH=$PATH" PATH=/usr/local/bin/:$PATH npm install -D standard-version
编写package.json
1 2 3 "scripts": { "release": "standard-version" }
CHANGELOG.md 记录内容的配置
创建.versionrc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 { "types": [ {"type": "chore", "section":"Others", "hidden": false}, {"type": "revert", "section":"Reverts", "hidden": false}, {"type": "feat", "section": "Features", "hidden": false}, {"type": "fix", "section": "Bug Fixes", "hidden": false}, {"type": "improvement", "section": "Feature Improvements", "hidden": false}, {"type": "docs", "section":"Docs", "hidden": false}, {"type": "style", "section":"Styling", "hidden": false}, {"type": "refactor", "section":"Code Refactoring", "hidden": false}, {"type": "perf", "section":"Performance Improvements", "hidden": false}, {"type": "test", "section":"Tests", "hidden": false}, {"type": "build", "section":"Build System", "hidden": false}, {"type": "ci", "section":"CI", "hidden":false} ] }
使用Standard Version
1 2 3 4 // 初次发布版本 npm run release --first-release npm run release #(自动更新版本号,自动更新 CHANGELOG.md, 自动创建 git tag) git push --follow-tags origin master
Commitizen for contributors
Linux下commit规范辅助,用来选择(没vscode的时候用)
用 git-cz 来提交文件
https://www.jianshu.com/p/acfdd4ca0104
Visual Studio Code Commitizen Support vscode的插件
conventional-changelog/commitlint 阻止不规范的提交
github-release-notes github-release-notes,以下简称 gren ,是用来一键向 github 发布 release notes 的工具。https://zhuanlan.zhihu.com/p/99499246
https://blog.csdn.net/weixin_39586683/article/details/110643111
release 语义化版本 semver 版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。 先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。
Git auto-release requirements
github Actions / travis-ci
自动化测试
Commitizen / Visual Studio Code Commitizen Support
规范commit message
standard-version
更新 package 版本并打 tag
github-release-notes
生成 release-log
需要进一步的研究学习 写个github模板
明确文件结构
src/include/build/Doc/Debug/test/example
清晰的README
Intro/Install&Run/Features/Bugs/Acknowledge
图片和标签
https://shields.io/category/build
Release的自动发布
规范commit
其他自动化的轮子持续整合 (Continuous Integration, CI)
travis ci
github action
ctest 怎么写?
cmake.yml
.github/workflow
https://github.com/iBug/AWS-Lambda-webhook-py/tree/master/.github/workflows
https://github.com/Kirrito-k423/github-stats
文档生成
doxygen
Doxygen主要解决说明书问题,可以在我们写代码的时候讲注释转化为说明书,Graphviz主要是用于图形展示
有项目,文件,函数三部分的书写要求 https://www.cnblogs.com/silencehuan/p/11169084.html
Codecov
代码覆盖率,执行部分占比。因为未执行部分可能是错的
projects/ bug fixs
设置为 template repository
查看 https://app.travis-ci.com/github/Kirrito-k423/githubTemplate
plus 将网站变成带名字的md格式参考文献的插件 Boost 设置 set(Boost_USE_STATIC_LIBS ON)
set(Boost_DEBUG ON)
Boost_INCLUDE_DIR: 含有boost头文件的目录 Boost_LIBRARYDIR: 偏好的含有boost库的库目录
https://stackoverflow.com/questions/3897839/how-to-link-c-program-with-boost-using-cmake
Boost Install http://c.biancheng.net/view/7772.html cache?
cmake boost install path
https://cloud.tencent.com/developer/ask/107360
设置boost-root 查看安装位置
Travis-CI Install Travis-CI 依赖软件包每次都要重新安装吗
apt-get install in a GitHub Actions workflow https://stackoverflow.com/questions/57982945/how-to-apt-get-install-in-a-github-actions-workflow
Actions may have no Boost, where
ctest Ctest add build/bin to test
Ctest https://www.cnblogs.com/hustcpp/p/12922998.html
https://blog.csdn.net/zcteo/article/details/117527823?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-15.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-15.no_search_link
遇到的问题 暂无
开题缘由、总结、反思、吐槽~~ 还是ipcc的github组织的太烂了,需要学习一下
参考文献
https://zhuanlan.zhihu.com/p/67620599
http://www.ruanyifeng.com/blog/2017/12/travis_ci_tutorial.html
https://github.com/levy9527/blog/issues/1