Skip to content

Instantly share code, notes, and snippets.

@Brantone
Last active June 1, 2018 02:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Brantone/02df6a1ad3defc5896ede03711ca0c4e to your computer and use it in GitHub Desktop.
Save Brantone/02df6a1ad3defc5896ede03711ca0c4e to your computer and use it in GitHub Desktop.
import hudson.FilePath
import jenkins.model.Jenkins
import com.cloudbees.hudson.plugins.folder.*
Jenkins jkns = Jenkins.instance
def build_vars = build.buildVariables
def base_folder_name = build_vars['baseFolderName']
def build_proj_file = 'ServerBuild.proj'
def tier = (build_vars['assembliesTier'].toInteger() - 1)
// Ensure base folder exists
def baseFolder = jkns.getItemByFullName(base_folder_name)
if (baseFolder == null) {
baseFolder = jkns.createProject(Folder.class, base_folder_name)
}
FilePath build_proj_fp = build.workspace.child(build_proj_file)
if (!build_proj_fp.exists()) {
println "ERROR!!"
exit 0
}
def xml = new XmlSlurper().parseText(build_proj_fp.readToString())
def msBuildTags = xml.'**'.find{
it.name() == 'Target' && it.attributes()['Name'] == 'Assemblies'
}.MSBuild
def projects = msBuildTags[tier].@"Projects".text().trim().tokenize(';')
projects.each { proj ->
// 2nd spot should have what we want, folder name after "$(LocalSolutionPath)\Assemblies\"
def name = proj.trim().tokenize('\\')[2]
println "Checking if ${name} folder exists in ${baseFolder.getName()} ..."
def folderName = "${baseFolder.getName()}/${name}"
def folder = jkns.getItemByFullName(folderName)
if (folder == null) {
folder = baseFolder.createProject(Folder.class, name)
}
}
return 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment