2019-12-16 / @syui

github

github pagesでサブドメインのリポジトリにソースを載せない方法

現在、hugoをgithub-actionsで自動ビルドとデプロイしているのですが、デプロイが、コミットを消すやつじゃないので困ってます。

デプロイすると、${user}.github.ioのリポジトリの場合、masterにhtmlが置かれます。(privateなら見えないようにできる)

しかし、この前、ちょっと裏技ぽいものを発見したのでメモ。

以下でmasterの内容がgh-pagesに反映されなかった。おそらく、githubのpage-buildが走ってないからだと思う。

name: github pages deploy

on:
  page_build:

jobs:
  build:
    runs-on: ubuntu-18.04
    steps:
    - uses: actions/checkout@v2
      with:
        branch: 'master'
        run: git checkout master
      
    - uses: ad-m/github-push-action@master
      with:
        branch: 'master'
        force: true
        github_token: ${{ secrets.GITHUB_TOKEN }}
        run: |
           git config --local user.email "[email protected]"
           git config --local user.name "GitHub Action"
           GIT_SEQUENCE_EDITOR="sed -ie '2 s/^pick /f /g'" git rebase -i --root           

https://help.github.com/ja/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#

やりたいことは、masterのcommitをfixupしてcommit削減なんだけど、実際に実行された内容は、branch:srcの内容をmasterにpsuh -fするみたいな感じになってる。つまり、srcがmasterにコピーされたのに、ページが表示されていました。

ただし、何度も連続でcommitして、このアクションが2回連続実行されたりするとページが消えてしまう危険があります。

おそらく、gh-pagesのbuildが走るのはworkflow中に一回で、連動している場合、同workflow内でmasterにpushされてもpage_buildが走らないため、最新のmasterの内容がページに反映されていないんだと思う。もしくは、on:page_buildのアクションにはpage_buildは実行されないとか。

とはいえ、不安定な挙動を放置するわけにもいかないので、使わないかな。効果がcommit整理とhtmlソースをリポジトリに置かないことだけですし。