私の.Jenkinsfileは次のようになっています:
properties([[$class: 'GitLabConnectionProperty', gitLabConnection: 'gitlab@srv']])
node {
env.Java_HOME = tool 'JDK 7'
def mvnHome = tool 'Maven 3.2.2'
def nodeJS = tool 'IA_NodeJS'
env.PATH = "${mvnHome}/bin:${nodeJS}/bin:${env.Java_HOME}/bin:${env.PATH}"
stage ('checkout') {
checkout scm
}
stage ('build') {
gitlabCommitStatus("build") {
// your build steps
sh 'mvn clean install -Denv=dev -P !faster'
}
}
stage ('upload') {
gitlabCommitStatus("upload") {
def server = Artifactory.server "artifactory@ibsrv02"
def buildInfo = Artifactory.newBuildInfo()
buildInfo.env.capture = true
buildInfo.env.collect()
def uploadSpec = """{
"files": [
{
"pattern": "**/target/*.jar",
"target": "libs-snapshot-local"
}, {
"pattern": "**/target/*.pom",
"target": "libs-snapshot-local"
}, {
"pattern": "**/target/*.war",
"target": "libs-snapshot-local"
}
]
}"""
// Upload to Artifactory.
server.upload spec: uploadSpec, buildInfo: buildInfo
buildInfo.retention maxBuilds: 10, maxDays: 7, deleteBuildArtifacts: true
// Publish build info.
server.publishBuildInfo buildInfo
}
}
}
このメソッドを使用すると、jenkinsは「Mavenのスタイル」レイアウトを作成せずにアーティファクトをアップロードします(サブフォルダーとpomsをパッケージ化します)。
通常のジョブが「Maven3-ArtifactoryIntegration」をチェックしてアップロードするように、結果のアーティファクトをArtifactoryにアップロードしたいと思います。
Artifactory Jenkinsプラグインバージョン2.7.2から、 ArtifactoryパイプラインDSL を使用してMavenとGradleを実行できます。
新しいDSLを使用すると、ビルドスクリプトは次のようになります。
def server = Artifactory.server "artifactory@ibsrv02"
def buildInfo = Artifactory.newBuildInfo()
buildInfo.env.capture = true
def rtMaven = Artifactory.newMavenBuild()
rtMaven.tool = MAVEN_TOOL // Tool name from Jenkins configuration
rtMaven.opts = "-Denv=dev"
rtMaven.deployer releaseRepo:'libs-release-local', snapshotRepo:'libs-snapshot-local', server: server
rtMaven.resolver releaseRepo:'libs-release', snapshotRepo:'libs-snapshot', server: server
rtMaven.run pom: 'pom.xml', goals: 'clean install', buildInfo: buildInfo
buildInfo.retention maxBuilds: 10, maxDays: 7, deleteBuildArtifacts: true
// Publish build info.
server.publishBuildInfo buildInfo
ArtifactoryパイプラインDSLの例は、 jenkins-pipeline-examples にあります。