github リポジトリからトリガーされたジェンキンス パイプラインの一部として Python スクリプトを実行したいと考えています。スクリプトをリポジトリ自体に直接保存すると、sh 'python path/to/my_package/script.py'
完全に機能するだけで済みます。ただし、複数のリポジトリの複数のパイプラインからこれを使用したいので、これを jenkins 共有ライブラリに入れたいと考えています。
Pythonファイルをディレクトリに保存し、使用前に一時ファイルにコピーすることを提案するこの質問を見つけました。resources
これは、スクリプトが 1 つのスタンドアロン ファイルである場合にのみ機能します。残念ながら、私のものは複数のpythonファイルとそれらの間のインポートを含むパッケージであるため、それはできません。また、この質問への回答からpythonパッケージを含むフォルダー全体をコピーしようとしました。これは、ライブラリの場所を取得することを示唆しています
import groovy.transform.SourceURI
import java.nio.file.Path
import java.nio.file.Paths
class ScriptSourceUri {
@SourceURI
static URI uri
}
しかし、それは私に次のエラーを与えます:
Scripts not permitted to use staticMethod java.net.URI create java.lang.String. Administrators can decide whether to approve or reject this signature.
追加のアクセス許可が必要なようですが、取得できるとは思いません (共有マシンです)。
そう?jenkins共有ライブラリからpythonパッケージを実行する方法を知っている人はいますか? 現時点で考えられる唯一の解決策は、Python パッケージのディレクトリ構造を手動で再作成することです。これは、明らかに非常に面倒で一般的ではありません。
PS: groovy で同じスクリプトを作成する代わりに Python スクリプトを使用する特別な理由はありません。Pythonスクリプトが十分にテストされ、十分に理解され、十分にサポートされているというだけです。すべてを groovy で書き直すことは、現時点では現実的ではありません。