はじめに
いきなりですが、みなさん、GitHubで草を生やす活動をやっていますか?
ちなみにGitHubの草とはGitHubのコントリビューションのことです。
私は時々やっていますが、やっぱり草を生やすならいっぱい生やしたいですよね。ということで今回は、この「草を生やす活動」を自動化してみました。
※本当はなんの意味もないコミットで毎日草を生しているだけなので、ネタ記事として楽しんでください!
やっていること
実際に作成して運用しているrepoは以下になります。
やっていることとしては
- 毎日コミットをする用のrepoを作成
- その中に「timestamp.txt」というファイルを作成
- Jenkins(ラズパイの自宅サーバで運用しています)ジョブを作成し、毎日指定した時刻にその時点のタイムスタンプを「timestamp.txt」に書き込む
- 更新した「timestamp.txt」ファイルをリモートrepoにpushする
最初はhourlyにして、1時間ごとに動かしていましたが、さすがにやりすぎだなと思って、dailyに変更しましたw
※ちなみに本記事を書こうと思ったきっかけが以下になります。(職場の人とのチャットです)
構築手順
では、実際に始めてみましょう。
repoの作成
任意の名前で(今回はupdate-timestampという名前にしています)publicのrepoを作成します。
timestamp.txtの作成
「timestamp.txt」という空のテキストファイルを作成して、pushします。(この時点ではタイムスタンプを書かなくてもOK)
Jenkinsの構築
詳細なインストール手順やセットアップ手順を割愛します。気になる方は公式ドキュメント等をご参照ください。
ちなみに今回の動作環境は下記になります。
- OS: Raspberry Pi OS(64-bit)
- Jenkinsバージョン:2.445
Jenkinsの設定
Git pluginがインストールされていることを前提とします。
Git Pluginの設定
「Manage Jenkins」->「System」を開きます。
「Git plugin」でGithubのユーザー名とEメールアドレスを入力します。
- user.name=GithubのユーザーID
- user.email=Githubに登録したEメールアドレス
※この2つの設定値が実際のGithubアカウント情報とマッチしていないと、リモートrepoにpushしても草(コミット)が表示されないので
、ご注意ください。
Githubクレデンシャルの登録
「Manage Jenkins」->「Credentials」を開きます。
今回はGithubのPersonal access token(発行時に適切な権限を付与してください)を追加したいので、「Username with password」を選択します。
「Username」にユーザー名を入力し、「Password」にGithubのPersonal access tokenを入力します。
「ID」は任意の名前にしていただいて大丈夫です。
※SSHキーを使いたい場合は設定方法が異なるので、公式ドキュメント等をご参照ください。
Jenkinsfileの作成
Jenkinsfileを作成してrepoにpushします。
ちなみに私が現在使っているスクリプトが以下になります。適宜修正してご利用ください。
Jenkinsジョブの作成
ビルドパラメータの設定
上記私が現在使っているJenkinsfileをそのまま使う場合は、下記ビルドパラメータの設定が必要です。
まず「GIT_CREDENTIAL」というStringのパラメータを追加し、デフォルト値は上記「Githubクレデンシャルの登録」手順で登録したクレデンシャルのIDにします。
「BRANCH」というStringのパラメータも追加します。「main」ブランチで運用していない場合は適宜変更してください。
ビルドトリガー
下記のようにcron形式で設定します。今回の場合は毎朝10時に実行するように設定しています。
Pipelineの設定
「Pipeline」の「Definition」で、「Pipeline script from SCM」を選択し、下記設定値を入力します。
- SCM: Git
- Repository URL: 事前に作成したrepoのURL
- Credentials: 事前に作成したクレデンシャル
- Branch Specifier: 対象ブランチ
最後に「Script Path」(上記手順で作成しpushしたJenkinsfileのパス)を入力します。
動作確認
Githubの画面でコミット履歴を確認してみます。
毎日ちゃんとコミットされていますね。
おわりに
始めてから1か月くらい経ちましたが、プロフィールは今のところこんな感じです。(個人開発等をサボっていたため)ほぼ自動でコミットされているやつしかないです。
(GWは実家に二週間くらい帰っていたので自宅サーバをしばらく止めていました)
ただこれはあくまでネタ記事なので、転職活動とかで草を生やしてアピールしたい場合はやめておいたほうがいいかもしれません...