使用AppVeyor持續集成博客

建立AppVeyor帳號

進入AppVeyor官網,遊客會跳轉到 /login 頁,這裏能夠註冊,也可使用 GitHub 帳號受權登錄。node

建立CI項目

/projects 頁面選擇你的博客源碼倉庫git

配置CI項目

點擊項目中 SETTINGS 選項卡,若是項目分支不是默認的,修改 Default branchgithub

再點擊 Environment 欄目,設置4個環境變量:npm

name value
STATIC_SITE_REPO 靜態頁面的倉庫地址
TARGET_BRANCH 編譯後文件存放的分支
GIT_USER_EMAIL Github用戶郵箱
GIT_USER_NAME Github用戶名

設置好後點擊 Save 保存。hexo

獲取AccessToken

打開 GitHub 我的設置app

點擊 Developer settings 欄目,再點擊 Personal access tokens 選項卡,能夠看到已有的Token,這裏點擊 Generate new token 按鈕建立一個博客專用的token。ui

能夠參考官方文檔加密

加密AccessToken

因爲這個AccessToken能夠直接操做你的倉庫的,並且配置文件是公開的,因此這時就要求對AccessToken進行加密。可到AppVeyor Token加密頁面進行加密。把加密後的字符串填入下一步中的配置文件裏。spa

配置CI

在項目中新建 appveyor.yml 文件,用於配置持續集成的命令3d

clone_depth: 5

environment:
    access_token:
        secure: # 本身的加密token
install:
    - ps: Install-Product node 6.9 # 默認node版本太老
    - 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倉庫的當前分支拉取下來,編譯成靜態文件後,在push到目標分支。因爲AppVeyor環境中是經過Access Token訪問咱們的倉庫的,而Hexo自帶的部署則在訪問的過程當中須要咱們輸入賬號密碼,因此 Hexo g -d 的命令就不適合在這裏使用。須要先編譯成靜態文件,再把public文件夾的靜態文件push到目標分支。

完成

相關文章
相關標籤/搜索