經過issues
來寫博客文章,並自動部署到gh-page
。html
html
輸出等。acyort
的插件,用來拉取issues
數據並進行處理,處理完後將對應模板進行渲染。repo::public_repo
repo
並建立 circleci token(須要保存下來)circleci
中對應項目加入variable
.repo
中添加webhook
issues
gh-pages
有兩種形式, 具體請看官方說明:node
以username.github.io
命名的項目,是分配給每一個用戶的user page
。linux
另外一種是prject page
, 各項目中經過gh-pages
分支或者經過docs
文件夾所生成的gh-pages
。git
不管、以何種方式來創建起gh-pages
均可以。github
可是若是以username.github.io
來建立的話,內容只能放在master
分支,並不能像其餘repo
同樣經過gh-pages
或者docs
文件夾生成。web
下面統一用username.github.io
來建立gh-pages
docker
username.github.io
的repo
,負責接收生成後的html
內容, 並生成user page
。blog-config
(名字隨意),用來管理blog
配置,以及issues
管理。兩個token
都要自行保存, 關閉就找不回來。json
github tokenapi
申請一個具備寫權限的github token,scope
選擇repo::public_repo
, 用於將生成後的文件經過api
直接push
到該項目中。bash
circleci token
申請一個circleci token, 用來經過webhook
來觸發circle build
。
在blog-config
中,建立如下文件:
|-.circleci
|- config.yml // circleCi 的配置文件
|-config.yml // acyort 配置文件
|-package.json // 這個不用說
複製代碼
package.json
{
"name": "blog name",
"version": "1.0.0",
"description": "blog",
"main": "index.js",
"scripts": {
"deploy": "acyort flow"
},
"dependencies": {
"acyort": "^3.1.1",
"acyort-donob-renderer": "^1.5.0",
"acyort-plugin-fetch-issues": "^1.3.1",
"acyort-plugin-rss": "^1.5.0",
"acyort-templates-donob-plus": "^1.5.1",
"gh-pages": "^2.0.1"
}
}
複製代碼
config.yml(acyort 配置文件)
title: blog name # 博客名稱
description: blog desc # 博客簡介
url: http://username.github.io # 博客url
template: acyort-templates-donob-plus
menu:
Archives: /archives/
Tags: /tags/
repository: username/blog-config # 寫 issues 的項目
public: public
timezone: Asia/Shanghai
plugins:
- acyort-plugin-fetch-issues
- acyort-donob-renderer
複製代碼
.circleci/config.yml
# 注意這個文件名爲 config.yml,在 .circleci 目錄下
version: 2
jobs:
build:
docker:
- image: node:latest
working_directory: ~/acyort
branches:
only:
- master
steps:
- checkout
- restore_cache:
keys:
- yarn-packages-{{ checksum "yarn.lock" }}
- run: yarn install
- save_cache:
name: Save Yarn Package Cache
key: yarn-packages-{{ checksum "yarn.lock" }}
paths:
- ~/.cache/yarn
- run: yarn deploy
- run: git config user.name "" # 你的 github username
- run: git config user.email "" # 你的 github email
- run: npx gh-pages -d public -r https://${gh_token}@github.com/username/username.github.io.git -b master -m "Updated by circleci - `date`" # ${gh_token}, 這個token就是具備寫權限的github token, 會在 circleci 配置。
複製代碼
blog-config
項目加入到circleci
中。linux
和node
環境。start build
, 此時應該是fail
的, 由於gh_token
還未加入到環境變量中。Job
, 找到blog-config
項目, 點擊設置BUILD SETTINGS
中找到Environment Variables
Add variable
name
爲gh_token
(這裏名字要跟config.yml
中${gh_token}
同樣), value
填入剛剛申請到的gh-token
。circleci
項目中, 點擊上一次的build fail
條目, 右上角有rebuild
build
, 而且username.github.io
這個倉庫也有對應文件。回到blog-config
項目中配置
settings
webhook
Add webhook
Payload URL
填入'https://circleci.com/api/v1.1/project/github/:username/:project/tree/:branch?circle-token=:token' (自行替換相應字段), 其中:token
是從circleci
中申請的token
)Content-Type
選擇application/json
let me select xxx
, 並勾選issues
選項save
至此博客已經算搭建完成,只須要在blog-config
寫issues
, 就會同步部署到gh-pages
。
更多配置請參考