Github Actions를 이용하여 Hexo 블로그 배포하기

기존의 Travis-CI를 이용하여 Hexo 블로그를 배포하기 위해,

ChangJoo Park님의 포스팅인 Travis CI를 이용한 Github Pages + Hexo 블로그 자동 배포하기를 참고하여 아래와 같은 YAML 파일을 작성하여 Travis CI 서비스를 이용해서 배포하였습니다.

기존의 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# .travis.yml
language: node_js
node_js:
- "10"
# Hexo source 코드는 master branch에서 작업되고 있어야합니다.
branches:
only:
- master
before_install:
- npm install -g hexo
install:
- npm install
before_script:
- git config --global user.name "INPUT_YOUR_USER_NAME"
- git config --global user.email "INPUT_YOUR_EMAIL"
- sed -i "s/__GITHUB_TOKEN__/${__GITHUB_TOKEN__}/" _config.yml
# 블로그를 빌드 후 배포합니다.
script:
- hexo clean
- hexo generate
- hexo deploy

Github에서 자체적으로 Github Actions라는 기능을 베타로 제공중이여서 신청을 해두었고,

어제 승인되어 repo에 아래 이미지와 같은 탭이 생겼습니다.🎉

해당 기능을 이용해 보기 위해 travis.yml 파일을 Github Actions에 맞게 아래와 같이 바꾸어보았습니다.

변경사항


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
33
34
35
36
37
38
39
40
41
# .github/workflows/hexo-deploy.yml

name: Node CI

on:
push:
branches:
- master

jobs:
build:

runs-on: ubuntu-latest

strategy:
matrix:
node-version: [12.x]

steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Hexo-Cli Install
run: npm i -g hexo
- name : Change Environment
env:
GITHUB_TOKEN: "INPUT_YOUR_GITHUB_ACCECSS_TOKEN"
run: |
git config --global user.name "INPUT_YOUR_USER_NAME"
git config --global user.email "INPUT_YOUR_EMAIL"
sed -i "s/__GITHUB_TOKEN__/${GITHUB_TOKEN}/" _config.yml
- name: NPM Install
run: npm install
- name: Hexo Clean
run: hexo clean
- name: Hexo Generate
run: hexo g
- name: Hexo Deploy
run: hexo d

Github Actions문서에 따르면 기존의 Secret Config 부분은 repo의 아래의 탭에서 지정이 가능합니다.

해당 Secrets를 사용시에는 사용하려는 step에서 with 키워드를 이용해 설정하거나, env 를 이용해서 아래와 같이 설정 할 수 있습니다.

1
2
3
4
5
6
steps:
- name: Test Set Secret With
with: ${{ secrets.YOUR_SECRET }}
- name: Test Set Secret Env
env:
my_secret : ${{ secrets.YOUR_SECRET }}

사담


Github Actions는 이미 만들어진 환경을 사용 할 수도 있고, Github Repo에 있는 도커 스크립트를 이용할 수도 있는것으로 보입니다.

1
2
3
4
5
6
steps:    
- uses: actions/setup-node@74bc508 # 특정 커밋을 지정
- uses: actions/setup-node@v1.0 # 특정 릴리즈 버전 지정
- uses: actions/setup-node@master # 브랜치 지정
- uses: docker://alpine:3.8 # Docker Hub에서 제공하는 이미지와 태그 지정
- uses: ./.github/actions/my-action # 해당 repo 안에 정의된 파일 지정

또한, if 제어문도 사용이 가능하고, 쉘을 선택하여 처리한다거나 Cron-Job등이 사용가능하고

jobs..strategy.matrix를 활용하여 os와 실행환경(ex. node | php) 버전을 조합하여 빌드 테스트가 가능하다고 합니다.

1
2
3
4
5
6
7
8
9
runs-on: ${{ matrix.os }}
strategy:
matrix:
node: [6, 8, 10]
os: [ubuntu-16.04, ubuntu-18.04]
steps:
- uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node }}

이와 같이 정의할 경우에는 3개의 노드버전과 2개의 os 버전을 조합하여 6가지의 job이 실행됩니다.

이외에도 다양한 기능을 제공하여 깃허브를 이용하고 있다면 한번쯤은 이용해봐도 좋을 서비스라고 생각합니다.

[Hexo]블로그 주소를 바꾸었어요!

이번에도 Gracefullight님의 제안으로, dev 도메인을 구매하기로 하였습니다.

기존의 아이디를 사용하여 khzero.dev를 쓸까 하다가,

이왕 구매하는거 깃허브 아이디도 바꾸고, 도메인도 맞춰서 사자!

라고 생각을 했었습니다…그때 멈췄어야 했는데요…

[Hexo]TravisCI로 블로그 자동 배포시 겪은 문제

WARN No layout 자동 배포를 했더니 빈 파일들만 올라가요!!

한줄 요약 : theme 폴더를 레포지토리에 추가하시면됩니다.

아래의 내용은 해당 원인을 찾아가던 본인의 경험담입니다…


블로그를 직접 만드는데, 시간을 투자하는것 보다 포스팅을 하는게 더 가치 있겠다 싶어

현재 블로그를 Hexo + Github Page를 이용하여 운영하고 있습니다

기존에는 배포를 Hexo-cli를 이용하여 아래와 같은 명령어를 사용하여 배포 했습니다.

1
2
3
$ hexo clean
$ hexo generate
$ hexo deploy

쉘에서 해당 명령어를 작성하는것 또한 귀찮아져서 package.json 파일을 이용하여,

1
2
3
4
5
6
7
8
/*
* package.json
*/
{
"scripts": {
"deploy": "hexo clean && hexo d -g"
}
}

해당 스크립트를 작성해서 npm deploy명령어로 배포를 하고, 소스는 별도의 레포지토리에 관리하고 있었습니다.

[Hexo] 명령어 정리

Hexo 명령어 정리


# 초안 생성

명령어

1
$ hexo new draft [파일명]

예제

1
$ hexo new draft hello-world
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×