Skip to content

Commit d2772d1

Browse files
committed
chore: remove commit history before open source
1 parent c5e147a commit d2772d1

File tree

631 files changed

+65927
-1796
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

631 files changed

+65927
-1796
lines changed

.fnlint.json

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"basePath": ".",
3+
"files": "source/**/*.md",
4+
"format": "kebabcase",
5+
"directories": true
6+
}

.git-pre-commit

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/sh
2+
3+
git diff --diff-filter=d --name-only HEAD | grep ".md$" | xargs npx remark -f
4+
git diff --diff-filter=d --name-only HEAD | grep ".md$" | xargs npx lint-md
5+
npx fnlint -c .fnlint.json

.gitignore

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
node_modules
22
.DS_Store
33
db.json
4-
public
4+
public
5+
.idea
6+
*.log
7+
source/best-practices/overview.html

.lintmdrc

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"excludeFiles": [],
3+
"rules": {
4+
"no-long-code": [1, {
5+
"length": 100,
6+
"exclude": ["dot"]
7+
}]
8+
}
9+
}

CODEOWNERS

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

Jenkinsfile

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
pipeline {
2+
agent {
3+
docker {
4+
reuseNode 'true'
5+
registryUrl 'https://coding-public-docker.pkg.coding.net'
6+
image 'public/docker/nodejs:12'
7+
}
8+
9+
}
10+
stages {
11+
stage('检出') {
12+
steps {
13+
checkout([
14+
$class: 'GitSCM',
15+
branches: [[name: '*']],
16+
userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]
17+
])
18+
script {
19+
if ( env.MR_SOURCE_BRANCH ==~ /.*/ ) {
20+
sh "git checkout ${env.MR_TARGET_BRANCH}"
21+
sh "git checkout ${env.MR_SOURCE_BRANCH}"
22+
} else {
23+
sh "git checkout ${env.GIT_COMMIT}"
24+
}
25+
}
26+
}
27+
}
28+
stage('安装依赖') {
29+
steps {
30+
sh 'npm install'
31+
}
32+
}
33+
stage('检查代码规范') {
34+
when {
35+
changeRequest()
36+
}
37+
steps {
38+
sh "git diff --diff-filter=d --name-only ${env.MR_TARGET_BRANCH}... | grep '.md\$' | xargs npx remark -f"
39+
sh "git diff --diff-filter=d --name-only ${env.MR_TARGET_BRANCH}... | grep '.md\$' | xargs npx lint-md"
40+
sh "npx fnlint -c .fnlint.json"
41+
}
42+
}
43+
stage('增量检查 git commit') {
44+
when {
45+
changeRequest()
46+
}
47+
steps {
48+
script {
49+
sh 'npm install'
50+
sh """logs=`git log --pretty=format:'%s' ${env.MR_TARGET_BRANCH}... --no-merges`;
51+
echo "\$logs" | while read i; do echo \$i | npx commitlint; done
52+
"""
53+
}
54+
}
55+
}
56+
stage('构建') {
57+
steps {
58+
sh 'npx hexo generate'
59+
sh 'node generate-overview.js prod'
60+
}
61+
}
62+
stage('部署') {
63+
when {
64+
anyOf {
65+
branch 'master'
66+
tag '*'
67+
}
68+
}
69+
steps {
70+
sh 'mv public docs && mkdir public && mv docs public'
71+
sh 'npx hexo deploy'
72+
}
73+
}
74+
}
75+
}

README.md

+87
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# CODING 帮助中心
2+
3+
[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
4+
5+
本仓库是 CODING 帮助中心的文档,采用 Hexo 框架,Markdown 格式,通过持续集成强制检查下列规范:
6+
7+
- Git commit:[commitlint](https://juejin.im/post/6844903710112350221)
8+
- Markdown 英文:[remark](https://www.npmjs.com/package/remark-cli)
9+
- Markdown 中文:[lint-md](https://github.com/lint-md/lint-md)
10+
11+
参与本项目之前,建议先学习视频课程:[DevOps 代码质量实战:代码规范与 Git Flow](https://cloud.tencent.com/edu/learning/live-2837)
12+
13+
## 目录结构
14+
15+
```text
16+
├── Jenkinsfile
17+
├── _config.yml # Hexo 配置
18+
├── generate-overview.js
19+
├── patches
20+
│   └── hexo-renderer-marked.patch # 中文锚点补丁
21+
├── source # 所有文档
22+
│   ├── _data
23+
│   │   └── navigation.yml # 导航配置
24+
│   ├── foo
25+
│   └── bar
26+
└── themes
27+
└── coding-help
28+
```
29+
30+
## 本地构建
31+
32+
```bash
33+
npm install
34+
35+
# 本地预览
36+
hexo serve
37+
open http://127.0.0.1:4000/docs/start/new.html
38+
最佳实践:http://localhost:4000/docs/best-practices/overview.html
39+
40+
# 生成 HTML
41+
hexo generate
42+
43+
# 最佳实践的概览页
44+
# 注意 json 文件的 image 字段和 link 字段的格式,image 字段只需写图片名字,图片放在 themes/coding-help/source/images/best-practices
45+
46+
vi source/_data/best-practices.json
47+
npm run best
48+
npm run dev
49+
open http://localhost:4000/docs/best-practices/overview.html
50+
```
51+
52+
## 本地开发
53+
54+
```shell
55+
git checkout master
56+
git pull
57+
git checkout -b issue-123
58+
vi xxx.md
59+
git add xxx.md
60+
61+
# 运行标准化提交插件,按照提示输入信息
62+
npm install -g commitizen cz-conventional-changelog
63+
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
64+
git cz
65+
66+
git push origin issue-123
67+
68+
# 网页创建合并请求
69+
```
70+
71+
### 持续集成
72+
73+
合并请求会触发持续集成,强制检查规范,如果失败,修改后重新提交。
74+
75+
如果持续集成报错:git commit 不规范,参考文章进行修改:[修改 git 历史提交 commit 信息(重写历史)](https://help.coding.net/docs/ci/practice/lint/git-commit.html#modify)
76+
77+
commit 修改难度较高,也可回到 master,重新创建分支(注意不要重名),复制文件,重新提交。
78+
79+
### Code Review
80+
81+
持续集成通过后,由同事进行 code review,如果有问题,修改后重新提交。
82+
83+
code review 原则:
84+
85+
- 每次合并请求都必须经过 review;
86+
- 及时进行:不要跨天;
87+
- 必须通读,大部分时候都会发现问题;如果从来发现不了问题,随意批准,将被吊销 review 资格。

_config.yml

+32-7
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ timezone:
1313

1414
# URL
1515
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
16-
url: https://help.coding.net/
17-
root: /
16+
url: https://help.coding.net/docs/
17+
root: /docs/
1818
permalink: :year/:month/:day/:title/
1919
permalink_defaults:
2020

@@ -27,20 +27,21 @@ category_dir: categories
2727
code_dir: downloads/code
2828
i18n_dir: :lang
2929
skip_render:
30+
- "best-practices/overview.html"
3031

3132
# Writing
3233
new_post_name: :title.md # File name of new posts
3334
default_layout: page
3435
titlecase: false # Transform title into titlecase
35-
external_link: true # Open external links in new tab
36+
external_link.enable: true # Open external links in new tab
3637
filename_case: 0
3738
render_drafts: false
3839
post_asset_folder: false
3940
relative_link: false
4041
future: true
4142
highlight:
42-
enable: true
43-
line_number: true
43+
enable: false
44+
line_number: false
4445
auto_detect: false
4546
tab_replace:
4647

@@ -72,6 +73,7 @@ pagination_dir: page
7273

7374
# Extensions
7475
## Plugins: https://hexo.io/plugins/
76+
7577
## Themes: https://hexo.io/themes/
7678
theme: coding-help
7779

@@ -81,7 +83,30 @@ autoprefixer:
8183
overrideBrowserslist:
8284
- 'last 2 versions'
8385

84-
# Deployment
86+
algolia:
87+
applicationID: '9488ENB81Z'
88+
apiKey: '8cd7d4251ad9bcd7d471b8b10e5e9d88'
89+
indexName: 'coding-help-master'
90+
91+
92+
# Deployment To COS
8593
## Docs: https://hexo.io/docs/deployment.html
8694
deploy:
87-
type:
95+
type: cos
96+
secretId:
97+
secretKey:
98+
bucket:
99+
region:
100+
101+
# hexo-renderer-marked
102+
## Docs: https://github.com/hexojs/hexo-renderer-marked
103+
marked:
104+
anchorAlias: true
105+
106+
# page-breadcrumb
107+
breadcrumb:
108+
display: true
109+
110+
# sitemap
111+
sitemap:
112+
path: sitemap.xml

generate-overview.js

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
/**
2+
* 用于生成最佳实践页面的概览页
3+
*/
4+
var fs = require('fs');
5+
var path = require('path');
6+
var minify = require('html-minifier').minify;
7+
var BEST_PRACTICES_DATA = require('./source/_data/best-practices.json');
8+
9+
var args = process.argv.slice(2)
10+
var isProd = args.length > 0 && args[0] === 'prod';
11+
12+
var DATA = BEST_PRACTICES_DATA;
13+
var fileReadPath = path.resolve('source/_data/overview.html');
14+
var fileWritePath = path.resolve(`${isProd ? 'public' : 'source'}/best-practices/overview.html`);
15+
16+
var html = fs.readFileSync(fileReadPath, { encoding: 'utf8' });
17+
18+
var tabStr = '<div class="tab-wrapper"><div class="tab-inner">';
19+
20+
var tabContentStr = '<div class="tab-content-outter"><div class="tab-content-wrapper">';
21+
22+
for (var i = 0; i < DATA.length; i++) {
23+
var tab = DATA[i];
24+
var isIndex0 = i === 0;
25+
// 拼接 tab 字符串
26+
tabStr += `
27+
<div class="tab-item ${isIndex0 ? 'show' : ''}" data-index="${i}">
28+
${tab.sort}
29+
<span class="tab-indicator"></span>
30+
</div>
31+
`;
32+
// 拼接 tabContent 字符串
33+
tabContentStr += `<div class="tab-content ${isIndex0 ? 'show' : ''}">`;
34+
// list的长度大于6,添加 查看更多
35+
var list = tab.list;
36+
var len = list.length;
37+
var isOverSix = len > 6;
38+
if (isOverSix) {
39+
tabContentStr += `<div class="more-btn" data-index="${i}">查看更多</div>`;
40+
}
41+
// 遍历list
42+
for (var j = 0; j < len; j++) {
43+
var item = list[j];
44+
tabContentStr += `
45+
<a href="${item.link}">
46+
<div class="tab-content-item ${j >= 6 ? 'hide' : ''}">
47+
<img src="../images/best-practice/${item.image}" alt="">
48+
<div class="tab-content-inner">
49+
<div class="up">
50+
<span>${item.image_title}</span>
51+
</div>
52+
<div class="down">
53+
<div class="down-up">
54+
<h4>${item.title}</h4>
55+
<p>${item.introduction}</p>
56+
</div>
57+
<div class="down-down">
58+
<span>${item.author}</span>
59+
<span>${item.date}</span>
60+
</div>
61+
</div>
62+
</div>
63+
</div>
64+
</a>
65+
`;
66+
}
67+
var padNum = len % 3;
68+
padNum = padNum === 1 ? 2 : 1;
69+
for (var k = 0; k < padNum; k++) {
70+
tabContentStr += `<div class="tab-content-item none ${isOverSix ? 'hide' : ''}"></div>`;
71+
}
72+
tabContentStr += '</div>';
73+
}
74+
75+
tabStr += '</div></div>';
76+
tabContentStr += '</div></div>';
77+
78+
html = html.replace('<!-- TAB -->', tabStr).replace('<!-- TABCONTENT -->', tabContentStr);
79+
80+
fs.writeFileSync(fileWritePath, minify(html, {
81+
removeComments: true,
82+
collapseWhitespace: true,
83+
minifyJS: true,
84+
}));
85+
86+
console.log('success');

0 commit comments

Comments
 (0)