GitHub Action で自動更新される Dockerfile をつくる

定期的に更新を見て自動的にイメージをアップデート


Posted by Akira Masuda on Tue, Mar 24, 2020
Tags docker, githubaction, ci

Dockerfile の更新面倒くさい

Alice: はぁ…今日も Dockerfile の更新しなきゃ。他にもやらないといけないことあるのに…

Bob: そんなあなたに朗報です。GitHub Action と awk を使えば Dockerfile の中のパッケージバージョンを自動更新!

Alice: でもお高いんでしょう…?

Bob: それが、奥さん、GitHub Action なら 2000 minutes/month まで無料!

Alice: えぇ..!? (困惑)

Bob: さらにさらに、on schedule を使えば、毎朝、毎時でも自動更新チェックしてくれます!

Alice: うそぉー、今すぐ電話しなきゃ。電話番号を教えて!

Bob: ( ´・ω・)⊃旦 go-zen-chu/docker-plantuml

ということで、そんなレポジトリを作ってみた

原理:

  1. on schedule で毎朝 Dockerfile の中で 利用しているライブラリの更新がないかチェック
  2. 更新があった場合は、awk で Dockerfile の中のバージョン文字列 を更新して master へ push
  3. master にマージされたとき、[skip ci] が含まれていなければ、イメージビルドして、dockerhub へ push

master マージ時に、latest と コミットハッシュ の tag それぞれで push するのがポイント。

たったこれだけで自動更新してくれるなんてありがたや 🙏

ディレクトリ構成

├── .github
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows
│       ├── push-image.yml
│       └── update-image.yml
├── Dockerfile
├── Makefile
├── README.md
├── make
│   ├── help.sh
│   └── update.sh
└── plantuml

TBD

  1. plantuml のバージョニングは 1.2020.3 というような年が含まれているので、ここも自動サポートしたい。具体的には 2020 をやめて YYYY で指定したい
  2. たまに update-image が失敗することがある
  3. latest, コミットハッシュの tag を作るとき、それぞれで docker build しているので改善したい
comments powered by Disqus