Is it possible to replace the entire Repository Url with a parameterized string in Hudson/Jenkins?

强颜欢笑 提交于 2019-12-31 22:23:58

问题


In Hudson/Jenkins, is it possible to replace the entire string in the Subversion Module Repository URL with a String parameter? I don't want to just replace just the version or anything like that, I want to replace the entire url.

So, when I run the build, I'd get a prompt for the URL and I'd put something like "http://scm.work.corp/svn/com.work.package/tags/project-4.0.0.RELEASE" and it would check that out and build it.

Being able to substitute the "com.work.package" and "project-4.0.0.RELEASE" parts would be just as acceptable. I basically want it to be one job that can build any release.


回答1:


Yes, you can. But you can't have Jenkins/Hudson monitor the SVN for changes. Even with parameters in place, that didn't work for me properly. But if you monitor the SVN from a job that does not have the Repository URL parameterized, have that job trigger a downstream job passing the entire Repository URL as a parameter, then have the downstream job use the Repository URL parameter, then it seems to work.

This is what we do for our build stuff. We have one job that can build the product from SVN, based on the Repository URL that you start the job with. Then we have a number of trigger jobs that monitor certain branches; when a change is noted, the startup the build job and pass their URL to it.




回答2:


If Hudson/Jenkins doesn't know the URL in advance, how is it suppose to do continuous build integration?

And, how does Hudson/Jenkins do an update if you keep changing the URL? You'll have to get Hudson/Jenkins to either do a fresh checkout each time, or get it to use the svn switch command.

The whole purpose of a tool like Hudson/Jenkins is to do continuous builds which you want to stop it from doing. Since you're not doing continuous builds, why bother with a tool like Hudson/Jenkins? Why not write your own Ant script that will checkout what you want and then do the build?

Each branch and each module should have its own Hudson/Jenkins job, and with the template plugin, you easily copy one job to be the template for another job. So, it's not all that difficult to setup all the builds you need.




回答3:


Yes you can, I had the same issue but changed it to $VARIABLE and seemed to work the only issue was that you have to include a "." in the Local module directory. It took me a long time to find this out.




回答4:


You can do it, but you can't have Jenkins manage svn for you. Create a parametrized build, with your strings, then in the execute step, do a svn co ${parameter_you_selected} plus whatever else your build steps are (call ant scripts, makefiles, rakefiles, etc)




回答5:


I suppose I should have specified my use case.

I understand the purpose of Hudson. The only reason I want this is to have Hudson perform a single build for a release that the user specifies so that a plugin we use (sonar) can be triggered without having to add it in every pom and attach it to every phase. We do our releases manually so we don't want Hudson to handle that. However, we do want sonar reports on our releases, thus this use case.

However, this actually turned out to be easier than I expected. I simple did a parameterized build and put ${PARAMETER} in the svn repository url. Now, Jenkins given me an error saying that's an invalid URL, but actually doing the build works as I expected it. I'm glad I tried it out despite that error warning.




回答6:


Yes you can. Check Building a specific SVN revision with Hudson. In this case it just parameterizes the suffix of the URL. In your case you need 2 params for "com.work.package" and "project-4.0.0.RELEASE".

Hope it helps!



来源:https://stackoverflow.com/questions/5750270/is-it-possible-to-replace-the-entire-repository-url-with-a-parameterized-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!