不要コード削除作業を cron で効率化

この記事は Retty Advent Calendar 2020 3日目の記事です。

はじめに

はじめまして、エンジニアリング部門の shimooka と申します。
主に弊社ではWeb開発をしておりサーバーサイドの開発をしているエンジニアです。

エピソード

現在弊社では使用されていないコードが多数あり、定期的に削除をしています。
この作業をお掃除と言い、毎週行っております。
そしてリリース前の検証を効率的に行うため、親ブランチを切ってお掃除修正を固めて、まとめて検証するフローが出来上がり定着しました。
自分はその旗振り役をしており、ブランチ切ったり、メンバーに通知するのが地味に手間がかかる作業でした。
自動化によりブランチ作成・Slack通知まで簡単にできるようになったので、
本日はその中の一部をご紹介できたらと思います。

cron での自動化作業

自動化できる作業を見つける

下記の点が当てはまっている作業であれば自動化できる可能性が大きいです。

  • PCで行える作業
  • 一定間隔で行っている作業

今回の私の作業でいくと週初めにチームで使用するブランチに作成しそちらのブランチをチームに共有する。
こちらはPCで行う、定期的な処理作業なのでどちらとも当てはまるので自動化できそうです。

今回行う作業の手順(手順としては下記2つ)

  1. 週の初めに git でブランチを作成して GitHub に push する。
  2. push したことをチームに Slack で周知する。

自動化する

タイトルに書いてある通りなのですが今回は cron で自動化を行います。
注意点として

  • cron を設定したPC の電源が付いている
  • 適切な動作する環境にいる(今回であればインターネットへの接続環境ですがコマンドに合わせて適切な環境で行ってください)

こちら2点が守られていなければ動作いたしませんのでご注意ください。
それではまず実行するコマンドを書いていきます。

上記で書いた 1 の作業
下記をファイル early_week_git.sh とする。

cd [ git の作業を行いたいディレクトリ ]
git pull
git checkout main
git checkout -b [作成したいブランチ]
git commit --allow-empty -m "first commit"
git push -u origin [作成したいブランチ]


上記で書いた 2 の作業
下記をファイル slack_notification.shとする。

WEBHOOK_URL=[ webhook url ]
DATA=`cat << EOS
  payload={
    "text":
      [リマインド]\n
      ブランチを作成しました。\n
    ",
  }
EOS`

curl -X POST --data-urlencode "$DATA" "$WEBHOOK_URL"


そして上記のファイルを実行する様にcronを設定していきます。
cron の設定コマンド

crontab -e


定期実行する時間を記述します。

0 10 * * 1 early_week_git.sh && slack_notification.sh

この様に設定すると毎週月曜日午前10:00に通知され上記の作業が実行されます。

まとめ

自分のPCでもcronで定常業務を自動化できると便利ですので、
ぜひ試してみてください。