1

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 で書き直すことは、現時点では現実的ではありません。

4

1 に答える 1

1

Jenkins インストールのhttp://host:8080/jenkins/scriptApproval/ページに移動して、スクリプトのリクエストを承認できます。以下を参照してください。

ここに画像の説明を入力

詳細については、リンクをたどってください。

于 2019-08-28T06:48:45.237 に答える