Travis CI를 이용한 Github Pages + Hexo 블로그 자동 배포하기

이 글은 Github Pages를 이용한 개인 블로그를 구축할 때, 매번 배포하는 번거로움을 줄이는 방법을 다룹니다.

상황

Github Pages와 Hexo는 매우 좋은 조합입니다. Hexo를 설치하고, Hexo Themes페이지에서 적절한 테마를 골라 설정만 하면 괜찮은 블로그를 구축할 수 있습니다.

문제점

Hexo는 좋은 툴을 많이 제공하고 있지만, 글을 매번 쓸 때마다 아래 과정을 터미널에서 해주어야합니다.

$ hexo clean
$ hexo generate
# hexo-deployer-git을 이용합니다.
# https://github.com/hexojs/hexo-deployer-git
$ hexo deploy

해결방법

위 배포 과정이 정상적으로 작동한다고 정합니다. Travis CI를 이용해 새로운 commit이 source branch에 추가되면 자동으로 세가지 (clean, generate, deploy) 과정 대신 처리합니다.

# .travis.yml
language: node_js
node_js:
- "9"
# Hexo source 코드는 source branch에서 작업되고 있어야합니다.
branches:
only:
- source
before_install:
- npm install -g hexo
install:
- npm install
# 주의: 'YOUR NAME'와 'YOUR EMAIL'를 변경해야합니다.
before_script:
- git config --global user.name 'YOUR NAME'
- git config --global user.email 'YOUR EMAIL'
- sed -i "s/__GITHUB_TOKEN__/${__GITHUB_TOKEN__}/" _config.yml
# 블로그를 빌드 후 배포합니다.
script:
- hexo clean
- hexo generate
- hexo deploy
# _config.yml# 기타 Hexo 설정...# Deployment
## Docs: https://hexo.io/docs/deployment.html
# 주의: <YOUR NAME>, <COMMIT MESSAGE>와 <YOUR EMAIL>를 변경해야합니다.
deploy:
type: git
repo: https://__GITHUB_TOKEN__@github.com/<USER NAME>/<USER NAME>.github.io
branch: master
message: "<COMMIT MESSAGE>"

더 생각해 볼 것들

문서를 작성하고 git 명령어인 add, commit, push 명령어는 아직 자동화하지 않았습니다.

gitpush() {
git add .
git commit -m "$*"
git push
}
alias gp=gitpush

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store