2.4 KiB
+++ date = "2019-12-16" tags = ["github"] title = "github pagesでサブドメインのリポジトリにソースを載せない方法" slug = "ghpages" +++
現在、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 "action@github.com"
git config --local user.name "GitHub Action"
GIT_SEQUENCE_EDITOR="sed -ie '2 s/^pick /f /g'" git rebase -i --root
やりたいことは、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ソースをリポジトリに置かないことだけですし。