2

hereのように、Jenkins パイプラインを (共有) オブジェクトとして定義しようとしています。しかし、docker コンテナー内でビルド アクションを実行する機能を追加したいと考えています。

私のJenkinsfile作品は次のようになります。

@Library('ci-scons-jenkins') _

def image = docker.image("praqma/native-scons")
org.ipiq.buildci.scons.SConsPipeline.builder(this, steps, image).buildDefaultPipeline().execute()

ご覧のとおり、dockerインスタンスは Jenkinsfile で作成され、ビルダー オブジェクトに渡されてビルダーが作成されます。これまでのところ、動作します。ステージはinsideコンテナーで実行されます。

次に、Docker インスタンスの作成を Pipeline クラスに転送しますSconsPipeline.groovy。私はそれをやろうとしました:

// I hoped it would import `Docker`
import org.jenkinsci.plugins.docker.workflow.*

class SConsPipeline implements Serializable {

    def script
    def stages
    def image
    DSL steps

    static builder(script, DSL steps) {
        // create the image to use in this build instead of using a parameter
        def docker = Docker(script)
        image = docker.image("praqma/native-scons")
        return new Builder(script, steps, image)
    }

しかし、ジェンキンスは正しいオブジェクトを見つけることができません:

groovy.lang.MissingMethodException: No signature of method: java.lang.Class.Docker() is applicable for argument types: (WorkflowScript) values: 

私の質問は、共有ライブラリのオブジェクト コード内でdocker-workflowを使用する方法です。

4

1 に答える 1