On Tuesday, October 18, 2016 at 3:21:09 PM UTC+1, Jesse Glick wrote: > > On Tuesday, October 18, 2016 at 8:09:56 AM UTC-4, Jonathan Hodgson wrote: >> >> Did you miss my last post? I tried FilePath, but I get a "unable to >> resolve class" error. >> > > Do not attempt to use `FilePath` from Pipeline script. It will not work. >
Thanks, You've saved me a lot of wasted time trying to find how to make it work, though I've already lost way too much. I really wish this stuff was documented. it also begs the question "Why?", Iask because I was looking at pipeline step plugins to see if I could find clues as to how to get the channel, and I see that FilePath is how they work. So it seems that FilePaths are working in the pipeline, just not in Groovy in the pipeline. > > I'm in a powerfull object oriented cross platform language, but to do >> anything useful I have to drop into platform specific archaic shell >> environments? Writing clunky code which has to be different for each >> platform >> > > There are plenty of platform-independent scripting languages out there. > Ruby, Python, etc. Groovy (run as an external process!), for that matter. > Yes, but even then things are messy. All I'm doing is checking for a certain set of subfolders, comparing them with a list, and deleting the ones which aren't on the list. Now on the master, where File works, that's actually quite a simple task thanks to the power of Groovy. A few lines of code right there where they're needed. But it seems to do the same thing on the slave, I basically have to write a separate application and call it through sh or bat, passing parameters to it (either as environment variables or as command line arguments I guess, neither of which is very clean). One way is simple, neat and easy to maintain. The other is ugly and clunky. Can you understand why I think that's a significant omission in the design of the pipeline? When you say "groovy run as an external process", do you mean calling it through bat/sh, or is there a cleaner way? > > I've had zero success getting sh to work on windows >> > > Use `bat` on Windows. There is a `isUnix` step that may be used to select a > Unix-vs.-Windows variant. > That's what I've been doing. But since I repeatedly have to execute effectively the same thing on windows and Unix, that's a lot of isUnix, and almost repeated code (almost because shell and bat are not compatible, obviously) Now it looks like sh is supposed to be supported on windows if I have a shell installed, so I tried using that, but I couldn't get it to work. It called the shell ok (though even there there's an issue as I recall, since the shell path configuration setting is a global one, but my unix machines don't have shell in the same place as the windows ones) but it didn't seem to be able to actually find the shell script that was generated. All these things can be worked around of course, but every work around is another bit of bloat which makes things harder to understand and maintain. Thanks again for letting me know about FilePath being a dead end -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/ee3c0c75-f246-4144-96b1-f086f7094a4d%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.