はじめに
以前、Githubを緑化するためにできるだけ毎日コードを書いていた時期があったのですが、自動的に緑色にできたらなーと思うことがあったので、自動でGithubにコミットしてくれるようなシステムを作りました。
※ 自分の手でGithubを緑化するのは、手を動かす動機付けになるのでそういう人にはおすすめしません笑
Githubが緑色だと知らない人がぱっとみたとき「このエンジニアは積極的に活動しているな」という印象になるので印象もいいかと思います。(薄い緑がずっと並んでいるのは不自然ですがそこは積極的に他のプロジェクトでコミットして色を濃くしていきましょう笑)
↓参考までに7月あたりからこのプログラムを動かしている現在の僕のGithubはこのような感じになってます。
業務で他のプロジェクトにコミットすることも多いのでそれらといい感じに中和してますね。
実装方法
自動でやる方法はいくつかあると思いますが、今回はシェルスクリプトを書いて、CentOS上でcronを用いて自動実行させることにしました。
プログラム
ただやみくもにテキストをGithubにpushさせるのではなく、どうせなら少しだけでもためになるようにしたいなと思い、qiitaのhttps://qiita.com/popular-items/feed から人気の投稿を取得し、Githubにpushするシェルを書きました。
#!/bin/sh
cd $(cd $(dirname $0) && pwd)
file_name=`date +%Y-%m-%d`
path="$(cd $(dirname $0) && pwd)/posts/${file_name}.md"
if [ ! -e $path ]; then
items=`curl -s https://qiita.com/popular-items/feed | \
grep -o '<title>.*</title>\|https://qiita.com/.*?' | \
sed -e '1d' -e 's/?$//' -e 's/^<title>//' -e 's/<\/title>$//'`
IFS=$'\n'
count=1
for items in `echo "$items"`
do
if [ $(( count % 2 )) == 0 ]; then
title="- [${items}]"
row=$title$url
echo $row >> $path
else
url="(${items})"
fi
count=$(( count + 1 ))
done
git add .
git commit -m "add post ${file_name}.md"
git push origin master
fi
自動実行
はじめは自分のmacのlaunchdを用いて、自動実行させていたのですが、macを起動しないと自動実行してくれないので、現在は個人で契約しているVPS上で実行させています。
(エンジニアならVPSぐらいはもってるよね....。)
インストールしているOSはCentOSなのでcronを用いて自動実行させています。
$ crontab -e
で毎日9時に対象スクリプトが動くように設定します。
00 09 * * * /home/hiroki/qiita-trending/app.sh
これで毎日9時にGithubにqiitaのトレンドに載っている投稿一覧が自動でpushされるようになりました。
おわりに
今回作成したプログラムはこちらにのせておきました。