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

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

背景説明

昨日ブログを更新した際に、Travisサービスが利用できないことを発見しました。Travisのウェブサイトを確認すると、ソースコードの取得時に進捗が止まっていることがわかりました。そこで、GitHubが以前に発表していたActionサービスを思いつきました。 当時、業務が多忙であり、Actionを利用するには申請が必要だったため、現在は正式にリリースされ、週末に暇を持て余している間に、新しいおもちゃを試してみようかと思いました? 公式資料は、ご自身でウェブサイトをご確認ください。本記事では、より多くの転載を行いません。もしKubernetesをご利用経験がある場合、ActionのYAMLファイル設定がKubernetesと非常に似ていることに気づくでしょう。 入門チュートリアル、あるいは中国語の説明資料については、阮一峰のブログを検索することをお勧めします。2つの記事があり、1つ目は基本的な構文の紹介であり、もう1つは実際のケーススタディです。

---
正文
必要な知識点
- GitHub Secrets
- Action の構文
コアのジョブは既存のコンポーネントを使用して完了し、国内のGiteeにプッシュするにはコマンドを使用します。このコマンド部分は粗暴で、強制プッシュのみを実装しており、Travisを使用していた際のロジックを継承しています。

```yaml
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 ## 単独ステップには1つの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

付録

公式マーケットで提供されているactionを見ると、現在サポートされている遊び方があまりにも多い。Dockerイメージを構築すれば、Docker Hubから提供されるサービスへの依存関係もなくなります。

Hugoのissueを調査すると、GitHub Actionを使ってgit pagesを自動デプロイする際に、最終的に公開されるウェブサイトがmasterブランチにある必要があることがわかります。もし他のブランチにデプロイする場合は、設定画面でGitHubはウェブサイトに構文エラーがあると警告します。

これは単にHugoのソースファイルがmasterブランチにあるため、GitHubがjellyブログのソースコードとして検出し、構文チェックが通らない場合に発生するエラーです。

解決策は簡単です。Hugoのソースファイルを他のブランチに配置し、静的ファイルをmasterブランチに公開します。

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