Groovyビルドスクリプトを使用して、ビルドパイプラインを「パイプラインプラグイン」に移行しようとしています。
私のパイプラインは通常次のとおりです。
Jenkinsビルドスクリプトでバージョン/グループなどのgradle変数を使用して、アーティファクト内の正しいフォルダーに公開したいと思います。過去にアーティファクトプラグインが私に代わってくれたもの。これはどのように達成できますか?
シングルgradleプロジェクトの場合、次のようなものを使用します。
node('master')
{
def version = 1.0
def gitUrl = 'some.git'
def projectRoot = ""
def group = "dashboard/frontend/"
def artifactName = "dashboard_ui"
def artifactRepo = "ext-release-local"
stage "git"
git branch: 'develop', poll: true, url: "${gitUrl}"
dir(projectRoot)
{
sh 'chmod +x gradlew'
stage "test"
sh './gradlew clean test'
stage "build"
sh './gradlew build createPom'
stage "artifact"
def server = Artifactory.server('artifactory_dev01')
def uploadSpec = """{
"files": [
{
"pattern": "build/**.jar",
"target": "${artifactRepo}/$group/${artifactName}/${version}/${artifactName}-${version}.jar"
},
{
"pattern": "pom.xml",
"target": "${artifactRepo}/$group/${artifactName}/${version}/${artifactName}.pom"
}
]
}"""
def buildInfo1 = server.upload spec: uploadSpec
server.publishBuildInfo buildInfo1
}
}
この問題に取り組むには、実際には2つの異なるアプローチがあると思います。
GradleビルドツールからGradleバージョンを取得する方法を見つけ(例:gradle getVersion()
ですが、Gradleに精通していません)、シェルスクリプトを使用してこのバージョンを取得します。バージョンを取得するためのGradleコマンドがgradle getVersion()
の場合、パイプラインで実行します。
def projectVersion = sh script: "gradle getVersion()", returnStdout: true
def projectGroup= sh script: "gradle getGroup()", returnStdout: true
次に、現在のパイプラインに$projectVersion
変数と$projectGroup
変数を挿入します。
これは私が個人的に好む逆のアプローチです。ArtifactoryにすべてのGradleプロジェクト情報を提供する代わりに、GradleにArtifactory設定を提供し、Gradleゴールを使用してArtifactoryに簡単に公開します。
JFrogの Gradleの操作 セクションには、このソリューションに関する優れたドキュメントがあります。基本的に、次の手順に従います。
Gradle Build Script Generator
を使用してArtifactoryから準拠したGradleビルドスクリプトを生成し、プロジェクトビルドスクリプトに含めますgradle artifactoryPublish
を使用して、現在のアーティファクトをArtifactoryに単純に公開します今後の参考のために、より最新の宣言型パイプラインの例をここに示します。
pipeline {
agent any
stages {
stage('somestage') {
steps {
script {
def version = sh (
script: "./gradlew properties -q | grep \"version:\" | awk '{print \$2}'",
returnStdout: true
).trim()
sh "echo Building project in version: $version"
}
}
}
}
}
参照: