TA的每日心情 | 开心 22 小时前 |
---|
签到天数: 235 天 [LV.7]常住居民III
管理员
- 积分
- 8335
|
Java电子书:Jenkins 2权威指南 PDF 电子书 Java吧 java8.com3 o' D7 c; R1 f2 {9 o, n
) m4 G. M) G5 k& d
作者:Brent Laster(布伦特·莱斯特) 著 郝树伟,石雪峰,雷涛,李华强 译出版社:电子工业出版社出版时间:2019年04月
0 J6 K. ~& {& w% j9 D% V, J3 m" ^1 Y- u: D: c
编号:166-Java吧资源免费-X0058【Java吧 java8.com】4 r6 p( s- b' e, k
$ t2 I7 p$ \) \6 H0 B0 j4 ^7 N. }7 A ~1 G2 W$ D' T# d0 x
. r3 d; z2 w0 N* z/ i- C( L
目录:# D, b0 m3 W% G0 Y5 G
" M1 A& G( j! Q# ~
% _9 |; O5 k' M( m: N第1章 Jenkins 2简介 1' g4 Y( o; }* _; ^
Jenkins 2是什么 2
* W9 t: r, W4 A2 A/ c% LJenkinsfile 38 P( @4 k# B5 N/ U, m: q; @0 Y
声明式流水线 5
2 `1 b( f5 ~6 O$ S% s; BBlue Ocean界面 6& Z% C) A8 ^ d+ W8 ]2 {7 Q. E! S
Jenkins 2的全新任务类型 7, P6 N+ \7 C7 V7 u5 c$ |. W
做出转变的原因 10
4 f w; m9 C8 j+ cDevOps理念的转变 108 ]' h8 O" ?( o- ]; {/ k% {' V1 I
装配流水线 11
3 ?! i; G. ` O9 B" C, }可恢复性 11
/ z6 u9 [- l0 m3 n8 Z, t5 Z$ G- [可配置性 11
5 f# B3 L9 M$ B- ]% E0 h ?# {共享工作空间 11
+ Q8 g1 _# b& D3 p/ p# v. g专业知识 12. [. j! c7 m; D
访问逻辑 12
L( c6 q) h) Y: \( d流水线源管理 12
/ ~. i( E0 ?8 C1 S- t! h7 K竞争 12
) A* Y7 o8 ^3 H2 ^6 \迎接挑战 13
% d/ v0 Q7 C) d兼容性 13
; H6 k6 a6 u# B/ ]/ h1 D% }流水线兼容性 132 i+ M* S, Q7 m7 X+ |9 n
插件兼容性 15
2 V& p- N d1 R7 T7 X5 ^$ N检查兼容性 20( W( R* B# V7 K+ Q' x
总结 21$ r* U( r7 `- ^/ L( ~5 d O
第2章 基础知识 23
: z4 b' b$ x4 V) e5 F- u语法:脚本式流水线和声明式流水线 240 T4 |8 J% G- h2 q! a
如何选择脚本式语法和声明式语法 25: P% I/ H$ n Q5 a0 n8 D) [
系统(system):主节点(master)、节点(node)、代理节点(agent)和执行器(executor) 26
8 @" E( I5 Z3 \& m主节点 27
c Q% _* P' Z8 Z# g% w/ j/ G节点 27, t5 a% O% C. Z) {6 K- @& w
代理节点 27/ A: @/ Q6 l& \
执行器 289 u& b/ t$ H* }- f5 S0 S4 Z5 O" {
创建节点 29
\9 L& u& _! _结构:使用Jenkins DSL 31
/ X4 x- H1 w5 {节点 32" U$ v2 N- c' C
阶段 34
( I0 H! X5 j8 C9 m1 k! I! X; W步骤 348 e' n j% @4 O2 J2 Z2 q/ z
支持环境:开发一个流水线脚本 36
% D( y/ o7 K- z z+ ^创建一个流水线项目 36
# m* L: O8 l! K+ q1 ]编辑器 38) t- h: f- I, ]5 z# p' ?
使用代码片段生成器 39
" |3 P1 O; u8 |6 |: ~8 n& Z% X5 x运行一条流水线 43
9 |: |4 s* H( R& c6 q( n6 w4 W回放 49- w9 Z* n* a( E% c; m
总结 52
8 l9 o, T8 C! t* ?' P第3章 流水线执行流程 53( _. ^1 Q' u4 U3 f
触发任务 53( b d3 \8 `& c( p1 @( j
在其他项目构建后构建 54" S9 r) Z! y5 _3 T) }
周期性构建 54. U- M7 s) A& D
使用GitHub钩子触发器进行GitSCM轮询 576 B2 L" _. `7 h* t& ~. D8 j8 Z
SCM轮询 57- c2 [2 s% B5 x4 i) H4 B
静默期 58
0 e& Z$ n3 P4 |( R0 v5 ?/ }) v Z4 }远程触发构建 580 k: c& O# e+ ~& U/ l& |
用户输入 58
) b/ [% n+ d) @! S6 A输入 59
, }$ n2 [, t. l; M" z3 ]) l参数 62
& g5 a% h8 v2 C; h& c, Z多个输入参数的返回值 680 G4 k7 M6 F* y, U- n+ O
参数与声明式流水线 69
, }1 h8 W6 e) J7 C W) V流程控制选项 74
# j+ T, L, D* e# Q超时(timeout) 74" T3 z0 D3 ]5 z$ }! ~' J
重试(retry) 76
, R) F0 m) M; H C睡眠(sleep) 76
! ~+ C, \3 N" Z' H等待直到(waitUntil) 76
9 r) D" Z& b3 S/ S' y处理并发 78$ M9 o: K5 W: p1 p" ^4 B$ [( }- t
使用lock步骤对资源加锁 78/ r* M5 M& {( p! H% {8 j% G
使用milestone来控制并发构建 809 o( K+ I, ~8 Q. M
在多分支流水线中限制并发 828 a# s' l6 j1 e% f1 z
并行地运行任务 821 S2 U R3 y9 x. d: j; w5 Z: X
有条件的执行功能 92% ~% d# K3 x# Z$ i: a% j, a4 a
构建后处理 .94
3 V2 }/ ^" D# B9 f脚本式流水线构建后处理 94
: ^! ?, Z* e6 h6 b) _0 r( ^; u0 p8 h声明式流水线与构建后处理 96. ^$ E& i8 P/ ^& z8 x1 F
总结 97& f7 A/ s( h* G+ d
第4章 通知与报告 99
6 f7 U" O6 D$ T0 z- ~3 e7 a) W通知 99* ?2 @8 f! T. l6 v, ^6 N+ ?6 S& J
电子邮件 100
# W( R8 e# q ^协作服务 110
1 t! T X: C% F* _( i报告 120
( E3 ]4 z* ?4 \' z7 T' V发布HTML报告 1202 K( A! Y/ T$ [& ]0 L$ e$ W. Z
总结 123
/ x( B1 v" t' R第5章 访问与安全 125
. Y; Y+ n- G% W* j安全加固Jenkins 125
4 h b, V, y2 o3 p启用安全性 126
+ q& k8 \9 n* l( o其他全局安全配置 129+ T5 g$ k9 ~5 h/ B% s6 t
Jenkins中的凭证 133
, ~ c; Y) e( |/ N. R# y$ j凭证范围 134
0 J# {( K) `1 P+ L9 @' Z& x凭证域 1352 _) ?% l9 N. E9 w6 x
凭证提供者 135
; C( W: @$ R% y* b凭证存储 136* u- D6 f* \) e. e5 M- p8 X& Z+ m& e
管理凭证 1365 _( W+ F: N5 I
选择凭证提供者 1364 `! [* d7 V! k5 ^ y" X I6 n
选择凭证类型 137
' J' v. c, u. _( D7 B+ c通过提供者指定凭证类型 138
' t# E1 c9 M& k( r! o5 o创建和管理凭证 139
7 e0 v g- l1 X9 a: A上下文链接 1410 U; g& E0 R9 m" D0 N
添加一个新域或者凭证 1414 u' l* C: w1 e+ d8 `/ P' v: c
使用新域和凭证 144
4 W5 g, S; m' X+ d& m高级凭证:基于角色的访问权限 145
. `% g$ D' @# r7 z3 y- d; ~基本用途 146
+ v. R" ~; K1 Z }% }管理角色 147! z% J6 b N5 A
分配角色 152
1 F0 ~* a \3 `$ u V4 v角色策略宏 1554 X7 I2 Q; `' x/ Z1 e
在流水线中使用凭证 157
; s' m" h( i" [* K8 ?5 H# p用户名和密码 157/ ]# |# s# |+ P& W; q8 d7 r& C+ t
SSH密钥 1580 ]: k1 } b& E [) A; h2 Q. B# D
令牌凭证 159
' n3 x5 o H t( f控制脚本安全性 160
9 y+ n3 [% K0 x# K1 K! P脚本检查 160; e$ N* ~5 \9 [' n% O1 {
脚本批准 161
& M @& }+ A" GGroovy沙箱 162
: ~& `# E4 S r4 |Jenkins凭证与Vault配合使用 164
# g* O; U% u$ n; \0 B方法 164
5 t T% G! c8 S7 y% N0 P; ^安装 165! w; T. m( w! J- O( V
创建一个策略 165
6 J0 \- J% q0 k& T' y身份验证 1664 Y/ W# `; C5 w% b) R4 `2 @ {$ |
在Jenkins中使用Vault 168" e" `# [) |7 a" J
总结 171
4 J5 o: a1 k/ q9 Y. b第6章 扩展你的流水线 173+ h; p& u0 U3 |$ p+ Z8 f; W
可信库和不可信库 173
( X0 t) v5 G+ \* |. q1 F, {3 Q内部库与外部库 1748 H' n: O: i2 |1 Q$ I; t7 T& K
内部库 174" H {8 J9 @) O/ W" M9 U+ l
外部库 176
5 f, q6 Q/ U2 y7 S从代码仓库获取库 178, n$ J9 N1 \6 V0 u7 G
Modern SCM 178
: R o9 Q% s7 H; C! B- F+ VLegacy SCM 178
+ l1 E* o9 c' c5 k% i6 W; S7 ^在流水线脚本中使用库 1792 @8 N" M8 t& q! W4 Q1 D9 x
从源码版本控制中自动下载库 180, C; w1 [/ E) O" X c r U5 @
加载库到脚本中 180
8 T: ~" Y3 [. X& p4 i! W" [Jenkins项目中的库范围 182 K n- K& y. Q
库结构 183
5 ^+ ]4 }9 Y T) P8 A8 x样本库例程 183
& u. M, p3 T1 r2 K7 _* R共享库代码的结构 184/ \7 [2 @$ w' W' W1 r
使用第三方库 1957 g! y3 n l) ]
直接加载代码 196
1 [ G- e3 V1 J3 {5 }& V3 e从外部SCM加载代码 196
Q' O& j3 E- {# D/ ]8 l, }回放外部代码和库 1981 M ~: s( i, G( ?
深入研究可信与不可信代码 200
" o; L C* A5 }$ X% j+ q, l1 \; g, f总结 203
; t5 B. H4 J2 V: c第7章 声明式流水线 205
# g5 s! } X4 x: i动机 206% j* s3 i0 e8 u4 S. u. h
不直观 206
: A( }. N8 n6 g. q' Z! _7 Y; `. C( R7 x掌握Groovy 206) l9 X. I$ B% l g
其他必需的装配 206
$ T" p5 B$ M3 h! g) K9 `结构 207
( w. G& B' x1 c0 G O% F0 A代码块 208
* z- G/ @! S. y部分 208' t( |$ L! B) R* S- K% b, m
指令 209
7 e6 j8 a4 B& t* x5 m6 e步骤 209+ V) W g1 H3 R
条件 210, E* ^( s9 {- c: `( E
构建代码块 210
0 }: L4 c$ ^7 P8 [6 G& @pipeline 2111 }- N* [4 [2 I
agent 212' Q j) M7 t2 X+ Y; R
environment 215
! z3 m/ V" p# ^& @/ B4 ttools 216
3 e5 E$ I4 M E( L$ ?0 Eoptions 2194 S, J; p7 V! r b( P" f
triggers 2225 z/ q# O1 K0 ~* ^# J' Y
parameters 224
0 F: E4 }! ]' u4 F llibraries 2273 l; ^5 x$ y, Z# g7 `$ U, e
stages 228: V1 K, Z1 ~' T7 L8 l
post 231) p- k: c5 t- I+ A, ^
处理非声明式的代码 232 Q/ S; t! V. v- [+ M# q
检查你的插件 233
4 s/ s& f. X0 {* m) V创建一个共享库 233- w- @* h1 O- M( X# [0 q7 D
在pipeline代码块之外放置代码 233
! [6 r9 j3 ?. ^5 F" j! Ascript语句 234" y& S0 W- P9 L! Q F. r
在一个阶段中使用parallel 2343 M/ S% v9 y6 H& V) z
脚本检查与错误报告 235
$ Q. Y, D/ p& A: V声明式流水线与Blue Ocean接口 238
: y' r6 Y6 z/ I8 ^1 G# E! E( H& W& _总结 238
0 m- T) l1 T( p& _+ C$ j第8章 理解项目类型 241/ C6 g; Y8 H& h& }
通用项目选项 241+ Z& H L7 S3 P! V+ @
基础设置 241
! \$ _# q& S5 x5 u' `- t0 m3 T源码管理 247" o6 @( W4 n& M* m
构建触发器 249" {0 A1 E! ]& R4 f: E2 \0 s
构建环境 256& v D g, ~( |' h
构建 266
) E! K+ _: W' ^! x3 M+ G构建后操作 266
5 D' n0 H* ?4 x7 O, D/ p项目类型 266# W6 x1 f e5 w* Z) d: M' k
自由风格类型项目 267
) F# [! r; \6 c" V5 o: ~' MMaven项目类型 267
2 n% L8 n( s+ Z# |. a: P# [流水线项目类型 270
1 J! n' h4 I* T! J& B& i外部任务项目类型 272
$ U1 ?. Q5 D4 a7 }多配置项目类型 275# M- b c+ Q# o! M- c6 E ~
Ivy项目 280
' F: Y8 ?2 T" g) h文件夹 282
4 u4 v, [/ f1 j! o4 A4 w) b1 y多分支流水线项目 287" P& s/ |6 s6 O. L7 E( p5 l
GitHub组织项目 292/ R( e0 u* x+ c# ^+ C
Bitbucket团队/项目 296
& p2 R/ `/ [$ j8 p. q' n总结 299
$ l, I) @% E. Q& |* q第9章 Blue Ocean用户界面 301
! }$ e- l9 c+ g' `- ~部分:管理已有的流水线 302/ M9 L0 c; \: j$ M6 U
主界面 302
8 c+ n1 Z5 {# `# |& f项目详情页面 3058 W; x7 n1 f- H+ f3 m
运行页面 316
/ u" x8 I" |% w* q |! S第二部分:使用Blue Ocean编辑器 325
6 J3 [. W/ D. p- p不依赖现有Jenkinsfile创建一个全新的流水线 326) D. S0 J/ k: k0 @( H9 c, v
使用编辑器 330
7 L1 `5 m5 V9 n+ z编辑已有的流水线 340
6 y [6 n* _: O+ b5 L$ Q导入和编辑已有的流水线 344
) E# h+ U1 i' [: {使用非GitHub仓库支持流水线 354& S2 J) t4 D p' U( W
总结 356
0 p) N; q: z: r/ r第10章 转换 357
+ I# R. P) O o! `( D$ a通用的准备 3589 y- f9 S( F, f; }2 h
逻辑和准确性 358* X8 H* r W. T2 p
项目类型 358- u( ]0 S) a) k
系统 358
& j9 l. d- {6 e1 w1 b ~访问 358" H' P' K0 u4 p' [) k
全局配置 359) U: a: m3 O) _3 q
插件 359
$ H, F% Z9 T$ m共享库 359
; F4 j8 ]2 Y3 N将自由风格类型的流水线转换为脚本式流水线 360- ?# e+ F4 _$ Z
源码 3648 g2 O7 H8 e' v6 M+ q) S" l
编译 369 p, T5 w( @/ x
单元测试 373
- L5 Z; K1 ^3 Q: m6 k! ~集成测试 377& V. ]* ~2 C% L# V- Q
迁移流水线接下来的部分 380" }4 U! V/ p5 ]8 g2 Q' Q
从Jenkins流水线项目转换为Jenkinsfile 385
! }; a) h. g- o# s方法 3881 _2 \$ j8 N/ |- c% M( Y
后的步骤 3953 B* E4 U s, X/ J9 l- B
从脚本式流水线转换为声明式流水线 397& d! {* l- ~; {* J9 N3 ?
样本流水线 397
1 n: ?- m- G! }, Y" y转换 399 g+ `7 W7 L1 j: X2 @' ~8 |
完成转换 402
% n3 K& Y0 U7 X; V/ ^可用于转换的通用指南 403" ]0 k1 P) g ?* p0 L: c
总结 405# i4 a, m5 r D9 C9 p+ T2 Y
第11章 操作系统环境集成(shell、工作空间、环境和文件) 4075 j& s0 n; M0 M. P1 `
使用shell的步骤 407
1 z* w4 r) y) z+ D( lsh步骤 408# q- {3 ~# K) ^! `% g
bat步骤 413/ D& m0 N% Z+ q
powershell步骤 414/ x# D4 p. K6 u
使用环境变量 415
( \# k$ t- z$ G+ \8 m! |) _# N$ ^withEnv步骤 416
. d6 `# V% S0 {- g- }. Y4 g使用工作空间 4184 |) x- [( O$ t7 ?5 `
创建自定义工作空间 418
9 c7 `( Y* s0 D' P清理工作空间 420
: G3 D R$ _+ W) d. L文件和目录步骤 422
" A3 m( b' I( @: f2 }) }: q使用文件 422
5 e. ?$ t& S. m0 b使用目录 423
3 J2 x% Q7 w$ G使用文件和目录的更多操作 424! e+ e. A# p$ o. H
总结 4253 v( j6 Q* B0 d4 q% f
第12章 集成分析工具 427
& _/ M- B9 c$ V$ |5 L9 s# @3 r; XSonarQube调查 427
+ U$ Y p0 P% m使用个人规则 428
% U% u+ i7 v/ q# a% e: R3 k质量门和配置文件 432
; @. ]% q2 ?! v/ f+ z扫描程序 434
( \: I7 j, S) Y将SonarQube与Jenkins一起使用 434- x# G! W! ?% A @- L1 R
全局配置 434+ w% {7 e! u+ O' x4 N3 q4 \: y
在自由风格类型项目中使用SonarQube 436
' X J& r( c9 k5 t在流水线项目中使用SonarQube 436
1 g M0 [; }7 u' o3 S! h利用SonarQube分析的结果 437& y' Z9 U' v$ _0 D+ J5 |- O" Q' ~
在Jenkins中集成SonarQube的输出 441
% [- s! w" O3 h! ]8 T, L1 n代码覆盖率:与JaCoCo集成 442. d F8 I9 \4 D& Q% _+ ]2 ]1 x4 }6 o
关于JaCoCo 442
" n1 |" } f: kJaCoCo与流水线集成 4436 U+ K$ C" p# [* e) l8 x9 C* s1 X
在Jenkins中集成JaCoCo的输出 4451 T0 |& g' |/ X& O
总结 446
! _2 B) ^& z. m' R第13章 集成制品管理 447* @7 d) S9 a& W0 @ x( h2 P" ^
发布和获取制品 447
( \7 x" T' u9 p" V' ~: Y9 K0 R安装和全局配置 448. r D3 N% O5 c1 p0 k2 {( J
在脚本式流水线中使用Artifactory 4491 B: U8 z4 X& `% i; ]
执行其他任务 454( u5 S: ~' H: b& Q$ C$ }3 e
下载指定文件到指定目录 454
4 m% \' W! e, b/ u7 E! d, h, q上传指定文件到指定路径 454
0 t: T, ?, f& D8 d" c5 b: ]设置构建保留策略 455$ T3 \# S( j" S: Z+ r- L
构建提升 455+ _* I% ?4 p) ~; V/ x1 u- o5 t: s
声明式流水线集成 455' K, D0 M' @9 R0 w) Z" m
Artifactory与Jenkins输出集成 456+ }* U p- _* `4 K9 i H
制品归档和指纹 457
. u9 Y& f. ~$ Z7 }* k总结 462
8 y0 m0 p: }' C1 U- ~3 [第14章 集成容器 465: }/ `8 E% q; ]$ \( C
配置成一个云 4658 \5 f8 X6 o9 _) R" F* @9 e
全局配置 466
% Z2 n6 i' ^& H' i, u, `! `使用Docker镜像作为代理节点 469: R* E1 H: u* b4 \" T0 U
在流水线中使用云镜像 473+ U+ |8 R. V2 U4 Q K4 I
在声明式流水线中动态创建的代理节点 4774 S& X+ C8 P! G! M* ^/ H
Docker流水线全局变量 4802 |; T) c. l1 ]/ R( S
全局变量 480
0 A- _! Q; G1 R$ A3 p. XDocker应用全局变量方法 4817 k R* `8 s+ M* A* B" D
Docker镜像全局变量方法 487
9 N2 Q) Q. R4 w& S2 N) ^Docker容器全局变量方法 491
2 O# d2 P3 G3 u通过shell运行Docker 4928 E: D: \# r* ^2 [5 q: }7 J: s4 ]
总结 493 java8.com
4 V1 J5 j T" k# c, C5 Y: S1 [1 e第15章 其他接口 495$ s( D1 F6 l6 w# }
使用命令行接口 496
+ H; M8 l2 \* h0 p直接使用SSH接口 496
) A/ A8 `/ n9 G7 _& ^3 f ^使用CLI客户端 499
! {" C" B" c8 x# C* o) y" m使用Jenkins REST API 501! `6 O* |8 L0 W
过滤结果 502* |/ H2 B, P1 x
启动构建 504
) i( ]4 @5 P( n使用脚本控制台 506% E5 J: Y) u# ]6 ~" `- c" p
总结 508# \) F6 h7 E' ~& w/ z
第16章 故障处理 509
! a5 q r6 A9 I2 j; W深入流水线步骤 509
+ n# n9 }3 w4 z$ m6 L) N2 ?处理序列化错误 512
3 i. M* O9 r7 Q! F3 k$ v2 s4 ~连续传递风格 513
4 a7 E4 d% A/ W; i9 i& ~序列化流水线 513! E- t: i Y9 K# q1 L
NotSerializableException 513+ x; E" w: P' d1 |+ j8 U
处理非序列化错误 5145 T2 v* r8 Y2 P& |7 ^! O: E
识别引发错误的脚本行 517. K7 J$ ~6 O, m _9 Y" q
处理流水线异常 5188 M d w" B# |- y1 h
在声明式流水线中使用非声明式代码 518
G; ^- s# h2 G: r8 Y' { X未授权代码(脚本和方法授权) 522
# \% L4 ?4 B o2 z6 w( a1 M4 e1 C不支持的操作 523. T1 u Q5 Y; D/ _
系统日志 523
3 W/ I5 K( O+ m8 g$ h* f: ~时间戳 5256 g$ `8 B7 c. x# o
流水线耐用性设置 526
* |6 Q& X7 q- _% s总结 527! z" n2 D: X( D1 B, Y8 H8 a
关于作者 529
% e4 {2 D4 l# C& Q' `封面介绍 5299 \5 x" Y- e- Y0 Q% z: W/ i
关于译者 530
! y* E V1 D+ w& i9 }% @5 I- m% Y+ t6 i0 h
8 h- m4 n- b9 d' b! a+ t
百度云盘下载地址(完全免费-绝无套路):8 u6 Y; I4 p% r6 [6 w1 ~; c
" H0 \1 [" V4 ?. f0 V, x
B+ C m; s! J6 e
6 Z. S, J( d2 d
! b' I9 X# ~5 r, m/ V/ O/ p( J+ O
; z' j* @0 D+ [4 h
9 J& n* |" m' s" G
" X5 c5 @6 o- |; d& u |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|