序言. Q9 Q1 m3 O: A
D& b' t; z) R
在开发大型项目的过程中,会涉及到多位开发人员以及测试人员。如果每次都让开发手动打包,不仅会在沟通上耗费巨大成本,打包本身也会耗费大量时间,造成没必要的资源浪费。而使用自动化打包方案,就可以省去沟通成本,在开发上传代码后,自动触发远程服务器打包,测试人员只需要等待该服务器自动打包完成,进行下载测试即可。这一套工作流程可以省去大量时间,提高工作效率。
7 [5 f9 ?* [7 n, x6 H) G; y6 `环境配置/ s& N% z- P! k) Z1 O2 }
: ~/ y9 n( c9 s8 j: c
业界常用的自动化打包方案便是使用Jenkins。
+ ^# m6 S* M& g& f7 P) w6 j安装JDK5 z' j; O0 E5 A* D9 R, i, U/ P
0 r3 q/ _: b2 ?- T( @) |
进入JDK下载地址,下载JDK安装包,注意版本号,选择Java SE 8。
& Y7 P! {7 ^' G8 n- c$ x$ b$ D, Z* z. W, g8 G. l
" v$ j# d$ `% s4 w6 b8 K; g
# r1 E( ?8 e* i2 d* r) Z可以输入以下命令检查状态
6 L" {& E9 D5 h% U$ jjava -version
安装Jenkins9 b- z7 d* Y% _4 j$ F- o( l( f
. [5 u6 f2 F! v; e2 S7 y
进入Jenkins下载地址,下载Jenkins安装包。
" S- n! Y2 T6 v p+ o% W' w/ h
依照图示步骤进行安装! |% k- ^0 I6 F( ?
安装插件
' B- ^$ [9 L$ {: S$ m
+ q' a. Q+ {1 @% _/ I点击Manage Jenkins 中的Manage Plugins,选择Keychains and Provisioning Profiles Management(负责管理Keychains和证书)、Xcode integration(负责Xcode构建)和Email Extension Template(负责邮件通知)。) R4 T& F$ `* f5 V
6 v8 F7 [4 L! G) z N6 u+ l; ~0 ^
配置Jenkins,关闭跨站点请求伪造
. {* Y& R& Z4 V0 K; q$ G3 e) o
7 ]9 m% u* c) W1 t3 \为了能让Github通知到Jenkins服务器,必须要关闭此项,此项会屏蔽任何的远程API形式的访问。1 E2 o! X+ x1 t9 b7 x! D0 D! _
进入Jenkins,点击Manage Jenkins里的Configure Global Security。
. P& N3 ~1 ^ S1 X, V8 D! g6 e/ K- ^8 D" Y0 E2 z9 [
" }! y C! K: E, v1 |
找到跨站请求伪造保护,取消选中。
( B5 ^' h0 Y$ y4 O/ v+ o: k' u/ e$ R1 v. |$ E; p
配置GitHub通知地址: B2 A% b3 @ O. g% m) z6 \
, _6 u; A3 I, x$ I! a. f+ s: ?7 w
进入Github中的项目,点击Settings里的Webhooks,添加webhook,将安装了Jenkins的服务器的地址填入,这样每次项目推送代码后就可以往Jenkins所在的服务器发送通知。
0 j/ k1 n7 Z2 i' F+ u5 V
地址为
% o, I5 w! R' j【Jenkins服务器地址】/github-webhook/
配置Jenkins访问Github的Access Token
; p+ r/ n7 c0 n: U& D" u5 ~# V5 ]9 z; e4 t3 Z9 M/ [: K! h3 }# _
Jenkins想要访问Github上的项目,必须要配置access token。首先打开Github上个人账号的Settings,点击DeveloperSettings,选中Personal access tokens,点击Generate new token。
i( n% S/ ~) G1 I5 B# X
在Note处填写描述,勾上repo和admin:repo_hook两项。$ J, g8 m' c; @7 b) o6 {. f/ J
1 L7 V% ?9 L1 I$ x0 _" O+ l
将生成的Token保存在合适的地方,一会会用上。; M" ~7 C3 U( Q) P( H
$ `/ d- y8 Y1 J+ {# x' K m& U
进入Jenkins,点击Manage Jenkins中的Configure System
- s9 U/ S8 v: w3 \! e" Y6 y0 H2 k. b7 g, U' p2 g2 {$ M' W
p4 M0 \8 X( C; k3 [7 ~; f9 a添加Github服务器K4 g% @- W% b1 X; t8 d' V. M
, z( _: [; A( w4 Y- N
" c4 M: e% H% Q0 B8 O! K$ V
添加凭据,选择为secret text类型,将Access Token填入。" h3 u) t2 o8 k# Q$ e; V
5 J% I& m: i, V, E2 k/ x! M9 I添加后,选中该凭据,点击右侧的测试按钮,如果成功则会显示“Credential verified”。
z+ U+ ]) h; c& k
$ _0 @ A& E/ n } Y
添加KeyChains和Provisioning Profile4 O. [- m* @0 _( \4 \
8 e8 [5 e- `) J1 K$ f& y& V* A选择Manage Jenkins中的Keychains and Provisioning Profile Management,如图( o. B+ P! H3 S1 Y2 W
% Y; i1 W$ j! \
2 V+ k' \1 R% U: i. v8 `# T
上传keychains文件和Provisioning Profiles文件,文件路径如下
; o+ @# n* G( H$ x. o~/Library/Keychains/login.keychains~/Library/MobileDevice/Provisioning Profiles/【Provisional Profile文件】code signing identify填写钥匙串中对应的项目所用到的provisioning profiles的名字6 P+ i, ~) R9 [. J
创建任务% C; r3 w; M$ f
* g: o h9 L1 Z9 a T0 L* x新建一个自由项目的任务
- T* m" } P' e) x& @# w. i
" m, E+ s7 x4 J$ d# r$ l' i
配置Git& X( |7 I2 B4 D* @7 \' p% R2 n
. ]5 Z0 F; Q% k) h" c% _
6 B6 b, i1 t. x# E0 q y* m5 x; G勾选触发器,此项代表追踪Git源码变更* w8 M* p3 [8 n s
7 D* n% L; t1 G. C: m; v. F
( t5 X4 `+ {8 j2 B
构建环境勾上Keychains and Code Signing Identities和Mobile Provisioning Profiles% P3 F. ~- u& q. N+ i5 M3 b
配置构建步骤8 }7 x; j" K6 b, A, n
选择xcode构建方式8 P5 a; K( G1 r; |9 n+ [0 E
( }/ @1 Z/ z t9 `
: z+ b! h5 g+ n1 q8 Z
打开General build settings中的Settings
$ [1 o& a) n$ q9 h6 C, p! c; v" y/ V: f! l; U* O
( U4 {* M, q5 ]- O: [) ]填写Configuration和Xcode Schema File。0 g( y9 q1 w+ g
填写ipa的一些设置- }: u" W2 V, i" Q q4 n; K
, I' Z3 t6 {0 a+ g2 H" t9 L
9 l* D, ^# C) G5 \打开Advanced Xcode build options
! u/ L% L8 o. W- K4 }/ Z2 g" x. b. m( }8 c5 {9 s
配置构建后步骤
/ @ ^6 [5 b) I, {* s! N选中Archive the artifacts和Editable Email Notification。这两步作用分别是在jenkins上生成ipa包下载连接,以及使用E-mail通知。
( K% k* {1 @+ H# c/ v7 a& z: q' e4 v+ P* ~ I& Z
8 |! O& ^$ r5 q7 N* K
/ k: _ _0 y5 ^1 S
N3 S0 P9 R% e设置邮件触发器为每次构建成功就往Recipient List中的邮箱地址发送邮件。' i0 d4 A. q# F1 ~. r3 H2 I
1 x9 A4 P$ b/ c; F4 n: d
配置邮件设置
' f: K$ G" q4 W! P- |进入Manage Jenkins中的Configure System,配置JenkinsURL和系统管理员邮件地址5 H2 w' P" H8 }( `
* |/ ]' `( C1 b1 D* ~* A" I
设置为每次成功构建就发邮件。% I! ^0 I ^8 s, F
结果验证5 ~2 i/ n& v: V
4 Q/ F, @$ F$ }
往github上的项目push一次代码,验证结果。
P( v* S5 w2 q4 }- n5 ^可以在Jenkins对应项目中的GitHub Hook Log中看到,监测到18:54分的代码推送,自动触发了#27的打包。" B9 A% X7 H% T
: Z' H1 k; o7 k1 i4 w% u+ \
; w V# x7 d2 _" h+ \, y, N- n构建完成后,邮箱也收到了通知,并且附上了网址。
: R! ]; t [+ J, k- y% j
2 s C; D8 ?* n3 f/ C; t6 N
m4 [$ b3 L% q9 Z7 A7 X* b! c! N6 g8 [进入该网址,可以看到构建好的#27的BlogSample项目的ipa包,并且也将commit信息附在了上面。0 x; m$ q- t' G) S2 }3 K# }
总结* \2 n' T* K! p) n/ b
- X, G9 D8 U7 x! G* A" k- c通过这样一套流程,每当程序员将代码推送到指定分支的时候,就可以触发Jenkins的自动打包,当打包完成后,将会发送邮件给测试人员,测试人员就可以通过链接访问Jenkins上对应的构建包,进行测试,省去了很多不必要的沟通成本,从而提高开发效率。{/ [& o1 [: [+ u5 d
4 |6 ?( s0 J/ L! m! _) L9 Z; b$ z- a
Java吧 收集整理 java8论坛 www.java8.com