自動統合システム切り替え

GitHub Actions を使用して、Hugo ブログを GitHub Pages と Gitee に自動デプロイします。

背景説明

ブログを更新した昨日、Travisのサービスが利用できないことに気づきました。Travisのウェブページを確認すると、ソースコードの取得で処理が止まっており、ふとGitHubが以前発表したActionsサービスのことを思い出しました。

その頃は色々用事ができそうだし、アクションを使うには申請が必要なので、今は正式にリリースされたばかりです。週末に時間があったら、新しいおもちゃを試してみるか?

公式資料は各自ウェブサイトでご確認ください。本文ではこれ以上の転載はいたしません。以前Kubernetesをご利用の方は、actionのYAMLファイル設定がKubernetesに似ていると感じるかもしれません。

中国語の入門チュートリアル、あるいは紹介資料についてですが、阮一峰的博客を検索することをお勧めします。2つの記事があり、1つ目は基本的な文法解説で、2つ目は実際の事例です。

正文

必要な知識点

  • github secrets
  • アクション文法

既存コンポーネントで主要なジョブを完遂し、コマンドによるpushで中国の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 "tianlongxiang51@gmail.com" && 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のissueを確認したところ、GitHub ActionsでGit Pagesを自動デプロイする場合、最終的に公開されるウェブページはmasterブランチに必要です。他のブランチにデプロイすると、設定画面でGitHubがウェブページの構文エラーを警告します。

実際は、Hugoのソースファイルがmasterブランチに置かれていたため、GitHubがjellyブログのソースコードとして検知し、チェックやビルドが通らなかったことが原因です。

解決策も簡単、Hugoのソースファイルを別のブランチに置き、静的ファイルはmasterブランチで公開する。

金融ITプログラマーのいじくり回しと日常のつぶやき
Hugo で構築されています。
テーマ StackJimmy によって設計されています。