dotnet-installer/netci.groovy
Bryan Thornbury b122190cd8 Set Docker Internal UID to Host UID, Remove Postbuild step
These changes will use docker's new Dockerfile Arguments to
pass the Host User ID to the docker container at build time.
This allows the docker container to set it's internal user
to match that of the host. When using shared volumes between
the host and container, this prevents files created in the
container from being owned by root.

This will solve our problem of needing a cleanup step after
every ubuntu CI run.
2015-11-25 00:33:53 +00:00

96 lines
3 KiB
Groovy

// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
// Import the utility functionality.
import jobs.generation.Utilities;
import jobs.generation.InternalUtilities;
def project = 'dotnet/cli'
def osList = ['Ubuntu', 'OSX', 'Windows_NT']
def machineLabelMap = ['Ubuntu':'ubuntu-doc',
'OSX':'mac',
'Windows_NT':'windows']
def static getBuildJobName(def configuration, def os) {
return configuration.toLowerCase() + '_' + os.toLowerCase()
}
['Debug', 'Release'].each { configuration ->
osList.each { os ->
// Calculate names
def lowerConfiguration = configuration.toLowerCase()
// Calculate job name
def jobName = getBuildJobName(configuration, os)
def buildCommand = '';
def postBuildCommand = '';
// Calculate the build command
if (os == 'Windows_NT') {
buildCommand = ".\\scripts\\ci_build.cmd ${lowerConfiguration}"
}
else {
buildCommand = "./scripts/ci_build.sh ${lowerConfiguration}"
}
// Create the new job
def newCommitJob = job(InternalUtilities.getFullJobName(project, jobName, false)) {
// Set the label.
label(machineLabelMap[os])
steps {
if (os == 'Windows_NT') {
// Batch
batchFile(buildCommand)
}
else {
// Shell
shell(buildCommand)
}
}
}
InternalUtilities.addPrivatePermissions(newCommitJob)
InternalUtilities.addPrivateScm(newCommitJob, project)
Utilities.addStandardOptions(newCommitJob)
Utilities.addStandardNonPRParameters(newCommitJob)
Utilities.addGithubPushTrigger(newCommitJob)
def newPRJob = job(InternalUtilities.getFullJobName(project, jobName, true)) {
// Set the label.
label(machineLabelMap[os])
steps {
if (os == 'Windows_NT') {
// Batch
batchFile(buildCommand)
}
else {
// Shell
shell(buildCommand)
// Post Build Cleanup
publishers {
postBuildScripts {
steps {
shell(postBuildCommand)
}
onlyIfBuildSucceeds(false)
}
}
}
}
}
InternalUtilities.addPrivatePermissions(newPRJob)
InternalUtilities.addPrivatePRTestSCM(newPRJob, project)
Utilities.addStandardOptions(newPRJob)
Utilities.addStandardPRParameters(newPRJob, project)
Utilities.addGithubPRTrigger(newPRJob, "${os} ${configuration} Build")
}
}