자동 통합 시스템 전환

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 분기를 통해 배포하면 됩니다.

금융 IT 프로그래머의 이것저것 만지작거리기와 일상의 중얼거림
Hugo로 만듦
JimmyStack 테마 사용 중