6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

いきなりですが、みなさん、GitHubで草を生やす活動をやっていますか?

ちなみにGitHubの草とはGitHubのコントリビューションのことです。

私は時々やっていますが、やっぱり草を生やすならいっぱい生やしたいですよね。ということで今回は、この「草を生やす活動」を自動化してみました。
※本当はなんの意味もないコミットで毎日草を生しているだけなので、ネタ記事として楽しんでください!

やっていること

実際に作成して運用しているrepoは以下になります。

やっていることとしては

  • 毎日コミットをする用のrepoを作成
  • その中に「timestamp.txt」というファイルを作成
  • Jenkins(ラズパイの自宅サーバで運用しています)ジョブを作成し、毎日指定した時刻にその時点のタイムスタンプを「timestamp.txt」に書き込む
  • 更新した「timestamp.txt」ファイルをリモートrepoにpushする

最初はhourlyにして、1時間ごとに動かしていましたが、さすがにやりすぎだなと思って、dailyに変更しましたw

※ちなみに本記事を書こうと思ったきっかけが以下になります。(職場の人とのチャットです)
IMG_0564.JPG

構築手順

では、実際に始めてみましょう。

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」を開きます。
Screenshot 2024-06-06 at 8.28.51.png

「Git plugin」でGithubのユーザー名とEメールアドレスを入力します。
Screenshot 2024-06-06 at 8.29.25.png

  • user.name=GithubのユーザーID
  • user.email=Githubに登録したEメールアドレス
    この2つの設定値が実際のGithubアカウント情報とマッチしていないと、リモートrepoにpushしても草(コミット)が表示されないので、ご注意ください。

Githubクレデンシャルの登録

「Manage Jenkins」->「Credentials」を開きます。
Screenshot 2024-06-06 at 8.30.14.png

新しいGlobal credentialを追加します。
Screenshot 2024-06-06 at 8.31.17.png

今回はGithubのPersonal access token(発行時に適切な権限を付与してください)を追加したいので、「Username with password」を選択します。
「Username」にユーザー名を入力し、「Password」にGithubのPersonal access tokenを入力します。
「ID」は任意の名前にしていただいて大丈夫です。
Screenshot 2024-06-06 at 8.32.20.png

※SSHキーを使いたい場合は設定方法が異なるので、公式ドキュメント等をご参照ください。

Jenkinsfileの作成

Jenkinsfileを作成してrepoにpushします。

ちなみに私が現在使っているスクリプトが以下になります。適宜修正してご利用ください。

Jenkinsジョブの作成

新しい「Pipelinie」ジョブを作成します。
Screenshot 2024-06-06 at 8.51.39.png

ビルドパラメータの設定

上記私が現在使っているJenkinsfileをそのまま使う場合は、下記ビルドパラメータの設定が必要です。

まず「GIT_CREDENTIAL」というStringのパラメータを追加し、デフォルト値は上記「Githubクレデンシャルの登録」手順で登録したクレデンシャルのIDにします。
Screenshot 2024-06-06 at 8.55.41.png

「BRANCH」というStringのパラメータも追加します。「main」ブランチで運用していない場合は適宜変更してください。
Screenshot 2024-06-06 at 8.55.48.png

ビルドトリガー

下記のようにcron形式で設定します。今回の場合は毎朝10時に実行するように設定しています。
Screenshot 2024-06-06 at 8.55.57.png

Pipelineの設定

「Pipeline」の「Definition」で、「Pipeline script from SCM」を選択し、下記設定値を入力します。

  • SCM: Git
  • Repository URL: 事前に作成したrepoのURL
  • Credentials: 事前に作成したクレデンシャル
  • Branch Specifier: 対象ブランチ

Screenshot 2024-06-06 at 8.56.15.png

最後に「Script Path」(上記手順で作成しpushしたJenkinsfileのパス)を入力します。
Screenshot 2024-06-06 at 8.56.22.png

動作確認

ジョブを実行してみます。
image.png

Githubの画面でコミット履歴を確認してみます。
image.png
毎日ちゃんとコミットされていますね。

おわりに

始めてから1か月くらい経ちましたが、プロフィールは今のところこんな感じです。(個人開発等をサボっていたため)ほぼ自動でコミットされているやつしかないです。
(GWは実家に二週間くらい帰っていたので自宅サーバをしばらく止めていました)
image.png

ただこれはあくまでネタ記事なので、転職活動とかで草を生やしてアピールしたい場合はやめておいたほうがいいかもしれません...

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?