利用AppVeyor做GithubIO的CI

建立两个仓库

我基于hexo搭建的github.io,在更换电脑时无法随意的提交blog。(因每个机器都需要部署node+hexo的环境)
于是,我将我的github.io建立两个仓库。

  • master仓库(hexo generate后生成的html等文件)
  • hexo仓库(原始文件,包含md文档及主题等)

并将hexo仓库设置为这个repo的主仓库。

AppVeyor

appveyor是支持windows OS做CI的持续集成工具,可以使用GitHub账号登陆。绑定我的github.io项目。

添加appveyor.yml到Source Repo

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
clone_depth: 5

environment:
access_token:
secure: [Your Github Access Token]

install:
- ps: Install-Product node 6 #因为我的hexo是3.71的版本,因此需要安装node 6
- node --version
- npm --version
- npm install
- npm install hexo-cli -g


build_script:
- hexo generate

artifacts:
- path: public

on_success:
- git config --global credential.helper store
- ps: Add-Content "$env:USERPROFILE\.git-credentials" "https://$($env:access_token):x-oauth-basic@github.com`n"
- git config --global user.email "%GIT_USER_EMAIL%"
- git config --global user.name "%GIT_USER_NAME%"
- git clone --depth 5 -q --branch=%TARGET_BRANCH% %STATIC_SITE_REPO% %TEMP%\static-site
- cd %TEMP%\static-site
- del * /f /q
- for /d %%p IN (*) do rmdir "%%p" /s /q
- SETLOCAL EnableDelayedExpansion & robocopy "%APPVEYOR_BUILD_FOLDER%\public" "%TEMP%\static-site" /e & IF !ERRORLEVEL! EQU 1 (exit 0) ELSE (IF !ERRORLEVEL! EQU 3 (exit 0) ELSE (exit 1))
- git add -A
- git commit -m "Update Static Site" && git push origin %TARGET_BRANCH% && appveyor AddMessage "Static Site Updated"

在GitHub生成好Access Token之后,你需要到AppVeyor加密页面把Access Token加密之后再替换[Your GitHub Access Token]。
github-access-token
github-webhook

设置Appveyor的settings

appveyor-setting1
在Appveyor Settings的Environment里设置以下四个变量。STATIC_SITE_REPO就是github Repo的地址,TARGET_BRANCH是Repo的目标branch(这里是master,相当于提交编译后的html等文件至master),GIT_USER_EMAIL和GIT_USER_NAME就是你GitHub账号的信息。
appveyor-setting2
在Appveyor Settings的build里默认是MSBUILD,因为是appveyor.yml中配置的脚本来build的,因此这里改成SCRIPT。
appveyor-setting3

整体逻辑

本地在hexo的分支下写md文档,提交至github上,触发AppVeyor的webhook,AppVeyor会git clone下hexo的最新代码,并且build成目标文件,将目标文件push至master分支。则完成了整体刷新页面,持续部署的工作了。
可以在线监控build的状况:
appveyor-build-log

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2021 小白兔
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信