2017-06-26 12 views
1

私たちはJenkins 1.500から最新のバージョンにアップグレードするため、パイプラインの可能性を開くためにMavenプロジェクトを構築してNexusに配備しています。良い量の研究の後、我々は、このスクリプトを再利用できるように、私たちのbitbucketインスタンスに問い合わせてプロジェクトキーとリポジトリを見つける単一のパイプラインスクリプトを書いた。関与どれが良いですか?同様のパイプラインまたは排他的なJenkinsfileの1つのJenkinsfile

ステージ:手順は非常に同様のプロジェクトが同じJenkinsfileを使用して、今、私たちは、このデザインを持っている同じ

であることの後にチェックアウト、ビルドし、テスト&ネクサス展開

チェックアウトステージは、異なるGitのレポを含み、 、 これは正しいです?

現在のデザインではJenkinsfile maven_nexusでPipelineプロジェクト(bitbucket構造)のレポが少なくとも400プロジェクトに使用されます。私たちは、

  • ジェンキンスジョブの作成は、テンプレートファイルを自動化することができ
  • があります(私たちはまだDevOpsチームにはありません)

    • 開発者がJenkinsfileについて考える必要はありません、ので、利点として、これを見つけます任意の不利益?すべてのビルドでJenkinsのパイプラインスクリプトからbitbucketインスタンスを照会することで何か間違っていますか? (時間/ネットワークのコストは低いですが、これが進まないかどうかはわかりません)。

      これまでのフォーラムでは、プロジェクトチームが独自のJenkinsfileを維持していることを読んでいます。彼らの意志で編集する権限をチームに与える理由がありますか?

    +0

    これは本当にpにはなりませんプロジェクトに深く没頭することなく良い答えを与えることができます。 –

    +0

    良い答えでない場合は、従うべき提案やベストプラクティスが私を大いに助けます。興味をお持ちいただきありがとうございますいくつかの詳細を追加するために質問を編集してください。 – Shiva

    答えて

    3

    カスタマイズ可能な動作の欠如の外には、固有の「欠点」はありません。私の本能は、共有ライブラリを書くことに目を向けることです(ここで説明する:https://jenkins.io/doc/book/pipeline/shared-libraries/)。これにより、呼び出すことができる1つのスクリプトに "Checkout、Build、Test & Nexus Deploy"のステージを保存できますが、linting、静的解析、またはその他のカスタム動作を望む場合は、独自の作業を追加することもできます通常は含まれています。具体的には、「より構造化されたDSLの定義」を参照してください。

    共有ライブラリのステップ定義:

    // vars/buildPlugin.groovy 
    def call(body) { 
        // evaluate the body block, and collect configuration into the object 
        def config = [:] 
        body.resolveStrategy = Closure.DELEGATE_FIRST 
        body.delegate = config 
        body() 
    
        // now build, based on the configuration provided 
        node { 
         git url: "https://github.com/jenkinsci/${config.name}-plugin.git" 
         sh "mvn install" 
         mail to: "...", subject: "${config.name} plugin build", body: "..." 
        } 
    } 
    

    するJenkinsfile対応:

    buildPlugin { 
        name = 'git' 
    } 
    

    だから、あなたのチームが使用していた場合は、この(あなたが設定共有ライブラリをしたら)彼らは、次の例を与えますパターンのようなものを行うことで、それらに追加することができます。

    node() { 
        stage('Lint') { 
         sh 'exit 0' 
        } 
    } 
    
    buildPlugin { 
        name = 'git' 
    } 
    
    +0

    入力していただきありがとうございます。私はこのアプローチを導入し、合っているかどうか確認してください。 – Shiva

    +1

    共有ライブラリJenkins> Configure System> Global Pipeline Librariesを追加しようとしています。しかし、スクリプトがどこにあるかを指定することはできません。つまり、「取得方法」を指定できません。 – Shiva

    関連する問題