9

「Locable Resources Plugin」を Jenkins マルチパイプライン機能と一緒に使用しています。

lock('my-resource-name') {

}

あるパイプラインでリソースをロックし、別のパイプラインでロックを解除する必要がある状況があります。回避策はありますが、可能であればロック プラグインを使用することをお勧めします。

このようなことを想像します

lock("my-resource-name")
..... 
unlock("my-resource-name)

その理由

私はカナリア リリースを実装しており、パイプラインには 3 つの異なるパスがあります (入力プラグインを使用してパイプラインを一時停止するなど、他のソリューションを検討しました。これ以上のものを提供することは、この質問の範囲外です)。カナリアの評価中にパイプラインをロック/停止し、プロモーションまたはロールバックが完了したら、再度ロックを解除したいと考えています。lockステートメントの本文を省略すると、java.lang.IllegalStateException: There is no body to invoke

4

4 に答える 4

11

それを行う1つの方法は次のとおりです。

curl -XGET https://your-jenkins/lockable-resources/reserve?resource=myresource
curl -XGET https://your-jenkins/lockable-resources/unreserve?resource=myresource

GET は間違いではなく、本当に GET です。

ロックを待つには

lock("my-resource-name") {}

また、Jenkinsが「マイルストーン」と呼ばれるものをサポートしていることも知っていますが、これは明らかにビルド間の通信に使用されるものです。しかし、この問題を意味のある方法で解決するために使用できるかどうかはわかりません。

于 2018-07-27T11:02:03.490 に答える