Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
7f0ccccc
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7f0ccccc
编写于
5月 19, 2016
作者:
J
Jared Parsons
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Moving to new groovy script
上级
5b0b8197
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
97 addition
and
80 deletion
+97
-80
netci.groovy
netci.groovy
+97
-80
未找到文件。
netci.groovy
浏览文件 @
7f0ccccc
...
...
@@ -3,124 +3,140 @@
import
jobs.generation.Utilities
;
def
project
=
GithubProject
// The input project name (e.g. dotnet/corefx)
def
projectName
=
GithubProject
// The input branch name (e.g. master)
def
branchName
=
GithubBranchName
// Folder that the project jobs reside in (project/branch)
def
projectFoldername
=
Utilities
.
getFolderName
(
projectName
)
+
'/'
+
Utilities
.
getFolderName
(
branchName
)
// Email the results of aborted / failed jobs to our infrastructure alias
static
void
addEmailPublisher
(
def
myJob
)
{
myJob
.
with
{
publishers
{
extendedEmail
(
'$DEFAULT_RECIPIENTS, cc:mlinfraswat@microsoft.com'
,
'$DEFAULT_SUBJECT'
,
'$DEFAULT_CONTENT'
)
{
trigger
(
'Aborted'
,
'$PROJECT_DEFAULT_SUBJECT'
,
'$PROJECT_DEFAULT_CONTENT'
,
null
,
true
,
true
,
true
,
true
)
trigger
(
'Failure'
,
'$PROJECT_DEFAULT_SUBJECT'
,
'$PROJECT_DEFAULT_CONTENT'
,
null
,
true
,
true
,
true
,
true
)
extendedEmail
(
'mlinfraswat@microsoft.com'
,
'$DEFAULT_SUBJECT'
,
'$DEFAULT_CONTENT'
)
{
// trigger(trigger name, subject, body, recipient list, send to developers, send to requester, include culprits, send to recipient list)
trigger
(
'Aborted'
,
'$PROJECT_DEFAULT_SUBJECT'
,
'$PROJECT_DEFAULT_CONTENT'
,
null
,
false
,
false
,
false
,
true
)
trigger
(
'Failure'
,
'$PROJECT_DEFAULT_SUBJECT'
,
'$PROJECT_DEFAULT_CONTENT'
,
null
,
false
,
false
,
false
,
true
)
}
}
}
}
// Calls a web hook on Jenkins build events. Allows our build monitoring jobs to be push notified
// vs. polling
static
void
addBuildEventWebHook
(
def
myJob
)
{
myJob
.
with
{
notifications
{
endpoint
(
'https://jaredpar.azurewebsites.net/api/BuildEvent?code=tts2pvyelahoiliwu7lo6flxr8ps9kaip4hyr4m0ofa3o3l3di77tzcdpk22kf9gex5m6cbrcnmi'
)
{
event
(
'all'
)
}
}
}
}
// 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
,
String
triggerKeyword
=
'this'
)
{
return
"(?i).*test\\W+(${jobName.replace('_', '/').substring(7)}|${opsysName}|${triggerKeyword}|${opsysName}\\W+${triggerKeyword}|${triggerKeyword}\\W+${opsysName})\\W+please.*"
;
}
static
void
addRoslynJob
(
def
myJob
,
String
jobName
,
String
branchName
,
String
triggerPhrase
,
Boolean
triggerPhraseOnly
=
false
)
{
static
void
addRoslynJob
(
def
myJob
,
String
jobName
,
String
branchName
,
Boolean
isPr
,
String
triggerPhraseExtra
,
Boolean
triggerPhraseOnly
=
false
)
{
def
includePattern
=
"Binaries/**/*.pdb,Binaries/**/*.xml,Binaries/**/*.log,Binaries/**/*.dmp,Binaries/**/*.zip,Binaries/**/*.png,Binaries/**/*.xml"
def
excludePattern
=
"Binaries/Obj/**,Binaries/Bootstrap/**,Binaries/**/nuget*.zip"
Utilities
.
addArchival
(
myJob
,
includePattern
,
excludePattern
)
// Create the standard job. This will setup parameter, SCM, timeout, etc ...
def
projectName
=
'dotnet/roslyn'
def
isPr
=
branchName
==
'prtest'
def
defaultBranch
=
"*/${branchName}"
Utilities
.
standardJobSetup
(
myJob
,
projectName
,
isPr
,
defaultBranch
)
// Need to setup the triggers for the job
if
(
isPr
)
{
def
contextName
=
jobName
.
replace
(
'_'
,
'/'
).
substring
(
7
)
Utilities
.
addGithubPRTrigger
(
myJob
,
contextName
,
triggerPhrase
,
triggerPhraseOnly
)
def
triggerCore
=
"open|all|${jobName}"
if
(
triggerPhraseExtra
)
{
triggerCore
=
"${triggerCore}|${triggerPhraseExtra}"
}
def
triggerPhrase
=
"(?i).*test\\W+(${triggerCore})\\W+please.*"
;
def
contextName
=
jobName
Utilities
.
addGithubPRTriggerForBranch
(
myJob
,
branchName
,
contextName
,
triggerPhrase
,
triggerPhraseOnly
)
}
else
{
Utilities
.
addGithubPushTrigger
(
myJob
)
addEmailPublisher
(
myJob
)
}
addBuildEventWebHook
(
myJob
)
}
def
branchNames
=
[]
[
'master'
,
'future'
,
'stabilization'
,
'future-stabilization'
,
'hotfixes'
,
'prtest'
,
'microupdate'
].
each
{
branchName
->
def
shortBranchName
=
branchName
.
substring
(
0
,
6
)
def
jobBranchName
=
shortBranchName
in
branchNames
?
branchName
:
shortBranchName
branchNames
<<
jobBranchName
// folder("${jobBranchName}")
[
'win'
,
'linux'
,
'mac'
].
each
{
opsys
->
// folder("${jobBranchName}/${opsys.substring(0, 3)}")
[
'dbg'
,
'rel'
].
each
{
configuration
->
if
((
configuration
==
'dbg'
)
||
((
branchName
!=
'prtest'
)
&&
(
opsys
==
'win'
)))
{
// folder("${jobBranchName}/${opsys.substring(0, 3)}/${configuration}")
[
'unit32'
,
'unit64'
].
each
{
buildTarget
->
if
((
opsys
==
'win'
)
||
(
buildTarget
==
'unit32'
))
{
def
jobName
=
"roslyn_${jobBranchName}_${opsys.substring(0, 3)}_${configuration}_${buildTarget}"
def
myJob
=
job
(
jobName
)
{
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
{
steps
{
batchFile
(
"""set TEMP=%WORKSPACE%\\Binaries\\Temp
// True when this is a PR job, false for commit. On feature branches we do PR jobs only.
def
commitPullList
=
[
false
,
true
]
if
(
branchName
.
startsWith
(
"features/"
))
{
commitPullList
=
[
true
]
}
// Windows
commitPullList
.
each
{
isPr
->
[
'debug'
,
'release'
].
each
{
configuration
->
[
'unit32'
,
'unit64'
].
each
{
buildTarget
->
def
jobName
=
Utilities
.
getFullJobName
(
projectName
,
"windows_${configuration}_${buildTarget}"
,
isPr
)
def
myJob
=
job
(
jobName
)
{
description
(
"Windows ${configuration} tests on ${buildTarget}"
)
steps
{
batchFile
(
"""set TEMP=%WORKSPACE%\\Binaries\\Temp
mkdir %TEMP%
set TMP=%TEMP%
.\\cibuild.cmd ${(configuration == 'dbg') ? '/debug' : '/release'} ${(buildTarget == 'unit32') ? '/test32' : '/test64'}"""
)
}
}
Utilities
.
setMachineAffinity
(
myJob
,
'Windows_NT'
,
'latest-or-auto'
)
break
;
case
'linux'
:
myJob
.
with
{
steps
{
shell
(
"./cibuild.sh --nocache --debug"
)
}
}
Utilities
.
setMachineAffinity
(
myJob
,
'Ubuntu14.04'
,
'latest-or-auto'
)
break
;
case
'mac'
:
myJob
.
with
{
label
(
'mac-roslyn'
)
steps
{
shell
(
"./cibuild.sh --nocache --debug"
)
}
}
triggerPhraseOnly
=
true
;
break
;
}
Utilities
.
addXUnitDotNETResults
(
myJob
,
'**/xUnitResults/*.xml'
)
addRoslynJob
(
myJob
,
jobName
,
branchName
,
triggerPhrase
,
triggerPhraseOnly
)
}
.\\cibuild.cmd ${(configuration == 'debug') ? '/debug' : '/release'} ${(buildTarget == 'unit32') ? '/test32' : '/test64'}"""
)
}
}
def
triggerPhraseOnly
=
configuration
==
'release'
def
triggerPhraseExtra
=
""
Utilities
.
setMachineAffinity
(
myJob
,
'Windows_NT'
,
'latest-or-auto'
)
Utilities
.
addXUnitDotNETResults
(
myJob
,
'**/xUnitResults/*.xml'
)
addRoslynJob
(
myJob
,
jobName
,
branchName
,
isPr
,
triggerPhraseExtra
,
triggerPhraseOnly
)
}
}
}
def
determinismJobName
=
"roslyn_${jobBranchName}_determinism"
def
determinismJob
=
job
(
determinismJobName
)
{
description
(
''
)
// Linux
commitPullList
.
each
{
isPr
->
def
jobName
=
Utilities
.
getFullJobName
(
projectName
,
"linux_debug"
,
isPr
)
def
myJob
=
job
(
jobName
)
{
description
(
"Linux tests"
)
steps
{
shell
(
"./cibuild.sh --nocache --debug"
)
}
}
determinismJob
.
with
{
def
triggerPhraseOnly
=
false
def
triggerPhraseExtra
=
""
Utilities
.
setMachineAffinity
(
myJob
,
'Ubuntu14.04'
,
'latest-or-auto'
)
Utilities
.
addXUnitDotNETResults
(
myJob
,
'**/xUnitResults/*.xml'
)
addRoslynJob
(
myJob
,
jobName
,
branchName
,
isPr
,
triggerPhraseExtra
,
triggerPhraseOnly
)
}
// Mac
commitPullList
.
each
{
isPr
->
def
jobName
=
Utilities
.
getFullJobName
(
projectName
,
"mac_debug"
,
isPr
)
def
myJob
=
job
(
jobName
)
{
description
(
"Mac tests"
)
label
(
'mac-roslyn'
)
steps
{
shell
(
"./cibuild.sh --nocache --debug"
)
}
}
def
triggerPhraseOnly
=
true
def
triggerPhraseExtra
=
""
Utilities
.
addXUnitDotNETResults
(
myJob
,
'**/xUnitResults/*.xml'
)
addRoslynJob
(
myJob
,
jobName
,
branchName
,
isPr
,
triggerPhraseExtra
,
triggerPhraseOnly
)
}
// Determinism
commitPullList
.
each
{
isPr
->
def
jobName
=
Utilities
.
getFullJobName
(
projectName
,
"windows_determinism"
,
isPr
)
def
myJob
=
job
(
jobName
)
{
description
(
'Determinism tests'
)
label
(
'windows-roslyn'
)
steps
{
batchFile
(
"""set TEMP=%WORKSPACE%\\Binaries\\Temp
...
...
@@ -129,8 +145,9 @@ set TMP=%TEMP%
.\\cibuild.cmd /testDeterminism"""
)
}
}
Utilities
.
setMachineAffinity
(
determinismJob
,
'Windows_NT'
,
'latest-or-auto'
)
addRoslynJob
(
determinismJob
,
determinismJobName
,
branchName
,
"(?i).*test\\W+determinism.*"
,
true
);
def
triggerPhraseOnly
=
true
def
triggerPhraseExtra
=
""
Utilities
.
setMachineAffinity
(
myJob
,
'Windows_NT'
,
'latest-or-auto'
)
addRoslynJob
(
myJob
,
jobName
,
branchName
,
isPr
,
triggerPhraseExtra
,
triggerPhraseOnly
)
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录