進入AppVeyor官網,遊客會跳轉到 /login
頁,這裏能夠註冊,也可使用 GitHub
帳號受權登錄。node
在 /projects
頁面選擇你的博客源碼倉庫git
點擊項目中 SETTINGS
選項卡,若是項目分支不是默認的,修改 Default branch
。github
再點擊 Environment
欄目,設置4個環境變量:npm
name | value |
---|---|
STATIC_SITE_REPO | 靜態頁面的倉庫地址 |
TARGET_BRANCH | 編譯後文件存放的分支 |
GIT_USER_EMAIL | Github用戶郵箱 |
GIT_USER_NAME | Github用戶名 |
設置好後點擊 Save
保存。hexo
打開 GitHub
我的設置app
點擊 Developer settings
欄目,再點擊 Personal access tokens
選項卡,能夠看到已有的Token,這裏點擊 Generate new token
按鈕建立一個博客專用的token。ui
能夠參考官方文檔加密
因爲這個AccessToken能夠直接操做你的倉庫的,並且配置文件是公開的,因此這時就要求對AccessToken進行加密。可到AppVeyor Token加密頁面進行加密。把加密後的字符串填入下一步中的配置文件裏。spa
在項目中新建 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到目標分支。