Github Page(Jekyll) 에서 Netlify(Hugo)로 변경한 후기 feat. Github Action.

1월 16일에 있었던 DevOps Korea 밋업에 참가한 후 Github Action에 대한 막막함이 뚫리는 경험을 했다. 이 경험은 금요일 그리고 상대적으로 일이 적은 날이었기에 당당하게 블로그를 변경하는 작업에 착수 했다. 기존에는 Github Page(Jekyll)로 구성되어있었지만, 포스트가 40여가가 넘어가면서 점차 느려지는 것을 감지할 수 있었다. 작년 여름이 끝날 무렵부터 시작한 쿠버네티스 한글화에 참여하면서 Hugo 와 Netlify에 관심을 가지고 있었고, 최근에 Github Action이 출시되면서 전환할 기회만 가지고 있던 터였다.

테마는 Hugo 공식사이트에서 적당한 것을 골랐고, Github Actions를 이용해서 배포하기 떄문에 민감할 수 있는 테마의 상세 설정 정보와 시크릿 키 값과 같은 중요한 것을 숨기기 위해 Private 저장소로 생성했다. 이후에는 “워드프레스에서 Gridsome으로 블로그 이전후 깃헙 액션을 통해 넷틀리파이에서 호스팅하기”이 글과 어제의 발표된 내용을 토대로 만져보았다. 그래서 첫번째 workflow가 작성되었고 매우 성공적으로 잘 배포가 되면서 곧바로 전체 이전을 시작했다.

name: Publish Static Web App(Hugo) to Netlify
on:
push:
branches:
- master
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v1
- name: Checkout Submodule repo
shell: bash
run: |
git clone https://github.com/xiaoheiAh/hugo-theme-pure.git themes/pure
- name: Install netlify CLI
shell: bash
run: |
sudo npm install -g netlify-cli
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: 'latest'
extended: true
- name: Build Site
shell: bash
run: |
hugo --minify
- name: Deploy
shell: bash
run: |
netlify deploy -d ./public -p -s secrets.NETLIFYSITEIDa{{ secrets.NETLIFY_AUTH_TOKEN }}
view raw main.yml hosted with ❤ by GitHub

위 코드의 문제는 중간에 실패했을 떄의 알람은 온전히 수동으로 찾는 등의 수고가 필요 했다. 그래서 여러 알람수단을 찾다보니 가장 만만하고 쉬운 Telegram을 이용하기로 했다. 그래서 다음과 같이 코드가 나오게 되었다.

name: Publish Static Web App(Hugo) to Netlify
on:
push:
branches:
- master
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v1
- name: Checkout Submodule repo
shell: bash
run: |
git clone https://github.com/xiaoheiAh/hugo-theme-pure.git themes/pure
- name: Send Start message
uses: appleboy/telegram-action@master
with:
to: ${{ secrets.TELEGRAM_TO }}
token: ${{ secrets.TELEGRAM_TOKEN }}
message: |
Build and Deploy Start
- name: Install netlify CLI
shell: bash
run: |
sudo npm install -g netlify-cli
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: 'latest'
extended: true
- name: Build Site
shell: bash
run: |
hugo --minify
- name: Deploy
shell: bash
run: |
netlify deploy -d ./public -p -s secrets.NETLIFYSITEIDa{{ secrets.NETLIFY_AUTH_TOKEN }}
- name: Send End message
uses: appleboy/telegram-action@master
with:
to: ${{ secrets.TELEGRAM_TO }}
token: ${{ secrets.TELEGRAM_TOKEN }}
message: |
Build and Deploy End. Check Site!
view raw main.yml hosted with ❤ by GitHub

무언가 아주 약간 답답함이 사라지고, 한결 나아질 수 있었다. 하지만, 여전히 빌드의 문제가 아니라, 빌드 후 배포에서 아직은 브레이크를 걸 수 있는 부분이 없기 떄문에 불편한 점이 일부 있다. 물론, Azure DevOps를 사용한다는 방법도 있겠지만, “포스트를 작성한다 -> git push 한다 -> workflow를 거친다 -> 끝” 의 간결함을 채울 수 없다는 점이다. 그리고 관리 또한 간편하기 때문에 테마룰 바꾸는 일을 하지 않는한 이 형태로 계속 운영할 것으로 생각한다.