GitHub Actions를 사용하여 Hugo 블로그를 GitHub Pages 및 Gitee에 자동으로 배포합니다
배경 소개
블로그 업데이트 중 Travis 서비스가 작동하지 않는 것을 발견했는데, Travis 웹페이지를 확인해보니 소스 코드 가져오기 단계에서 멈춰있었습니다. 그때 GitHub에서 출시한 Action 서비스가 떠올랐습니다.
비교적 바쁠 것 같고, 사용하려면 신청도 해야 해서, 지금부터 정식으로 출시되었으니 주말에 시간 나면 새로운 장난감을 한번 해볼까요?
공식 자료는 웹사이트에서 직접 확인하시면 되고, 이 글은 더 이상 인용하지 않겠습니다. 이전부터 Kubernetes를 사용해 보신 분들은 action의 YAML 파일 설정이 Kubernetes와 비슷하다고 느끼실 겁니다.
阮一峰的博客을 검색해 보세요. 두 개의 기사가 있는데, 첫 번째는 기초 문법 소개이고, 두 번째는 실제 사례입니다.
본문
필요한 지식점
- github secrets
- 행동 구문
기존 컴포넌트를 활용하여 핵심 작업이 완료되었고, 명령어를 사용하여 국내 gitee에 푸시했습니다. 명령어 부분은 다소 거칠며 강제 푸시 방식으로 구현되어 있으며, travis 사용 로직을 이어받았습니다.
name: github pages and gitee pages
on:
push:
branches:
- hugo
jobs:
deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: 'latest'
extended: true
- name: Build Github and Gitee ## 单个step只能写一个run命令
run: hugo -b "https://www.xiangtianlong.com/" -d "github_public" && hugo -b "https://www.xiangtianlong.com/" -d "gitee_public" && ls
- name: Deploy Github
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.BLOG_TOKEN }}
publish_dir: ./github_public
publish_branch: master
cname: xiangtianlong.com
- name: Deploy Gitee
run: cd ./gitee_public && git init && git config user.name "TianlongXiang" && git config user.email "[email protected]" && git add . && git commit -m "Update TianlongXiang's Blog" && git push --force "https://xiangtianlong:${{ secrets.GITEE_PASSWORD }}@gitee.com/xiangtianlong/xiangtianlong.git" master:master
사후기
공식 시장에서 제공하는 기능들을 보면 현재 지원되는 플레이 방식이 꽤 많고, Docker 이미지 빌드 후에는 더 이상 Docker Hub의 서비스를 의존하지 않아도 된다
Hugo 이슈를 확인해 보니, GitHub Actions을 사용하여 Git Pages를 자동 배포하려면 최종적으로 게시되는 웹 페이지가 master 브랜치에 있어야 합니다. 다른 브랜치에 배포하면 설정 인터페이스에서 GitHub가 배포된 웹 페이지에 구문 오류가 있다는 것을 알립니다.
실제로 hugo의 원본 파일이 master 브랜치에 위치하여 github가 jelly 블로그 소스 코드로 간주하고 검사를 진행하면서, 검사 및 통과 실패로 인한 오류가 발생한 것입니다
솔루션도 간단합니다. Hugo 소스 파일은 다른 분기에 두고, 정적 파일은 master 분기를 통해 배포하면 됩니다.