diff --git a/netci.groovy b/netci.groovy index afedf3e0ab515533c0c450ad3237d82ed8db0c9c..41863d8b96e7286f399db0d98ca4a7716f96d6c4 100644 --- a/netci.groovy +++ b/netci.groovy @@ -137,21 +137,27 @@ static void addPushTrigger(def myJob) { } } -static void addPullRequestTrigger(def myJob, String contextName, String opsysName, String triggerKeyword = 'this', Boolean triggerOnly = false) { +// Generates the standard trigger phrases. This is the regex which ends up matching lines like: +// test win32 please +static String generateTriggerPhrase(String jobName, string opsysName, Stringc triggerKeyword = 'this') { + return "(?i).*test\\W+(${jobName.replace('_', '/').substring(7)}|${opsysName}|${triggerKeyword}|${opsysName}\\W+${triggerKeyword}|${triggerKeyword}\\W+${opsysName})\\W+please.*"; +} + +static void addPullRequestTrigger(def myJob, String jobName, String triggerPhrase, Boolean triggerPhraseOnly = false) { myJob.with { triggers { pullRequest { admin('Microsoft') useGitHubHooks(true) - triggerPhrase("(?i).*test\\W+(${contextName.replace('_', '/').substring(7)}|${opsysName}|${triggerKeyword}|${opsysName}\\W+${triggerKeyword}|${triggerKeyword}\\W+${opsysName})\\W+please.*") - onlyTriggerPhrase(triggerOnly) + triggerPhrase(triggerPhrase) + onlyTriggerPhrase(triggerPhraseOnly) autoCloseFailedPullRequests(false) orgWhitelist('Microsoft') allowMembersOfWhitelistedOrgsAsAdmin(true) permitAll(true) extensions { commitStatus { - context(contextName.replace('_', '/').substring(7)) + context(jobName.replace('_', '/').substring(7)) } } } @@ -159,7 +165,7 @@ static void addPullRequestTrigger(def myJob, String contextName, String opsysNam } } -static void addStandardJob(def myJob, String jobName, String branchName, String buildTarget, String opsys) { +static void addStandardJob(def myJob, String jobName, String branchName, String triggerPhrase) { addLogRotator(myJob) addWrappers(myJob) @@ -168,14 +174,7 @@ static void addStandardJob(def myJob, String jobName, String branchName, String addArtifactArchiving(myJob, includePattern, excludePattern) if (branchName == 'prtest') { - switch (buildTarget) { - case 'unit32': - addPullRequestTrigger(myJob, jobName, opsys, "(unit|unit32|unit\\W+32)") - break; - case 'unit64': - addPullRequestTrigger(myJob, jobName, opsys, '(unit|unit64|unit\\W+64)') - break; - } + addPullRequestTrigger(myJob, jobName, triggerPhrase); addScm(myJob, '${sha1}', '+refs/pull/*:refs/remotes/origin/pr/*') } else { addPushTrigger(myJob) @@ -203,6 +202,19 @@ def branchNames = [] description('') } + // Generate the PR trigger phrase for this job. + String triggerKeyword = ''; + switch (buildTarget) { + case 'unit32': + triggerKeyword = '(unit|unit32|unit\\W+32)'; + break; + case 'unit64': + triggerKeyword = '(unit|unit64|unit\\W+64)'; + break; + } + String triggerPhrase = generateTriggerPhrase(jobName, opsys, triggerKeyword); + Boolean triggerPhraseOnly = false; + switch (opsys) { case 'win': myJob.with { @@ -234,35 +246,34 @@ set TMP=%TEMP% } } addConcurrentBuild(myJob, 'roslyn/mac/unit') + triggerPhraseOnly = true; break; } addUnitPublisher(myJob) - addStandardJob(myJob, jobName, branchName, buildTarget, opsys) + addStandardJob(myJob, jobName, branchName, triggerPhrase, triggerPhraseOnly); } } } } } - if (branchName != 'prtest') { - def determinismJobName = "roslyn_${jobBranchName}_determinism" - def determinismJob = job(determinismJobName) { - description('') - } + def determinismJobName = "roslyn_${jobBranchName}_determinism" + def determinismJob = job(determinismJobName) { + description('') + } - determinismJob.with { - label('windows-roslyn') - steps { - batchFile("""set TEMP=%WORKSPACE%\\Binaries\\Temp + determinismJob.with { + label('windows-roslyn') + steps { + batchFile("""set TEMP=%WORKSPACE%\\Binaries\\Temp mkdir %TEMP% set TMP=%TEMP% .\\cibuild.cmd /testDeterminism""") - } } - - addConcurrentBuild(determinismJob, null) - addStandardJob(determinismJob, determinismJobName, branchName, "unit32", "win") } + + addConcurrentBuild(determinismJob, null) + addStandardJob(determinismJob, determinismJobName, branchName, 'determinism', true); }