-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.xml
523 lines (455 loc) · 46.5 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>A simple blog</title>
<link>https://rileyng.github.io/</link>
<description>Recent content on A simple blog</description>
<generator>Hugo -- gohugo.io</generator>
<language>en</language>
<lastBuildDate>Fri, 10 May 2019 15:42:45 +0800</lastBuildDate>
<atom:link href="https://rileyng.github.io/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Hugo 博客 Rss 全文输出设置</title>
<link>https://rileyng.github.io/post/hugo-rss/</link>
<pubDate>Fri, 10 May 2019 15:42:45 +0800</pubDate>
<guid>https://rileyng.github.io/post/hugo-rss/</guid>
<description><p>因为平常就用 rss 订阅新闻的习惯,所以也想订阅一下自己的博客,even 这个主题直接在页面下面就有 rss 订阅链接的按钮。但是点进去之后发现输出的 rss 内容只有摘要的部分,这不正是我平常最反感的那类订阅吗(WTF)。所以&hellip;直接搜索一下解决方法吧。</p>
<h2 id="hugo-全文-rss-输出">Hugo 全文 RSS 输出</h2>
<p><a href="https://xuanwo.io/2018/04/08/hugo-rss-output-all-content/">这里</a>有一篇很好的解决方法。这个博客的博主相当厉害,令人感到羞愧。从他的博客里我学会了:</p>
<ol>
<li>RTFM is an initialism for the expression &ldquo;read the fucking manual&rdquo;.</li>
<li>增加全文 RSS:
在 <code>themes\even\layouts</code> 文件夹下新建一个 <code>index.rss.xml</code> 文件,内容为:</li>
</ol>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-xml" data-lang="xml"><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-xml" data-lang="xml"><span class="nt">&lt;rss</span> <span class="na">version=</span><span class="s">&#34;2.0&#34;</span> <span class="na">xmlns:atom=</span><span class="s">&#34;http://www.w3.org/2005/Atom&#34;</span><span class="nt">&gt;</span>
<span class="nt">&lt;channel&gt;</span>
<span class="nt">&lt;title&gt;</span>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}<span class="nt">&lt;/title&gt;</span>
<span class="nt">&lt;link&gt;</span>{{ .Permalink }}<span class="nt">&lt;/link&gt;</span>
<span class="nt">&lt;description&gt;</span>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}<span class="nt">&lt;/description&gt;</span>
<span class="nt">&lt;generator&gt;</span>Hugo -- gohugo.io<span class="nt">&lt;/generator&gt;</span>{{ with .Site.LanguageCode }}
<span class="nt">&lt;language&gt;</span>{{.}}<span class="nt">&lt;/language&gt;</span>{{end}}{{ with .Site.Author.email }}
<span class="nt">&lt;managingEditor&gt;</span>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}<span class="nt">&lt;/managingEditor&gt;</span>{{end}}{{ with .Site.Author.email }}
<span class="nt">&lt;webMaster&gt;</span>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}<span class="nt">&lt;/webMaster&gt;</span>{{end}}{{ with .Site.Copyright }}
<span class="nt">&lt;copyright&gt;</span>{{.}}<span class="nt">&lt;/copyright&gt;</span>{{end}}{{ if not .Date.IsZero }}
<span class="nt">&lt;lastBuildDate&gt;</span>{{ .Date.Format &#34;Mon, 02 Jan 2006 15:04:05 -0700&#34; | safeHTML }}<span class="nt">&lt;/lastBuildDate&gt;</span>{{ end }}
{{ with .OutputFormats.Get &#34;RSS&#34; }}
{{ printf &#34;<span class="nt">&lt;atom:link</span> <span class="na">href=</span><span class="s">%q</span> <span class="na">rel=</span><span class="s">\&#34;self\&#34;</span> <span class="na">type=</span><span class="s">%q</span> <span class="nt">/&gt;</span>&#34; .Permalink .MediaType | safeHTML }}
{{ end }}
{{ range first 10 (where .Data.Pages &#34;Section&#34; &#34;post&#34;)}}
<span class="nt">&lt;item&gt;</span>
<span class="nt">&lt;title&gt;</span>{{ .Title }}<span class="nt">&lt;/title&gt;</span>
<span class="nt">&lt;link&gt;</span>{{ .Permalink }}<span class="nt">&lt;/link&gt;</span>
<span class="nt">&lt;pubDate&gt;</span>{{ .Date.Format &#34;Mon, 02 Jan 2006 15:04:05 -0700&#34; | safeHTML }}<span class="nt">&lt;/pubDate&gt;</span>
{{ with .Site.Author.email }}<span class="nt">&lt;author&gt;</span>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}<span class="nt">&lt;/author&gt;</span>{{end}}
<span class="nt">&lt;guid&gt;</span>{{ .Permalink }}<span class="nt">&lt;/guid&gt;</span>
<span class="nt">&lt;description&gt;</span>{{ .Content | html }}<span class="nt">&lt;/description&gt;</span>
<span class="nt">&lt;/item&gt;</span>
{{ end }}
<span class="nt">&lt;/channel&gt;</span>
<span class="nt">&lt;/rss&gt;</span></code></pre></td></tr></table>
</div>
</div>
<p>这样我们就可以在 rss 订阅链接时获取到全文输出啦。具体的原理可以见<a href="https://xuanwo.io/2018/04/08/hugo-rss-output-all-content/">原博客</a>。</p>
<p>怀着对原博滔滔不绝的敬仰之情逛了一圈博客。发现原博竟然是人文院毕业的,却成为了一个如此优秀的程序员(我想马上原地自爆)。而且原博有优秀的探索精神,有良好的阅读文档的习惯。</p>
<h2 id="一些改动">一些改动</h2>
<p>因为添加了 About 界面,而在测试过程中发现 rss 会输出 About 界面的内容,因此查询了一下使用方法,原文对文章的选择是:
<code>{{ range first 10 .Data.Pages }}</code>,我在上面把它改成了:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-xml" data-lang="xml"><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-xml" data-lang="xml">{{ range first 10 (where .Data.Pages &#34;Section&#34; &#34;post&#34;)}}</code></pre></td></tr></table>
</div>
</div>
<p>这样,在生成 rss 输出的时候就只会选择 post 中的最新10篇文章。</p>
<h2 id="参考链接">参考链接</h2>
<ol>
<li><a href="https://xuanwo.io/2018/04/08/hugo-rss-output-all-content/">Hugo RSS 配置输出全文</a></li>
</ol></description>
</item>
<item>
<title>Hugo 添加评论系统 utterances</title>
<link>https://rileyng.github.io/post/hugo-utter/</link>
<pubDate>Thu, 09 May 2019 10:22:22 +0800</pubDate>
<guid>https://rileyng.github.io/post/hugo-utter/</guid>
<description><h2 id="评论系统">评论系统</h2>
<p>虽然博客没有什么人看,但是还是要添加一下评论系统嘛,这样如果博客有什么问题被人指出的话,也很方便交流。</p>
<p>我使用的 hugo 主题是 even,功能非常齐全,界面也很好看。在配置文件中我们可以看到 even 主题支持的评论系统有:disqus,畅言,来必力,gitment,gitalk 等等。</p>
<p>我的选择标准是:</p>
<ol>
<li>最好是国外服务,因为国内服务通常来说稳定性不够(可能开到一半就跑路不支持了),所以畅言就被排除了</li>
<li>支持 markdown,所以 disqus 和 来必力 就被排除在外了</li>
</ol>
<p>因此最终的选择就是基于 Github 的评论系统,even 支持的有 gitment, gitalk</p>
<h2 id="安全性问题">安全性问题</h2>
<p>最开始打算采用 gitment,但是仔细调查一番之后发现 gitment 存在一定的<a href="https://blog.wolfogre.com/posts/security-problem-of-gitment/">安全性问题</a>。主要有两点:</p>
<ol>
<li>gitment 需要把 Client ID、Client Secret 以明文形式写进前端代码里</li>
<li>注册时需要的权限过多,包括对所有公开仓库的读写权限</li>
</ol>
<p>具体的安全风险可以点击链接查看。</p>
<h2 id="utterances">utterances</h2>
<p>继续调研,发现一个非常好的开源的基于 Github 的评论系统:<a href="https://github.com/utterance/utterances">utterances</a>。</p>
<p>utterances 与 gitment 和 gitalk 的区别在于:</p>
<ol>
<li>utterances 只需要读写一个 repo 的权限</li>
<li>utterances 使用 bot 来初始化评论,比 gitment 更方便</li>
<li>utterances 对用户授权来说非常简单</li>
</ol>
<p>它的原理是,设置一个用于放评论的 repo,然后对博客中的每一篇文章都有一个 issue,每个人的评论放在里面。</p>
<p>但是 even 主题并不支持 utterances,所以需要我们手动整合进入主题。</p>
<h3 id="在even-主题中加入-utterances">在even 主题中加入 utterances</h3>
<p>首先需要去 Github 上新建一个 public repo,名字无所谓,我取的是 <code>blog-comment</code>,然后记下这个仓库名字,在博客中进行配置。</p>
<p>为了方便配置,我们把需要的参数都放在 <code>config.toml</code> 文件中,在该文件中加入:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-toml" data-lang="toml"><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-toml" data-lang="toml"><span class="p">[</span><span class="nx">params</span><span class="p">.</span><span class="nx">utter</span><span class="p">]</span>
<span class="nx">repo</span> <span class="p">=</span> <span class="s2">&#34;{githubName}/{repoName}&#34;</span>
<span class="nx">issueTerm</span> <span class="p">=</span> <span class="s2">&#34;title&#34;</span> <span class="c">#设置每篇文章对应的 issue 的名字,可选 pathname title url,</span>
<span class="nx">theme</span> <span class="p">=</span> <span class="s2">&#34;github-light&#34;</span></code></pre></td></tr></table>
</div>
</div>
<p>接着打开 <code>themes\even\layouts\partials</code> 文件夹,我们可以看到很多 html 模板,我们需要改动的是 <code>comments.html</code>,</p>
<p>文件内容的结构是非常清楚的,我们可以在 gitalk 下面加一个 utterances 的控制结构:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-html" data-lang="html"><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-html" data-lang="html">{{- if .Site.Params.utter.repo -}}
<span class="p">&lt;</span><span class="nt">div</span> <span class="na">id</span><span class="o">=</span><span class="s">&#34;utter-container&#34;</span><span class="p">&gt;&lt;/</span><span class="nt">div</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&#34;https://utteranc.es/client.js&#34;</span>
<span class="na">repo</span><span class="o">=</span> <span class="s">&#39;{{ .Site.Params.utter.repo }}&#39;</span>
<span class="na">issue-term</span><span class="o">=</span> <span class="s">&#34;{{ .Site.Params.utter.issueTerm }}&#34;</span>
<span class="na">theme</span><span class="o">=</span> <span class="s">&#39;{{ .Site.Params.utter.theme }}&#39;</span>
<span class="na">crossorigin</span><span class="o">=</span> <span class="s">&#34;anonymous&#34;</span>
<span class="na">async</span><span class="p">&gt;</span>
<span class="p">&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
{{- end }}</code></pre></td></tr></table>
</div>
</div>
<p>这样,我们就完成了 utterances 的配置。</p>
<h2 id="参考链接">参考链接</h2>
<ol>
<li><a href="https://www.xianmin.org/post/utterances-comment-system/">更好的基于 github issues 的评论系统——utterances</a></li>
<li><a href="https://blog.wolfogre.com/posts/security-problem-of-gitment/">Gitment 的安全性争议</a></li>
</ol></description>
</item>
<item>
<title>Hugo 博客使用 Travis CI 部署</title>
<link>https://rileyng.github.io/post/hugo-travis/</link>
<pubDate>Tue, 07 May 2019 10:38:37 +0800</pubDate>
<guid>https://rileyng.github.io/post/hugo-travis/</guid>
<description><p>由于 Hugo 没有像 Hexo 或者 Jekyll 那样和 Github Pages 集成,所以每次都需要手动生成 <code>public</code> 文件夹然后再部署到 Github Pages 的仓库。为了减少这种重复劳动,我开始寻找可以自动部署的方案,查到有两种:</p>
<ol>
<li>写一个脚本,每次发布文章时可以手动运行脚本来生成静态文件并部署</li>
<li>使用 Travis CI 来进行自动部署</li>
</ol>
<p>由于没有使用过 Travis CI ,想要尝试一下,而且写脚本来完成手动工作看起来还是没有 Travis CI 那么优雅,最终我选择了 Travis CI 作为解决方案。</p>
<h2 id="travis-ci-配置">Travis CI 配置</h2>
<p>Travis CI提供持续集成服务(Continuous Integration,简称 CI)。它可以绑定 Github 上面的项目,只要有新的代码,就会自动抓取。然后,提供一个运行环境,执行测试,完成构建,还能部署到服务器。<a href="https://travis-ci.org/">这里</a>是 Travis CI 的官网,用 Github 帐号注册登录。</p>
<p>为了给 Travis CI 接触 repo 的权限,首先去 Github -&gt; Developer settings -&gt; personal access tokens 中生成一个 token。因为是公开的,所以我们选择 <code>public_repo</code>,<code>repo:status</code>,<code>repo_deployment</code> 这三项权限即可。</p>
<p><strong>生成的 token 记得及时记录下来,因为之后就看不到了,而且千万不要泄漏</strong></p>
<p>在 Travis 的网站可以看到你的 repo,然后再选择 <code>{githubname}.github.io</code> 这个仓库,选择 <code>settings</code>,找到 <code>Environment Variables</code>,输入变量名:<code>GITHUB_TOKEN</code>和变量内容:<code>刚刚获取到的 token</code>。</p>
<p>然后我们的 Travis 设置就完成了。</p>
<h2 id="github-仓库设置">Github 仓库设置</h2>
<p>因为不想再开太多的博客相关的 repo,所以我选择在 <code>{githubname}.github.io</code> 下面新建一个 <code>hugo</code> 分支:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-git" data-lang="git"><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-git" data-lang="git">git checkout -b hugo</code></pre></td></tr></table>
</div>
</div>
<p>在这个分支中我们用来存储 Hugo 博客的代码,也就是上文中提到的 <code>mysite</code> 文件夹中的所有内容,所以我就直接复制了一下。</p>
<h3 id="travis-yml">.travis.yml</h3>
<p>Travis 要求项目的根目录下面,必须有一个 <code>.travis.yml</code> 文件。这是配置文件,指定了 Travis 的行为。该文件必须保存在 Github 仓库里面,一旦代码仓库有新的 Commit,Travis 就会去找这个文件,执行里面的命令。我的配置文件如下:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-yaml" data-lang="yaml"><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-yaml" data-lang="yaml">language<span class="p">:</span><span class="w"> </span>go<span class="w">
</span><span class="w">
</span><span class="w"></span>go<span class="p">:</span><span class="w">
</span><span class="w"> </span>-<span class="w"> </span><span class="s2">&#34;1.8&#34;</span><span class="w"> </span><span class="c"># 指定Golang 1.8</span><span class="w">
</span><span class="w">
</span><span class="w"></span><span class="c"># Specify which branches to build using a safelist</span><span class="w">
</span><span class="w"></span><span class="c"># 分支白名单限制: 只有hugo分支的提交才会触发构建</span><span class="w">
</span><span class="w"></span>branches<span class="p">:</span><span class="w">
</span><span class="w"> </span>only<span class="p">:</span><span class="w">
</span><span class="w"> </span>-<span class="w"> </span>hugo<span class="w">
</span><span class="w">
</span><span class="w"></span><span class="c"># install:</span><span class="w">
</span><span class="w"></span><span class="c"># # 安装最新的hugo</span><span class="w">
</span><span class="w"></span><span class="c"># - go get github.com/spf13/hugo </span><span class="w">
</span><span class="w"></span>install<span class="p">:</span><span class="w">
</span><span class="w"> </span>-<span class="w"> </span>uname<span class="w"> </span>-a<span class="w">
</span><span class="w"> </span>-<span class="w"> </span>wget<span class="w"> </span>https<span class="p">:</span>//github.com/gohugoio/hugo/releases/download/v0.<span class="m">55.4</span>/hugo_0.<span class="m">55.</span>4_Linux-64bit.deb<span class="w">
</span><span class="w"> </span>-<span class="w"> </span>sudo<span class="w"> </span>dpkg<span class="w"> </span>-i<span class="w"> </span>hugo<span class="cp">*.deb</span><span class="w">
</span><span class="w"> </span>-<span class="w"> </span>hugo<span class="w"> </span>version<span class="w">
</span><span class="w"> </span>-<span class="w"> </span>ls<span class="w">
</span><span class="w"> </span>-<span class="w"> </span>pwd<span class="w">
</span><span class="w">
</span><span class="w"></span>script<span class="p">:</span><span class="w">
</span><span class="w"></span><span class="c"># 运行hugo命令</span><span class="w">
</span><span class="w"> </span>-<span class="w"> </span>hugo<span class="w">
</span><span class="w">
</span><span class="w"></span>deploy<span class="p">:</span><span class="w">
</span><span class="w"> </span>provider<span class="p">:</span><span class="w"> </span>pages<span class="w"> </span><span class="c"># 重要,指定这是一份github pages的部署配置</span><span class="w">
</span><span class="w"> </span>skip-cleanup<span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="c"># 重要,不能省略</span><span class="w">
</span><span class="w"> </span>local-dir<span class="p">:</span><span class="w"> </span>public<span class="w"> </span><span class="c"># 静态站点文件所在目录</span><span class="w">
</span><span class="w"> </span>target-branch<span class="p">:</span><span class="w"> </span>master<span class="w"> </span><span class="c"># 要将静态站点文件发布到哪个分支</span><span class="w">
</span><span class="w"> </span>github-token<span class="p">:</span><span class="w"> </span>$GITHUB_TOKEN<span class="w"> </span><span class="c"># 重要,$GITHUB_TOKEN是变量,需要在GitHub上申请、再到配置到Travis</span><span class="w">
</span><span class="w"> </span><span class="c">#fqdn: blog.yuantops.com # 如果是自定义域名,此处要填</span><span class="w">
</span><span class="w"> </span>keep-history<span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="c"># 是否保持target-branch分支的提交记录</span><span class="w">
</span><span class="w"> </span>on<span class="p">:</span><span class="w">
</span><span class="w"> </span>branch<span class="p">:</span><span class="w"> </span>hugo<span class="w"> </span><span class="c"># 博客源码的分支</span></code></pre></td></tr></table>
</div>
</div>
<p>本来想要用 <code>go get github.com/spf13/hugo</code> 来获取最新的 hugo 版本,但是在 Travis 中不能这样获取,所以只能手动设置 hugo 的下载链接了,如果要修改使用的 hugo 版本的话,也需要以后手动修改 <code>.travis.yml</code> 文件中的下载链接。</p>
<p>配置完成之后,只要我们在 hugo 分支提交了 commit ,Travis 就能帮我们自动发布到博客上。如果要正式发布文章,记得设置 <code>draft: false</code>。</p>
<h2 id="参考链接">参考链接</h2>
<ol>
<li><a href="https://blog.yuantops.com/tech/hugo-travis-ci-auto-deploy-to-gh-pages/">Blog自动部署实践: Hugo + Travis CI -&gt; GitHub Pages</a></li>
<li><a href="https://mogeko.me/2018/028/">使用 Travis CI 自动部署 Hugo 博客</a></li>
<li><a href="https://axdlog.com/zh/2018/using-hugo-and-travis-ci-to-deploy-blog-to-github-pages-automatically/">利用Travis CI和Hugo將Blog自動部署到Github Pages</a></li>
</ol></description>
</item>
<item>
<title>Hugo 的安装与 Github Pages 部署</title>
<link>https://rileyng.github.io/post/hugo/</link>
<pubDate>Mon, 06 May 2019 22:03:59 +0800</pubDate>
<guid>https://rileyng.github.io/post/hugo/</guid>
<description><h2 id="hugo-的安装和使用">Hugo 的安装和使用</h2>
<h3 id="安装">安装</h3>
<p>首先安装 Hugo</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-shell" data-lang="shell"><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-shell" data-lang="shell">brew install hugo</code></pre></td></tr></table>
</div>
</div>
<p>然后用 Hugo 创建一个新的网页文件夹。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-shell" data-lang="shell"><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-shell" data-lang="shell">hugo new site mysite</code></pre></td></tr></table>
</div>
</div>
<p>运行结束后可以看到 <code>mysite</code> 的文件结构:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></pre></td>
<td class="lntd">
<pre class="chroma">├── archetypes
├── config.toml
├── content
├── data
├── layouts
├── static
└── themes</pre></td></tr></table>
</div>
</div>
<p>其中:
* themes: 主题文件夹
* static: 储存图片之类的静态文件,该目录下的文件会直接拷贝到/public,该文件夹的优先级高于主题下的/static文件夹
* content: 网站的所有内容
* config.toml: 配置文件
* archetypes: 存储生成<code>.md</code>时候的模板文件,优先级高于主题下的 <code>archetypes</code> 文件夹。</p>
<h3 id="主题">主题</h3>
<p>接着选择一个合适的主题,Hugo 的主题可以在<a href="https://themes.gohugo.io/">这里</a>挑选。将主题文件下载到 <code>mysite/themes</code>文件夹中,可以直接在这个文件夹中<code>git clone</code>,记得修改文件夹的名称为主题名,不然默认是<code>hugo-theme-主题名</code>。以 even 主题为例:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-shell" data-lang="shell"><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-shell" data-lang="shell">git clone [email protected]:olOwOlo/hugo-theme-even.git even</code></pre></td></tr></table>
</div>
</div>
<p>在主题文件夹下会有一个 <code>exampleSite</code> 文件夹,其中的 <code>config.toml</code> 文件可以作为配置参考。我一般直接将这个文件覆盖 <code>mysite/config.toml</code> 再进行修改。主要是修改网站的标题,中英文等等,还有就是进行一些配件的设置,比如评论功能的选择,Google Analytics 的设置等。</p>
<p>由于 even 主题默认没有 About 界面,所以我在配置文件中增加了:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-toml" data-lang="toml"><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-toml" data-lang="toml"><span class="p">[[</span><span class="nx">menu</span><span class="p">.</span><span class="nx">main</span><span class="p">]]</span>
<span class="nx">name</span> <span class="p">=</span> <span class="s2">&#34;About&#34;</span>
<span class="nx">weight</span> <span class="p">=</span> <span class="mi">50</span>
<span class="nx">identifier</span> <span class="p">=</span> <span class="s2">&#34;about&#34;</span>
<span class="nx">url</span> <span class="p">=</span> <span class="s2">&#34;/about/&#34;</span></code></pre></td></tr></table>
</div>
</div>
<p>所以我们在 <code>content</code> 文件夹下新建一个名为 <code>about</code> 的目录,再新建一个 <code>index.md</code>,这里的内容就是 About 界面的内容了。</p>
<h3 id="新增文章">新增文章</h3>
<p>新增文章不需要我们手动去新建一个<code>.md</code>文件,只需要在<code>mysite</code>目录下使用命令:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-shell" data-lang="shell"><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-shell" data-lang="shell">hugo new post/my-first-post.md</code></pre></td></tr></table>
</div>
</div>
<p>这样 hugo 会自动在 <code>content/post</code> 文件夹中新建一个 <code>my-first-post.md</code> 文件,文件内容按照 <code>archetypes</code> 里的模板文件来组织。</p>
<p>通常模板文件有以下内容:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-yaml" data-lang="yaml"><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-yaml" data-lang="yaml">---<span class="w">
</span><span class="w"></span>title<span class="p">:</span><span class="w"> </span><span class="s2">&#34;{{ replace .TranslationBaseName &#34;</span>-<span class="s2">&#34; &#34;</span><span class="w"> </span><span class="s2">&#34; | title }}&#34;</span><span class="w"> </span><span class="c">#默认是文件名字作为标题</span><span class="w">
</span><span class="w"></span>date<span class="p">:</span><span class="w"> </span>{{<span class="w"> </span>.Date<span class="w"> </span>}}<span class="w"> </span><span class="c"># 创建日期</span><span class="w">
</span><span class="w"></span>lastmod<span class="p">:</span><span class="w"> </span>{{<span class="w"> </span>.Date<span class="w"> </span>}}<span class="w"> </span><span class="c">#最后修改日期,这个需要在配置中开启 enableGitInfo</span><span class="w">
</span><span class="w"></span>draft<span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="c"># 是否为草稿</span><span class="w">
</span><span class="w"></span>keywords<span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w">
</span><span class="w"></span>description<span class="p">:</span><span class="w"> </span><span class="s2">&#34;&#34;</span><span class="w">
</span><span class="w"></span>tags<span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w">
</span><span class="w"></span>categories<span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w">
</span><span class="w"></span>author<span class="p">:</span><span class="w"> </span><span class="s2">&#34;&#34;</span><span class="w">
</span><span class="w"></span>---</code></pre></td></tr></table>
</div>
</div>
<p>然后就可以愉快地开始用 Markdown 写内容啦。</p>
<p>如果开启了评论功能的话,可以在某些界面根据需求关闭,比如我在 About 界面中设置了以下选项:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-yaml" data-lang="yaml"><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-yaml" data-lang="yaml">comment<span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span><span class="w"></span>toc<span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span><span class="w"></span>autoCollapseToc<span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span><span class="w"></span>postMetaInFooter<span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span><span class="w"></span>hiddenFromHomePage<span class="p">:</span><span class="w"> </span><span class="kc">false</span></code></pre></td></tr></table>
</div>
</div>
<h3 id="运行">运行</h3>
<p>在本地预览运行 hugo:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-shell" data-lang="shell"><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-shell" data-lang="shell">hugo server -t even -D</code></pre></td></tr></table>
</div>
</div>
<p>这里的 <code>-t</code> 用于选择 hugo 的主题,<code>-D</code> 代表在本地显示草稿文件。草稿文件就是在开头有<code>draft: true</code>的文件。然后访问 <code>http://localhost:1313/</code> 就可以看到博客啦。</p>
<h2 id="部署到-github-pages">部署到 Github Pages</h2>
<p>Github Pages 就不多说了,可以很方便地部署静态博客。在 Github 中先开一个 <code>{githubname}.github.io</code> 的 repo,然后把网站的静态文件放进去即可。</p>
<p>hugo 生成静态 <code>public</code> 文件:在 <code>mysite</code> 文件夹运行 <code>hugo</code> 命令即可得到一个 <code>public</code> 文件夹,将这个文件夹里的所有内容放到 Github 的相应 repo 里即可。<strong>注意把 <code>config.tmol</code> 里的 baseURL 设置成你的 Github Pages 链接</strong> (我最开始忘记了,然后很多资源就渲染不出来= =)</p></description>
</item>
</channel>
</rss>