java - Jenkins execute shell on job's executor during CONFIGURATION time (and access workspace) -
i create simple jenkins plugin.
basically custom build step (builder extension) dropdown list. trick want fill dropdown list result of shell script/command executed during configuration time.
here method stub.
public listboxmodel dofill...items(@ancestorinpath abstractproject project) { // determine workspace // project.getsomeworkspace() or project.getsomeworkspace().getremote() ... // invoke shell commands string[] results = ... listboxmodel items = new listboxmodel(); (string item : results) { items.add(item); } return items; }
my questions following:
if there slaves too, jenkins maintain 2 workspaces (so freshest source code exist both locations?
understanding (after first build) there 2 workspaces: on master there meta informations (and source code too?), on slave there source code , build intermediates, information, artifacts. (unless extract artifacts or use copy-to-slave-plugin)where workspace project.getsomeworkspace() or project.getsomeworkspace().getremote()? (master/slave?)
how can invoke shell command on machine execute build? or @ least there way choose master / 1 of slaves particularly? (suppose configured label on group of machines want run job.)
don't have access abstractbuild, buildlistener , launcher (since don't exist yet...)how can find out properties can @ancestorinpath.
understand shorthand, injection staplerrequest invoked jenkins? how can see request?
it important execution of shell command takes place, if there 2 identical workspaces on master , slave. in case there may windows master (in future) , osx slave. need osx run commands. (currently there master on osx.)
edit:
here example, part of trying do. created simple xcode project in swift (jenkinsswift). in terminal project's directory can issue following command: xcodebuild -project jenkinsswift.xcodeproj -list
and following response:
targets: jenkinsswift jenkinsswifttests build configurations: debug release if no build configuration specified , -scheme not passed "release" used. schemes: jenkinsswift
during configuration time want navigate project workspace on os x machine want issue previous command. way parse response , allow users choose target / configuration / scheme during configuration. (of course can done manually bash scripts, wanted make easier.)
- this works differently, there no workspace job default. 1 allocated build run on build machine (be master or slave). there can number of workspaces given job based on , how many times job run. though, there no guarantee there on master. not confuse terms workspace (living on build machine) , build result directory on master.
project#getsomeworkspace()
, gives workspace used some past build. note, done on purely best effort bases there might none.- there no way know build run @ configuration time unless tie job 1 particular machine. see
hudson.model.node#createlauncher(tasklistener)
on how run processes in jenkins grid. @ancestorinpath
allows inject of domain object ware traversed stapler during url binding. should not try inject might not part of url. there no way known me inject request, stapler uses 1 initiated action method invocation.
the bottom line try sounds highly unusual. perhaps there easier way solve original problem.
Comments
Post a Comment