请选择 进入手机版 | 继续访问电脑版

ITIL,DevOps,ITSS,ITSM,IT运维管理-ITIL先锋论坛

 找回密码
 微信、QQ、手机号一键注册

扫描二维码登录本站

QQ登录

只需一步,快速开始

搜索
查看: 4866|回复: 0

【52ABP实战教程】-- Devops如何用VSTS持续集成到Github仓库!

[复制链接]
发表于 2018-11-18 15:54:11 | 显示全部楼层 |阅读模式
本帖最后由 adminlily 于 2018-11-18 16:07 编辑
( I5 [& w: [' z. ?
0 x2 o: Q- h' P- H$ t5 |/ P; I
“ 工欲善其事,必先利其器。磨刀不误砍柴工!”

4 p& J$ C! C' c# S8 a8 U9 @8 g3 W* q/ v) J, [4 G6 j
  • 管理工具会VSTS。

    . m: y" e; J2 a' U

# E$ V) T, G) a
# s9 E' J  i* r/ g
  • 代码管理会用GITHUB。
    9 L$ \8 I1 l* d  |
% A# Z3 `5 m8 W& K4 {' G

2 i# {/ h; t% H5 l
  • 服务器会用Azure。

    2 i  W9 _9 d+ {0 U& o# P

    ; |( k8 _8 O6 i6 O
    所有的东西都是利用现有服务。不会说自己从虚拟机开始玩。我们就专注于写代码。
+ v; @1 W  ^3 c; b$ S
# @% X9 W% a' {  ^! m! x
什么是VSTS?: |& |6 N: ~, X: j/ W# C: R
VSTS的全称是Visual Studio Team System。

; R, n$ z1 x- |

; t* D) o3 W$ o; z7 w, Z* l5 b' v4 ~0 H介绍VSTS之前先说下TFS(Team Foundation Server)。

- v" G1 p0 Q+ i

2 A6 }! t% D4 |. S
TFS是微软推出的一款ALM(Application Lifecycle Management)软件生命周期管理工具。通过它你可以从代码管理->代码版本管理->项目管理->持续集成->自动发布->自动测试等一系列软件生命周期在内的全家桶功能。
2 I7 Q* q$ g6 u% T; w5 L  }  j4 D

% W" x1 u6 Z; f# o' }- \1 _8 B
VSTS(Visual Studio Team System)是基于SaaS(多租户)化TFS的云产品。
, G" u3 U- a, J( c5 \

2 J  M$ M5 D1 Q% t2 D6 d; R0 y听了之后是不是感觉很强大。

' _! m& s0 z# F( w

+ _4 O+ v: G/ V  X' s
关于Github
# c0 c$ f  u$ q* `. K
! ?) W/ h8 W& f' a% [" v8 ?# U' A3 S- f+ g8 `
Git 是由 Linux 之父 Linus Tovalds 为了更好地管理linux内核开发而创立的分布式版本控制/软件配置管理软件。
3 t  [3 O% o/ C+ O& S& \

% F* ?' _! Q! kGitHub是一个通过Git进行版本控制的软件源代码托管服务,由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath、PJ Hyett和Tom Preston-Werner使用Ruby on Rails编写而成。
+ e9 X  I5 s' e8 j

/ f/ I1 R9 z; O% H! l  f  o. V
0?wx_fmt=png.jpg
先上一张图
( p# T8 s# W! K. N+ w
  V" i) e* L: i- D+ `6 w
图片来自知乎。
4 v2 {" Q  g3 x0 U7 _9 p: G
' ?( O& q4 O  M. A7 K
为什么会有这个需求。9 K1 C/ d8 e9 M% U6 F
: h0 s- z3 p5 _
目前Github作为一个全球最大的码(tong)农(xing)交友社区。也是最大的开源社区,但是它没有自动部署,在导航篇的时候我们说了。我们是一个,通过开源实际项目的方式给大家一个良好的体验。

9 v7 ^7 {# i/ L' ~
8 D, ~8 N7 v# E. V$ k
涉及到的技术也会用微软全家桶的方式来进行开发的。
+ N1 z/ A1 d! @. P5 U1 K, O- l

, S! N8 A5 K4 ?
恭喜VSTS开通香港节点
$ J3 C/ V$ Q# T0 p
) T! W3 B2 K# [: k
) y9 F8 g' L& v: B6 K& U. w2 N1 Q
没有香港节点也就是东亚区域之前呢,大家只能从 美国中部、加拿大中部、西欧、印度南部、澳大利亚东部、巴西南部这几个节点选择账户所在区域。
. V2 ?3 G, @1 F( i6 L. h/ i1 Z

' a. I0 F% x1 b! K2 S这些节点都有一个特点,对我们国家不怎么友好。按照 Julia 的说法,我们国家强大的防火墙。恩恩。

# I( K! h) {0 M0 M8 i
& \, q# ^9 P, N
在11月2日的微软科技大会上,微软研发部门的全球副总裁潘正磊女士宣布了微软研发云VSTS将于2017年底前落地中国香港。然后在10号的时候VSTS的老大布雷恩就宣布开通了VSTS在香港的节点。

; _; o: J- o- v) f

9 K$ R/ y# l( j( R. j5 Q$ t这意味在大陆使用微软全家桶的速度, 蹭蹭噌的加速了。
2 }  P$ R$ _9 i9 g
/ b( c3 q7 u; @6 a( }  C$ e
好了,闲话少叙。开始干吧!
7 t0 ]- }% E1 M

4 Y$ X* ~9 ]* `( G
注册VSTS! W/ E- U  i" u8 K# s/ {& ?
% c, R. V8 |' `5 q9 x, H. k1 Y
首先你要有一个微软邮箱,没有自己去注册。
+ e5 m3 I# W' c& \' o  q; R
- d) w. j( R5 {2 p5 b2 j
然后打开https://app.vsaex.visualstudio.com/me?mkt=zh-CN 新建账户。* y/ @9 a7 {" h9 i$ T. t1 v

* R! e8 v* e9 i! E( }
4 U1 k/ F( E8 f& |
0?wx_fmt=png.jpg
image.png

  p8 l' D- J  o. W7 Z; s/ g! M

; }7 l- [1 i$ g- y. A( u
这里的所在地一定要选择东亚,因为其他地区的速度慢。
7 C2 z" A1 B9 `) W5 {% J

5 I3 B5 d8 A+ ?1 f
正文
9 X2 Y' M# P: w9 `3 X+ W5 p3 _" Q/ l, P0 x! X; ~8 Z# e' z
我们现在开始做一些正经事。

6 w9 P( O* v4 B9 ~0 r

8 U/ ~, f$ Y- G' C3 ~
  • 首先创建一个新项目

    , s* u1 C3 J) C2 j
    0?wx_fmt=png.jpg
    image.png

    9 m3 R; f4 H3 u% S; [' k2 p# l

; t) b7 f# e% D8 L  G4 e- _
  • 创建完毕后,进入项目。

    # u+ _% k: h7 N8 Q
    0?wx_fmt=png.jpg
    image.png

    8 E' O& R0 N) g* c4 y4 Y
7 Q, T2 |/ j( a9 r; ?/ x7 u6 h4 S

4 Q  K3 n% Y  F$ }- d3 ^3 }
  • 在Build And Release 菜单栏下的Builds中,选择新建一个“Empty process” 。
    $ @; B. U6 j2 ]* b( {' w7 ?你可以给这个任务创建一个名字,然后这里有几个队列,我们选择"Hoste vs2017"的队列

    + A! B  b6 U. o
    0?wx_fmt=png.jpg
    image.png
    ) d1 M9 r! z! u3 v5 j( }
4 h8 y* v( p. B" z. w+ e% V7 k( w

! D  L- d( ~; z( Z6 q& b
  • 然后选择“Get Sources” ,选择github。

    2 b1 T$ R% R+ B( `
    0?wx_fmt=png.jpg
    image.png

    : F- q9 e( ]0 y* M( {) E/ s
    这里需要你的github账户授权,这里你可以选择用网页授权还是用个人密钥授权。* V) p( y# r4 H4 v& Y
    我们采用Authorize using OAuth,然后这里请注意,弹窗很容易被拦截。
    + _9 h: b% t- c1 f# I7 P这里你要允许弹出。
    ) _: t4 k0 _" i; T/ g
    0?wx_fmt=png.jpg
    image.png

    ) F8 P- n. `5 _' i! q2 Y授权成功后,可以看到你github中仓库的信息。+ V2 O& s' _4 v# ~
    0?wx_fmt=png.jpg
    image.png
    / t1 g: V- {: o, g- p) ^

& r5 q9 D' y8 K5 B1 ]2 O2 y: u. a

$ b% p9 W3 h. G6 L
  • 然后选择菜单栏上的“Triggers”触发器按钮。打开触发器,
    1 n1 p2 J& t! O$ d: E, G
    0?wx_fmt=png.jpg
    image.png

    ' W# a# ~2 k0 i$ c2 v4 E
' H6 l4 B8 }- r6 J( \% u  y
  • 选择Options配置下信息。

    ; \: Y  s' {0 L+ c" U! r  I2 C
    0?wx_fmt=png.jpg
    image.png

    3 L. o, w, d/ R
    最后,右上角“Save& queue”保存。

    3 T5 p$ Y7 H& ?2 U' Q
    0?wx_fmt=png.jpg
    保存信息
    ' Q% y2 q$ O/ y, \1 x2 V+ O) L
2 w+ ?6 a" x9 T6 }

2 v" G- h- G7 @- i, h8 ]5 i
  • Build number format 是指创建生成的生成码。你可以试试。
    % ]2 T" X* N% O+ b: O3 k
% L; {( t# m5 B8 g- A
至此整个功能配置已经完毕了。

7 I0 }& Z: O7 ?  D! e4 ]8 w2 V
. h( Y& U3 g( Q
使用VSTS给github的README 文件创建构建状态' ?9 H+ n  P" L

, w0 {4 p9 u$ T4 K8 F5 K% |4 S% O+ W6 O9 c- e* q
构建完毕了,我们来看看怎么让逼格显得稍微高大上点。打开我们的github项目。2 ~6 k5 U  {) g- e  e
. X: k  n' N. `9 {

. s, [) b7 J. y' G$ t
0?wx_fmt=png.jpg
image.png

' E/ N' {3 M' t: Z- \2 [
以上效果图!!!
3 T& ?& [; m+ }% V4 `; L
( y6 {5 Z- o% v
链接地址:https://github.com/ltm0203/aspnetcore

5 ^8 ~4 W, t. X0 X- x, f# R* Z

4 l" W( S$ d" g: l( m
我们在VSTS中为项目创建一个自定义的通知消息,方法是利用VSTS的构建生成的URL,利用markdown的语法来完成。
3 ~' Y1 O( Z. m

% f9 m! `' y$ F0 N- X. N' H$ j9 ^8 ]
  • 首先在打开你的github,导航到你所在的仓库,这里我们使用的是aspnetcore项目中。
    ( [9 o4 {; y/ e' L

" C' _. X  {: {* X/ p4 b+ Q: }
) ~7 A" Z9 X  M
  • 创建一个README.md的文件。
    ) Y: U4 K: t: B7 d, N) S
7 _' h# f+ {5 H5 g8 O: Z

+ A6 {3 f1 ?/ w0 O
  • 然后将vsts中生成的徽章标记链接,粘贴到README.md文件中即可。7 j$ k7 V7 F" s- @
    代码段:
    5 z5 e: A, s  V

1 K) B8 ^; m8 g[<img src="https://ltm0203.visualstudio.com/_apis/public/build/definitions/06667c49-f49d-4e3b-8eda-1ee96b1914c7/1/badge">](https://51abp.visualstudio.com/_ ... 48d80437520/1/badge)% r+ }+ ]" c1 v
2 D+ ]* X: q! f

" h* o: G+ y) I* q4 g
vsts中生成的徽章URL:

" x0 X; b% U. ?! N- m; y! |

( N8 e; W, i2 k/ X" Q
0?wx_fmt=png.jpg
徽章URL.png
# b& h, _  k" i) M: f! M( v' m

/ {. M4 @1 y9 T
  • 在github项目中的"Setting"中,打开webhooks,可以看到你绑定的webhook。每次对GitHub仓库的提交都会触发VSTS中的构建。

    : S  w: y. L, z1 d  D6 T3 b* H
  V+ e9 D  }/ G  d( v# T
  • 我们返回到vsts中,打开build。可以看到我们创建的队列。

    # P3 V( w5 g- p! ~7 a  E
    0?wx_fmt=png.jpg
    image.png

    ( c& |% A/ v& H% }3 r8 m
    这里可以看到更加详细的统计信息,你编译的次数,状态,每次提交的信息等等。

    , v+ L) L1 @# a7 A  c' m: N
1 O- G3 R2 ~* z3 j* s$ l
7 s9 G5 M$ F2 j1 Z1 c. X3 m
实际开发呢?' _' A9 P6 i* x* d5 J

; x+ P4 v! K$ ^
8 I' V+ N1 p4 L  l: F: r$ w' [
在实际开发的项目中,我们更多的时候,是一个几个功能写好了才提交一次,而当前的情况每个文件发生变化就编译一次,这稍微有点不合理。我们通过对队列任务这里你可以随意取一个名字的进行修改,让项目编译更加的合理。修改为每提交一次才编译。
& h- E5 g6 Z7 |/ P, T4 K5 I

$ e$ {: A4 j' w3 r3 G
  • 打开VSTS,点击“Build & Release”,再点击“Builds”,找到任务名称“这里你可以随意取一个名字”,然后点击“Edit”按钮。
    ' a: |& }( P7 ~! G, h/ C
6 j. R6 W: T: I+ `0 O9 B9 a$ p( G
  • 点击‘Trigger’.修改起来也很简单。。
    6 Q; R  P* v( T8 `
    0?wx_fmt=png.jpg
    看这里.png
    ' H+ ~& k% T% \, m7 ?8 v: g& S& Y2 S/ {
    修改为如图所示即可。
    $ G* k, i8 @  E; M, H* R

/ S% Z0 p1 T( y

5 h8 S% j+ v! f9 G
  • 然后点击Save & queue,再点击Save。
    4 `8 a/ v+ @' @' W2 n0 W

. W/ M& P- A: n6 [6 @总结
1 z% l  J- p6 t6 j4 _7 G( Z4 O) g8 C9 I6 G/ M! B6 y8 o
以上就是利用Vsts自动编译构建项目的完成,然后在github项目中看到项目的构建状态!
) J7 W) n9 {6 B- [/ U6 i

* @, X9 u- `* d( s& v! N# g  a核心是为了解决帮助大家在开发过程进行的日常编译问题。自动化构建。

* d& ^0 C+ E$ o( b3 O" `
2 {) N$ {6 m) o1 @' f: H
VSTS的整体功能肯定不止这么一点,在后面的日子内,我会带着大家慢慢玩!
* M! i$ b* h- n, `4 W$ C% d* d* L* X' [

7 j& V; }* o$ o  a+ B# D
原创:梁桐铭

7 q( g5 q9 [5 s0 _( ~% G9 I* C
2 Y* W7 X( a) V- c8 X0 B$ R" b7 M" X4 J




上一篇:程序猿成长日记之独自修炼“六脉神剑”--Devops篇
下一篇:干货:拉动端到端价值交付--平安Devops演进历程ppt

本版积分规则

参加 ITIL 4 Foundation和中级过渡MPT认证、DevOps专家认证、ITSS服务经理认证报名

QQ|小黑屋|手机版|Archiver|艾拓先锋网 ( 粤ICP备11099876号-1 )|网站地图

Baidu

GMT+8, 2020-7-6 19:29 , Processed in 0.171226 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表