前回は Jenkinsfile を書く上で知っておくべきセキュリティ上の制約について紹介しました。 arasio.hatenablog.com 今回は、機能上の制約を書きたいと思います。 ここで言う機能上の制約とは、Jenkins がジョブの一時停止/再開機能を実現するために、代償としてパイプラインでは使えなくなっている Groovy の制約のことです。 一時停止/再開機能をどう実現しているかを説明してから、それに起因する制約と回避策を紹介します。 ジョブの一時停止/再開 パイプラインジョブは実行中に一時停止し、そこから再開することができます。 これを実現するために、パイプラインスクリプトはそのままコンパイルされるのではなく、 Jenkins 内部で持っている Groovy インタープリタで処理されます。 そして、一メソッドずつ命令を実行し、スタックなども含めたプログラムの状態を逐一永続化