📝

GithubのWikiをGithubコントリビューションに入れるためにGithubActionsでミラーリングしたかった

2023/08/29に公開

https://qiita.com/items/499a051d81e129f56257


お詫び

Qiitaの元記事にて、区切り線を「---」で書いている場所があり、これがZennの記法に干渉して一部うまく表示できない記事がある事を認識しています。
全ての記事を精査しきれていないため、お手数ですがお見かけの際は教えていただけると大変喜びます。


知見がある方のご意見いただきたいなぁ、と思いつつ。

やりたいこと

  1. リポジトリAの内容をリポジトリBにミラーリングする
  2. リポジトリAの履歴をリポジトリBに引き継ぐ
  3. リポジトリCにGithubActionsを作る

できたのは2.まで。

やったこと

git clone リポジトリA
git push --mirror リポジトリB

これで2.まではできます。

補足

httpsでやっているので気にしていませんでしたが、検証環境では.sshも対応しているので、もしかしたら関係があるかもしれません。

問題点

GithubActionsで実行させようとすると、権限周りが問題になります。
何も考えずに

- name:
  run: |
    git clone .git
    git config --global user.email "${{ secrets.EMAIL }}"
    git config --global user.name "shimajima-eiji"
    git push --mirror .git

とやると、様々な問題にぶち当たります。
GithubActionsに詳しくないのですが、設定周りが足りてないのだろうと思います。

試しに.sshを作ってssh通信したり、GITHUB_TOKENが必要とのことでPATを試したりしたんですが、エラーが変わってもpushに失敗する問題が変わらなかったので諦めました。

別解

リポジトリAの情報を引き継ぐ必要がない場合

リポジトリAの情報を破棄するのが一番手っ取り早いです。
リポジトリBはあくまでミラーリングするためだけであれば、git clone --bare .gitとかでいいと思います。

今回は、リポジトリAが.wiki.gitであり、これをGithubコントリビューションとして評価したかったので、これはNGです。

GithubActions以外での自動化

運用を考えると毎日実施しなくても良く、思い出した時(話題になった時)に適用すれば良いと思ったので手動で実施することにしました。
毎日実施したいならcronなどを使う手もあります。

調べたこと

  1. 他のリポジトリの情報をクローンする(git clone --mirror)
  2. リポジトリをミラーリングする(git push --mirror)

大体 error: failed to push some refs toとかfatal: --mirror can't be combined with refspecsに引っ掛かってます。

GitHubで編集を提案

Discussion