概要:
マルチドロップワークフローは、いくつかの重要な機能を提供します:
- コードリポジトリでは、それぞれの新しい支店は独自の個別の組立ライン作業(仕事を)持っています。
- 各作業は、分岐パイプライン建設と変更履歴を対応して記録されます。
- あなたは、削除または内蔵の削除と設定の分岐パイプラインをカスタマイズすることができます。
- 親属性(必要な場合)を書き換えることにより、分岐線は柔軟別々のプロパティを構成することができます。
ジェンキンスパイプライン-AS-コードは、ジェンキンスさんは、各ブランチのために維持して、それを構成することなく、プロジェクト/アプリケーションソースコードリポジトリ内のCI / CDワークフローロジックを維持することができます。コードの行は、一貫して、ビルド/テスト/デプロイするために使用して、プロジェクト/アプリケーションのソースコードが同期。私たちは、jenkinsfileによりコード行の倉庫に説明します。jenkinsfileについて、自分のプロフィールや文法はを参照することが公式文書
やれ:
1.jenkinsはマルチドロップラインのプラグインをインストールする必要があります。
プラグインを管理>ジェンキンスを管理>ジェンキンス:まず、センタープラグインを開きます
そして、次の2つのプラグインを(そこには、おそらくすでにインストールされている)をインストールします:
新しいマルチブランチパイプラインプロジェクトを作成します。2.:
2.1ジェンキンス>新しいアイテム
プロジェクト、コードのソース情報で2.2塗りつぶし
あなたが作成した後ホームに表示されます
作成されました。
3.私たちのプロジェクトのルートディレクトリの追加jenkinsfileにおける次の(より少ない既に存在している実証プロジェクトを行うには)
その後、ライトコードJenkinsfileパイプ(パイプラインは、コードの構文を参照して文法、以下は一例であり、
pipeline {
options {
buildDiscarder(logRotator(numToKeepStr: '7', artifactNumToKeepStr: '10', daysToKeepStr: '5'))
timeout(time: 12, unit: 'MINUTES')
disableConcurrentBuilds()
}
agent {
label 'master'
}
environment {
JOB_NAME = 'pipeline-demo'
}
parameters {
booleanParam(name: 'FAST_MODE', defaultValue: false, description: '此操作将会跳过单元测试以及代码质量检查。')
}
stages {
stage('pipeline环境准备') {
steps {
script {
echo "开始构建"
if(!env.BRANCH_NAME.startsWith('feature-') && !env.BRANCH_NAME.startsWith('release-')){
error("自动构建分支名称必须以feature-或release-开头,当前分支名称为: ${env.BRANCH_NAME}")
}
if (env.BRANCH_NAME.startsWith('feature-') ) {
env.env = "beta"
}
if (env.BRANCH_NAME.startsWith('release-')) {
env.env = "stage"
}
sh "echo 当前分支 : ${env.BRANCH_NAME}"
sh "echo 当前环境 : ${env.env}"
sh "echo 当前提交 : ${env.commit}"
sh "echo WORKSPACE : ${env.WORKSPACE}"
sh "echo GIT_BRANCH : ${env.GIT_BRANCH}"
sh "echo BUILD_NUMBER : ${env.BUILD_NUMBER}"
sh "echo JOB_NAME : ${env.JOB_NAME}"
sh "./mvnw -v"
sh "java -version"
}
}
}
stage("运行测试&收集报告"){
when{
expression {
params.FAST_MODE == false
}
}
steps{
script {
echo "开始运行测试"
sh "./mvnw clean test jacoco:report"
}
}
}
stage('代码静态检查') {
when{
expression {
params.FAST_MODE == false
}
}
steps {
withSonarQubeEnv( installationName: 'sonar_server') {
sh './mvnw sonar:sonar'
}
}
}
stage("检查结果分析") {
when{
expression {
params.FAST_MODE == false
}
}
steps {
timeout(time: 1, unit: 'HOURS') {
waitForQualityGate abortPipeline: true
}
}
}
stage("发布应用") {
steps {
script {
echo "开始发布"
sh "curl --location --request POST 'http://0.0.0.0:8080/job/${env.JOB_NAME}/buildWithParameters' \
--header 'Authorization: ${env.ecarx_jenkins_auth}' \
--form 'env=${env.env}' \
--form 'branchname=origin/${env.BRANCH_NAME}'"
}
}
}
}
}
我々のコードリポジトリにウェブフックを追加4.
次のように(gitlab例を使用して、別のリポジトリの場合、文書ウェアハウスを参照)。
追加ウェブフックをクリックした後、保存します。
⚠️:あなたは、ドキュメントを追加する前に、様々な倉庫を見ることができるように、各異なるコード・リポジトリは、異なる組成のウェブフックアドレスであってもよいです。
レディ。
5.pushコード
プロジェクトコードのプッシュとJenkinsfileリモートでコードリポジトリには、コンソールジェンキンスに戻ります
たび支店プッシュコードは自動的ジェンキンスの自動構築をトリガします。
CI / CDを達成するために。
6.まとめ:
ジェンキンスさんは、私たちは簡単に継続的インテグレーション/連続展開(CI / CD)を達成することができます。CI / CDは、私たちは、CI / CDは、最も重要なテストの自動化され、継続的インテグレーションを構築し、コードの品質を実現させ、自動化されたテストは、ゴミのちょうど束が任意の使用をもたらすことはありませんではありません。私たちは、開発の品質を確保するためにパイプラインでのテストの自動化、コードの品質チェックを埋め込まれました。開発者へのパイプラインのタイムリーなフィードバック、当社のパイプラインの故障は、私たちが借金の蓄積を終了するのではなく、他の機能を開発し続けていない、それを最初の時間を修正する必要があるときに、このフィードバックは、あります。それ以外の場合は、ある程度蓄積秋のために、我々は有料に必要な時間とコストを修正する必要が待ち時間が大きくなります。