詹金斯管道发布给Perforce

时间:2018-10-14 13:06:13

标签: jenkins jenkins-pipeline perforce

我正在尝试发布新的Maven项目版本以进行强制。 经过大量研究(如果我做错了,请纠正我),但是我没有找到任何有帮助的示例,因此我尝试手动进行操作-表示我正在更改pom.xml文件上的版本并尝试使用p4publish提交。

这些是相关的阶段:

        stage('change pom version Release')
                    {
                        steps
                                {
                                    withCredentials([usernamePassword(credentialsId: REPOSITORY_CREDENTIALS_ID, passwordVariable: 'artifactory_password', usernameVariable: 'artifactory_user')]){
                                        script {
                                            pom = readMavenPom file: 'main_project/pom.xml'
                                            pom.version = "${RELEASE_DATE}"
                                            writeMavenPom model: pom

                                            def inside_project_pom = readMavenPom file: main_project/inside_project/pom.xml'
                                            inside_project_pom.parent.version = "${RELEASE_DATE}"
                                            writeMavenPom model: inside_project_pom
                                        }
                                    }
                                }
                    }

            stage('publish')
                    {
                        steps
                                {
                                    p4publish(
                                            credential: 'PERFORCE_CREDENTIALS_ID',
                                            publish: [$class: 'SubmitImpl', delete: false, description: 'Submitted by Jenkins. Build: ${BUILD_TAG}', onlyOnSuccess: false, reopen: false],
                                            workspace: [
                                                    $class: 'ManualWorkspaceImpl',
                                                    charset: 'none',
                                                    name: 'jenkins-${JOB_NAME}-submit',
                                                    pinHost: false,
                                                    spec: [
                                                            allwrite: true,
                                                            clobber: false,
                                                            compress: false,
                                                            line: 'LOCAL',
                                                            locked: false,
                                                            modtime: false,
                                                            rmdir: false,
                                                            streamName: '//PROJECT_LOCATION_ON_PERFORCE',
                                                            view: '',
                                                            serverID: '',
                                                            type: 'WRITABLE'
                                                    ]
                                            ])
                                }
                    }

我的项目层次结构是:

   PROJECT_LOCATION_ON_PERFORCE:
              main_project:
                     inside_project:
                                 ....
                                 pom.xml
                     ...
                     pom.xml
              ....
              pom.xml

我想更改列表上的前2个pom,但是在Jenkins上运行此命令后,只有外部pom会获取新版本(尽管我没有更改他的pom)。

我在做什么错? 你能帮我吗? 谢谢!

1 个答案:

答案 0 :(得分:3)

我不了解Perforce,但是您可以简单地使用Maven Versions Plugin's set goal而不是手动更改所有pom文件。它对项目结构有更深入的了解,因此可以为您省去一些问题。

sh "mvn versions:set -DnewVersion=${RELEASE_DATE}"

应该可以解决问题。