Github actionsを試めしてみた
ほとんど、このガイドの1章目だけで、できてしまうのだな
test.ymlをHW/.github/workflows
に作って、pullした空のgithub.io
リポジトリGITHUBIOディレクトリにblog
を生成して、ls -l
とls -laF GITHBUIO
を実行するTest
アクションを作ってみた。
pushすると、GithubのHW・Actionsページの左ペーンに、作ったばかりのTest
アクションのname:
欄がAll workflows
の下に表示された。
All workflows
がデフォルトで、全てのアクションの実行結果がコミットを1単位として行で並ぶ。TestアクションをクリックするとTestアクションの実行結果だけに絞られる。
実行結果の行をクリックすると、まんまですね。実行結果がアクション図のアクティビティ単位で確認できた。いわゆるデバックプリントが得られた。
Testアクションの不備、些細なタイポや確認ミス、等を直してコミットし直すと、実行結果行のコミット名左のアイコンが赤バツか緑チェックに変わる。
lsくらいならさっさとできてしまった。cloneと生成は問題なく実行できた。まんま、Dockerでshellプログラミングしてるのと同じだ。
あまりのあっけなさに、感動した
…次に進むために頭を冷やさねば
デプロイをしてみる
頭も冷めないまま、deploy.ymlを作成しpushした。
1 Run SOURCE_COMMIT="$(git log -1 --pretty="%an: %B" "$GITHUB_SHA")"
20 remote: Permission to cat73220/cat73220.github.io.git denied to github-actions[bot].
21 fatal: unable to access 'https://github.com/cat73220/cat73220.github.io.git/': The requested URL returned error: 403
22 Error: Process completed with exit code 128.
エラーが出ました。 github.ioにコミットするための権限がありません だそうな。
さて。
Googling by 「githubアクション 他のレポジトリにpushするための権限」
沢山、ヒットした中から 上2リンク を選択。 …初めから読んでみるか…
1で当たりっぽい。 tl;dr にしたいことが書いてあるね
tl;dr
- push先のレポジトリで、Settingsから Deploy keys (公開鍵)を登録
- GitHub Actionsを設定するレポジトリで、Settingsの Secrets にDeploy keysに対応するの秘密鍵を登録
- GitHub Actions用のymlをいい感じに書いてpushする
心配してたこともここで解消された。2行目「Actions…Settings…秘密鍵を登録」。これで、大丈夫でしょう。…一応、全部に目を通してみた。
別リポジトリの権限周りが 想定外に複雑に実装されている。リポジトリ指定に登録した秘密鍵環境変数を渡すだけで良さそうな気が…
… 環境変数名をリポジトリURLに当てはめるだけじゃダメだった… 環境変数名がシークレットに直接置き換わってリポジトリURLとしてエラーになってしまう。
1の実装のように、gitを実行する際のsshでシークレットを参照するようにしないと、みたい。