リポジトリの内容を別リポジトリにpushするGitHub Actionを公開した
あるリポジトリの一部または全部を別リポジトリのルートなりサブディレクトリにpushしたくなることがたまにある。一般的にもニーズがありそうだが、ちゃんとメンテナンスされているモノが見当たらなかったので、以下に公開した。かなり便利。
- https://github.com/Songmu/action-push-to-another-repository
- https://github.com/marketplace/actions/songmu-action-push-to-another-repository
これはイチから作ったわけではなく、cpina/github-action-push-to-another-repository をforkしたものです。このfork元は、私も使っていたのですが、メンテナンス停止が宣言されており、signed commit対応などもされなさそうなので新たに開発することにしました。
そう、signed commit対応が今回公開したGitHub Actionの目玉です。actions/create-github-app-tokenを使ってトークンを発行し、そのトークンでsigned commitするという仕組みです。
ユースケース
privateリポジトリで作成したコンテンツを公開リポジトリにプッシュしたり、あるリポジトリの内容を別リポジトリのサブディレクトリにpushするなど、色々活用法は考えられますが、私のユースケースを以下に紹介します。
Songmu/oss4.fun-private -> Songmu/oss4.fun
プライベートリポジトリでポッドキャストのコンテンツを事前に作成しておき、公開時に公開リポジトリにpushさせている。これは、リポジトリ丸ごとsyncしています。
詳細は Workflow fileを参照ください。
Songmu/ghq-handbook -> Songmu/zenn.dev
ZennのGitHub連携は、ある人やオーガニゼーションの複数の記事や本を1つのリポジトリでまとめて管理する仕様になっている。これを、もともと単独リポジトリで管理していたgithub-handbookと連携するために、ghq-handbookのja
ディレクトリの内容を、zenn.devのbooks/ghq-handbook
ディレクトリにpushさせている。
詳細は Workflow fileを参照ください。
まとめ
今回の目玉である、signed commit対応ですが、これは、suzuki-shunsuke/commit-actionを内部で使わせてもらって楽させてもらいました。ありがとうございました!
結構便利だと思うので是非使ってみてください。