Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
d3a35ef0
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,发现更多精彩内容 >>
提交
d3a35ef0
编写于
10月 01, 2015
作者:
T
Tanner Gooding
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Adding netci.groovy for dynamic job generation in Jenkins.
上级
24f8a59c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
190 addition
and
0 deletion
+190
-0
netci.groovy
netci.groovy
+190
-0
未找到文件。
netci.groovy
0 → 100644
浏览文件 @
d3a35ef0
// Groovy Script: http://www.groovy-lang.org/syntax.html
// Jenkins DSL: https://github.com/jenkinsci/job-dsl-plugin/wiki
static
void
addLogRotator
(
def
myJob
)
{
myJob
.
with
{
logRotator
{
daysToKeep
(
21
)
numToKeep
(-
1
)
artifactDaysToKeep
(
5
)
artifactNumToKeep
(
25
)
}
}
}
static
void
addConcurrentBuild
(
def
myJob
,
String
category
)
{
myJob
.
with
{
concurrentBuild
(
true
)
throttleConcurrentBuilds
{
throttleDisabled
(
false
)
maxTotal
(
0
)
maxPerNode
(
1
)
categories
([
category
])
}
}
}
static
void
addScm
(
def
myJob
,
String
branchName
,
String
refspecName
=
''
)
{
myJob
.
with
{
scm
{
git
{
remote
{
github
(
'dotnet/roslyn'
,
'https'
,
'github.com'
)
name
(
''
)
refspec
(
refspecName
)
}
branch
(
branchName
)
wipeOutWorkspace
(
true
)
shallowClone
(
true
)
}
}
}
}
static
void
addWrappers
(
def
myJob
)
{
myJob
.
with
{
wrappers
{
timeout
{
absolute
(
60
)
abortBuild
()
}
timestamps
()
}
}
}
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
)
}
}
}
}
static
void
addUnitPublisher
(
def
myJob
)
{
myJob
.
with
{
configure
{
node
->
node
/
'publishers'
<<
{
'xunit'
(
'plugin'
:
'xunit@1.97'
)
{
'types'
{
'XUnitDotNetTestType'
{
'pattern'
(
'**/*TestResults.xml'
)
'skipNoTestFiles'
(
false
)
'failIfNotNew'
(
true
)
'deleteOutputFiles'
(
true
)
'stopProcessingIfError'
(
true
)
}
}
'thresholds'
{
'org.jenkinsci.plugins.xunit.threshold.FailedThreshold'
{
'unstableThreshold'
(
''
)
'unstableNewThreshold'
(
''
)
'failureThreshold'
(
'0'
)
'failureNewThreshold'
(
''
)
}
'org.jenkinsci.plugins.xunit.threshold.SkippedThreshold'
{
'unstableThreshold'
(
''
)
'unstableNewThreshold'
(
''
)
'failureThreshold'
(
''
)
'failureNewThreshold'
(
''
)
}
}
'thresholdMode'
(
'1'
)
'extraConfiguration'
{
testTimeMargin
(
'3000'
)
}
}
}
}
}
}
static
void
addPushTrigger
(
def
myJob
)
{
myJob
.
with
{
triggers
{
githubPush
()
}
}
}
static
void
addPullRequestTrigger
(
def
myJob
,
String
contextName
,
String
opsysName
,
String
triggerKeyword
=
'this'
,
Boolean
triggerOnly
=
false
)
{
myJob
.
with
{
triggers
{
pullRequest
{
admin
(
'Microsoft'
)
useGitHubHooks
(
true
)
triggerPhrase
(
"(?i).*test\\W(${opsysName}|${triggerKeyword}|${opsysName}\\W${triggerKeyword}||${triggerKeyword}\\W${opsysName})\\Wplease.*"
)
onlyTriggerPhrase
(
triggerOnly
)
autoCloseFailedPullRequests
(
false
)
orgWhitelist
(
'Microsoft'
)
allowMembersOfWhitelistedOrgsAsAdmin
(
false
)
permitAll
(
false
)
extensions
{
commitStatus
{
context
(
contextName
.
replace
(
'_'
,
'/'
).
substring
(
7
))
}
}
}
}
}
}
[
'master'
,
'future'
,
'stabilization'
,
'prtest'
].
each
{
branchName
->
// folder("${branchName.substring(0, 6)}")
[
'win'
,
'linux'
,
'mac'
].
each
{
opsys
->
// folder("${branchName.substring(0, 6)}/${opsys.substring(0, 3)}")
[
'dbg'
,
'rel'
].
each
{
configuration
->
if
((
configuration
==
'dbg'
)
||
((
branchName
!=
'prtest'
)
&&
(
opsys
==
'win'
)))
{
// folder("${branchName.substring(0, 6)}/${opsys.substring(0, 3)}/${configuration}")
[
'unit32'
,
'unit64'
].
each
{
buildTarget
->
if
((
opsys
==
'win'
)
||
(
buildTarget
==
'unit32'
))
{
def
jobName
=
"roslyn_${branchName.substring(0, 6)}_${opsys.substring(0, 3)}_${configuration}_${buildTarget}"
def
myJob
=
job
(
jobName
)
{
description
(
''
)
label
(
'windows-roslyn'
)
}
if
(
opsys
==
'win'
)
{
myJob
.
with
{
steps
{
batchFile
(
".\\cibuild.cmd ${(configuration == 'dbg') ? '/debug' : '/release'} ${(buildTarget == 'unit32') ? '/test32' : '/test64'}"
)
}
}
}
else
{
myJob
.
with
{
steps
{
shell
(
"./cibuild.sh"
)
}
}
}
addLogRotator
(
myJob
)
addWrappers
(
myJob
)
addUnitPublisher
(
myJob
)
addConcurrentBuild
(
myJob
,
'roslyn-internal_unit'
)
if
(
branchName
==
'prtest'
)
{
switch
(
buildTarget
)
{
case
'unit32'
:
addPullRequestTrigger
(
myJob
,
jobName
,
opsys
,
"unit((\\W)?(32)?)"
)
break
;
case
'unit64'
:
addPullRequestTrigger
(
myJob
,
jobName
,
opsys
,
'unit((\\W)?(64)?)'
)
break
;
}
addScm
(
myJob
,
'${sha1}'
,
'+refs/pull/*:refs/remotes/origin/pr/*'
)
}
else
{
addPushTrigger
(
myJob
)
addScm
(
myJob
,
"*/${branchName}"
)
addEmailPublisher
(
myJob
)
}
}
}
}
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录