Azure Functions で Docker Hub 自動タグ付けに挑戦中

docker pull しなくてもタグ付けができるのではないかと考えて、自動タグ付け機能を Azure Functions で実現しようとしています。

ウェブフックで API を呼び出そうとするとコールド スタートでタイムアウトしそうなことが判明して、キューを介した非同期処理にすることで回避しましたが、API の呼び出しはまだこれからといったところ。このまま無事完成するのでしょうか。

https://bitbucket.org/linuxfront/functions-azure

Azure Functions のコールド スタートが遅い

Azure Functions でウェブフックを立てようとしていますが、コールド スタートに時間がかかっているようなので対策を検討しています。一度キューに突っ込んで非同期化すれば良さそうですが、キューに入れるだけでも Functions を使うと解決しそうもないのですよね。

キューに入れるところは Microsoft Flow に持って行くとかでしょうか。

https://github.com/Azure/Azure-Functions/issues/131

Delphi もやっています

当工房は C++ (C++Builder) と Java が得意分野ですが、RAD Studio のコンポーネント作成には Delphi の方が好都合ですので、Delphi も扱っています。

古い Delphi プログラムの Unicode 対応等の近代化改修も承りますので、お気軽にご相談ください。

Hudson と Mercurial を利用した Maven 成果物のリリース管理

たまには何か書かないと PV が増えないので、今回は HudsonMercurial を利用した Maven 成果物 (artifact) のリリース管理について書いてみたいと思います。

ご存じの方もいるかと思いますが、私は OSSRH を利用して Maven Central Respository に Java 系成果物を公開しています。一例としては Google Login Plugin for Hudson とかですね。

ところで、Maven にはバージョンの末尾に -SNAPSHOT が付くと、リリース前のスナップショットとして扱われるという慣例があります。例えばバージョン X.Y-SNAPSHOT はバージョン X.Y より前のスナップショットという意味になり、Maven のリポジトリーでも別枠となります。

さてここまでを前置きとして、今回紹介するのは Hudson と Mercurial を利用して、成果物のリリースを半自動化してしまう手法です。

Hudson の使い方については別途調べてもらうとして、Hudson を使うことで Maven 成果物のデプロイ (deploy) までは自動化可能です。スナップショットの段階なら Hudson が新しいリビジョンを見つけるたびに自動デプロイしても何ら問題はありませんが、正式のリリースとなるとそうも言っていられません。

一応 OSSRH にステージング機能があるので、デプロイしてもいきなりリリースされることはないのですが、リリースしないものは破棄しなければなりませんので、リリース バージョンの自動デプロイは極力減らしたいところです。

そこで活用するのが Mercurial のブックマークです。例えばブックマーク release-candidate をリリース用のブランチに作成して、Hudson ではこのブックマークを追跡して自動デプロイするようにジョブを作っておきます。こうすると release-candidate の移動に伴ってリリース候補が OSSRH のステージング領域に自動デプロイされることになりますので、リリース OK となったら最後のリリース候補をリリースして残りを破棄すればリリース完了という流れです。

注意点としては、一旦リリースしたら次のリリースまでブックマークを移動しない (つまり自動デプロイしない) ようにすることでしょうか。Git でもブランチの移動を工夫すれば同様のことは可能だと思いますので、ぜひ試してみてください。