Edited at

cronでDockerfileをauto buildする


dockerhubとgithubの連携

GitHubにpushしたらDockerイメージを自動ビルドする のように設定。

tagにマッチする正規表現

{\1}

/^(v?[0-9.]+)$/


shellscriptの用意とcron設定

下記のshellscriptを用意


archlinux_build_monthly.cron.sh

#!/bin/sh

#
# Build Dockerfile base/archlinux:{tagname}
# on dockerhub by pushing github

DIR=$(dirname "$0")
TAG="$(date -d '1 month ago' +%Y.%m.01)"

# Checkout
cd ${DIR}
git checkout master

# Modify
sed -i -e "s/latest/${TAG}/" Dockerfile
git commit -am "base version ${TAG}"
git tag ${TAG}
git push origin "${TAG}"

# Return
git reset --hard HEAD~


スクリプトの実行権限を与えておきます。


実行権限付与

$ chmod 766 archlinux_build_monthly.cron.sh


# m h  dom mon dow   command

* * 2 * * bash -c "${HOME}/Dropbox/Program/Dockerfiles/docker_archlinux_env/archlinux_build_monthly.cron.sh"

毎月2日に上記のshellスクリプトを実行して、先月のタグでビルドされたベースイメージを元にビルドされる仕組み.

reset --hardで書き換える前のmasterに戻している。

branchの分かれ方が愉快になっている(1~6行目まで)。

masterからすべて枝分かれしていくのかー。

今後のtreeの成長の仕方が楽しみ。

* d08cbd1 54 minutes ago base version 2018.04.01  (tag: 2018.04.01)

| * 7720cbe 55 minutes ago base version 2018.05.01 (tag: 2018.05.01)
|/
| * f307201 60 minutes ago base version 2018.06.01 (tag: 2018.06.01)
|/
* 8f7a178 64 minutes ago base version latest (HEAD -> master)
* 064144e 64 minutes ago base version 2018.07.01 (tag: 2018.07.01)
* 6a61b67 80 minutes ago base version latest
* 8b1a006 80 minutes ago base version 2019.02.01 (tag: 2019.02.01)
| * 2d0046c 2 hours ago [add] cron command (develop)
* | 99e40ce 2 hours ago base version latest
* | e051ecc 2 hours ago base version 2018.08.01 (tag: 2018.08.01)
* | 47b428c 2 hours ago base version latest
* | 8371f78 2 hours ago base version 2018.09.01 (tag: 2018.09.01)
* | 8796eb6 2 hours ago base version latest
* | bff56d2 2 hours ago base version 2018.10.01 (tag: 2018.10.01)
* | 0f31acb 2 hours ago base version latest
* | 8832df7 2 hours ago base version 2018.11.01 (tag: 2018.11.01)
* | dc117be 3 hours ago base version 2018.12.01 (tag: 2018.12.01)

docker hubはこちら

u1and0/archlinux