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

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

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

扫描二维码登录本站

QQ登录

只需一步,快速开始

搜索
查看: 813|回复: 0

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

[复制链接]
来自- 日本

参加活动:0

组织活动:0

发表于 2018-11-18 15:54:11 | 显示全部楼层 |阅读模式 来自- 日本
本帖最后由 adminlily 于 2018-11-18 16:07 编辑
; `( l4 D/ Q6 L
" `& T" \3 @4 j- h
“ 工欲善其事,必先利其器。磨刀不误砍柴工!”

# ?- i% ]/ N% c# t% ?3 O5 s1 Y7 S3 l+ E9 E0 @* n0 ]8 _
  • 管理工具会VSTS。
      A" l+ {: G) F6 s( L& V

" M- L. S3 w0 A% _
8 @  w9 i9 w4 W; k$ g: T8 D; y; @
  • 代码管理会用GITHUB。

    : w0 R. Q1 |# @$ A  `% e
2 W) a9 a, _1 J* U. ~: K3 R
8 }5 ~5 B% s- \) f4 X
  • 服务器会用Azure。

    - i7 a. \3 D+ f
    3 @6 X, G0 I  [) m
    所有的东西都是利用现有服务。不会说自己从虚拟机开始玩。我们就专注于写代码。
9 `, q5 J5 K. s1 T; o8 A
/ f0 ]& c8 i$ n% c
什么是VSTS?
- m7 D" A7 G" `9 ^' Q% P
VSTS的全称是Visual Studio Team System。
3 k3 d9 }7 b& \8 S8 ~0 q4 J  D# J0 ]2 f; g
6 A5 U* j. v  v8 R6 T/ u
介绍VSTS之前先说下TFS(Team Foundation Server)。
6 L0 S# H9 C9 N" l* |4 X
5 o& Z8 w3 |6 w6 i! e- g
TFS是微软推出的一款ALM(Application Lifecycle Management)软件生命周期管理工具。通过它你可以从代码管理->代码版本管理->项目管理->持续集成->自动发布->自动测试等一系列软件生命周期在内的全家桶功能。
, T( W9 y' @2 z5 u$ u3 `# P) f: ~, H

2 e& M& [+ `% Q! y
VSTS(Visual Studio Team System)是基于SaaS(多租户)化TFS的云产品。
! V: ~$ V0 P/ z5 \8 t; q. m% V' Y
) S' R6 k/ S2 E6 i# G% X
听了之后是不是感觉很强大。

' Y  ^( v9 L) z, A

5 i) x# X, q. d. R
关于Github, E; M# ?4 x& F1 [/ G; N* u( x
+ r+ I. ^+ `- v3 Z9 x
( C. m6 a* c8 C, z9 w
Git 是由 Linux 之父 Linus Tovalds 为了更好地管理linux内核开发而创立的分布式版本控制/软件配置管理软件。
! l" m# X2 C4 q# y+ x  I  W

% d4 q4 f( N+ c* k. rGitHub是一个通过Git进行版本控制的软件源代码托管服务,由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath、PJ Hyett和Tom Preston-Werner使用Ruby on Rails编写而成。
9 R3 d# @: h2 w8 M

1 P5 g+ x  s" W( V$ i8 T- Q" T
0?wx_fmt=png.jpg
先上一张图

& |* h' j6 h: @( t5 z  l3 n

, r% y4 b, q( I+ ^6 \0 m
图片来自知乎。

  m+ S, A: d) w. v. T( M

3 x* B: s/ [% J2 B, U. [
为什么会有这个需求。' x. ^" \8 c) o) l3 T/ p) F
. |1 M2 N3 E) U+ v3 t* d% k
目前Github作为一个全球最大的码(tong)农(xing)交友社区。也是最大的开源社区,但是它没有自动部署,在导航篇的时候我们说了。我们是一个,通过开源实际项目的方式给大家一个良好的体验。
4 {: I! B  f7 E' z1 ~3 P

0 X/ i: [3 r/ P0 f! J涉及到的技术也会用微软全家桶的方式来进行开发的。

2 t. |& L. Y$ B6 F0 N

% {9 O& s! h$ p6 ?
恭喜VSTS开通香港节点
$ J) m8 N0 L1 w
9 T2 D9 P% ]) ?. N9 B  J* z9 s( k
$ p; D* a/ p, F: B
没有香港节点也就是东亚区域之前呢,大家只能从 美国中部、加拿大中部、西欧、印度南部、澳大利亚东部、巴西南部这几个节点选择账户所在区域。
' f. V& b8 g7 g5 u! _  W2 _* A1 D
, z6 N$ A2 D% P# ~
这些节点都有一个特点,对我们国家不怎么友好。按照 Julia 的说法,我们国家强大的防火墙。恩恩。
( L, j  H- p. H; a0 W1 _
) |" ]* y+ z& h( m; z( }" ~
在11月2日的微软科技大会上,微软研发部门的全球副总裁潘正磊女士宣布了微软研发云VSTS将于2017年底前落地中国香港。然后在10号的时候VSTS的老大布雷恩就宣布开通了VSTS在香港的节点。
% W- H& C9 Y; {

  T8 c7 R3 [$ ~8 K这意味在大陆使用微软全家桶的速度, 蹭蹭噌的加速了。

; ^0 d+ r* x- _: Q
& W% ~2 r6 f$ ~, R! l
好了,闲话少叙。开始干吧!

. C: M$ y. T' O) g: o

# e0 r, x( s1 l0 u' V% Q
注册VSTS
, _/ x, j0 P: n/ e
4 Q3 Z* v5 ~8 y# m5 F3 S3 O0 \4 ]' |
首先你要有一个微软邮箱,没有自己去注册。

9 ^) }. w/ F8 d( P# I5 l
; f7 m! b( y. `3 K
然后打开https://app.vsaex.visualstudio.com/me?mkt=zh-CN 新建账户。
( ?# N: y. w1 I/ d

7 a& X( w! F7 L7 v/ w+ P

" U6 U1 }$ [+ U# `6 D8 w" l
0?wx_fmt=png.jpg
image.png
: |7 M- ?8 v& E4 f/ x4 S

8 U& e" J5 y# ^7 t; V
这里的所在地一定要选择东亚,因为其他地区的速度慢。
* f% O2 D: e* L
5 J! ?# O, k4 c! i
正文7 d, F# i/ m+ L
* t2 H* d: H& z2 G% h
我们现在开始做一些正经事。
' f0 ^% V) a% c: r2 e7 V

+ B# k' Q1 l* X; W8 B9 j+ ]- G
  • 首先创建一个新项目

    0 _8 \3 Q$ t" Z/ P) d: B& y/ r
    0?wx_fmt=png.jpg
    image.png

    / A7 G) [# a7 o7 e0 B& i* I3 V
; i1 `7 I4 Z3 a0 W2 c* }
  • 创建完毕后,进入项目。
    , b. D/ t9 X5 Z1 ^% U. Z2 f' b
    0?wx_fmt=png.jpg
    image.png
    1 }1 @$ K8 f1 H2 Z

9 i7 B/ i$ _" q- ?0 f
/ Z5 D2 e$ Z5 P- G$ _: A) N
  • 在Build And Release 菜单栏下的Builds中,选择新建一个“Empty process” 。
    ( c: R$ |. B0 x/ n* z& i+ @; s你可以给这个任务创建一个名字,然后这里有几个队列,我们选择"Hoste vs2017"的队列
      c5 S% L, T6 ^. R2 @" ~! {: M) G
    0?wx_fmt=png.jpg
    image.png

    / r# K8 \& ]" S# u% A

5 ~8 ~% H8 W" X: ]  {
0 k1 e; y; r. @5 L
  • 然后选择“Get Sources” ,选择github。

    : o- c/ g3 b% m5 T# ?
    0?wx_fmt=png.jpg
    image.png
    ' t. l5 |7 R  e" ?# P
    这里需要你的github账户授权,这里你可以选择用网页授权还是用个人密钥授权。6 s3 Q' C! T! @& x: P1 F
    我们采用Authorize using OAuth,然后这里请注意,弹窗很容易被拦截。
    0 Z$ n  ?+ |! A# u: {4 v这里你要允许弹出。

      U! T' s( o; W4 a% R$ H
    0?wx_fmt=png.jpg
    image.png

    ) F+ p. \7 ~" e授权成功后,可以看到你github中仓库的信息。
    6 ^( g- A5 f2 R. Q: r
    0?wx_fmt=png.jpg
    image.png

    ! t5 }" V/ T6 Y2 Q6 v( d. }6 t# L
. j& r3 w/ }; p7 S$ R2 S
$ E( M$ D' o- j4 S6 O- t7 N
  • 然后选择菜单栏上的“Triggers”触发器按钮。打开触发器,
    # T3 g9 ~; _) \0 V5 ^
    0?wx_fmt=png.jpg
    image.png

    $ s4 l  c* S& j1 M9 I7 D' D+ ~# @% m
0 `! S" k$ R9 c! Z( P
  • 选择Options配置下信息。
    ; u' a1 u7 S. U! l9 v7 T
    0?wx_fmt=png.jpg
    image.png

    " a0 T# Y$ s) w2 t; Q
    最后,右上角“Save& queue”保存。

      f9 ~/ t1 j" s2 v3 @, x
    0?wx_fmt=png.jpg
    保存信息

    ) D: d. z4 g2 U: O/ P
: K' \0 d+ h9 x) _$ t: ^
+ |1 S/ R; n2 C( {4 t" F
  • Build number format 是指创建生成的生成码。你可以试试。
    0 U3 X6 z" P: e* ?: Z7 l

1 M6 D) Q+ M* M3 {' [4 ]
至此整个功能配置已经完毕了。

/ O+ U. i  I( q5 h" L

% Q, f9 Y, k0 ?" \1 ^
使用VSTS给github的README 文件创建构建状态
2 l0 A4 ^6 [/ b: `
. ]: u6 [( Y: G; U* y+ [# B9 C/ D6 i- X) B( B+ @
构建完毕了,我们来看看怎么让逼格显得稍微高大上点。打开我们的github项目。
2 C2 T+ K8 L4 Q* V. U' K  i# W
1 m* `/ v! {4 R( j) X

  C% X7 w7 N6 D4 `: H
0?wx_fmt=png.jpg
image.png
7 ]" h! ?- c" w9 ?5 o% t
以上效果图!!!

. a0 D' [9 D/ k9 ^" q
: e1 e% K, p. W; E
链接地址:https://github.com/ltm0203/aspnetcore
: x$ v  u8 G/ `) _

. ^0 w! l2 ?6 G1 x- B) K2 \/ E
我们在VSTS中为项目创建一个自定义的通知消息,方法是利用VSTS的构建生成的URL,利用markdown的语法来完成。

/ q  @: q" Z) R( [
% {6 U# Y( g3 E
  • 首先在打开你的github,导航到你所在的仓库,这里我们使用的是aspnetcore项目中。
    0 _1 a- G) _9 J& i" O$ R) j  G  i1 q: I

5 D1 G) Q3 p( d! p! s5 x1 \3 E" J
4 [! U* ]! `& Q: D2 H. s( w" Q
  • 创建一个README.md的文件。
    " Y$ u+ j4 G1 r

" _+ O) A3 N! j: w/ ^

9 z; ^. A$ x, D  k
  • 然后将vsts中生成的徽章标记链接,粘贴到README.md文件中即可。
    : F# \; N' A+ d) ^+ n$ o0 D代码段:

    % l. E* z; x1 o3 [1 u' L

/ t$ }2 P# e( L* D' {* B[<img src="https://ltm0203.visualstudio.com/_apis/public/build/definitions/06667c49-f49d-4e3b-8eda-1ee96b1914c7/1/badge">](https://51abp.visualstudio.com/_ ... 48d80437520/1/badge)
3 T9 h7 m2 T" E% T, ]" j5 ?6 u% A6 a- m$ G1 d: _

. |/ S+ F$ }0 ?6 ~) B4 g. m, {
vsts中生成的徽章URL:

# W! X+ ~0 C/ q3 d
* w: f7 R( _  }. j( Z
0?wx_fmt=png.jpg
徽章URL.png
4 v9 b  D+ |: X  s9 y& N+ H

0 I7 k+ T  R2 n2 w% a$ V& `
  • 在github项目中的"Setting"中,打开webhooks,可以看到你绑定的webhook。每次对GitHub仓库的提交都会触发VSTS中的构建。

    / C% L! [# {/ V
8 H' Z3 f: M6 V2 x! b0 U, D
  • 我们返回到vsts中,打开build。可以看到我们创建的队列。

    ( t1 }7 R2 [+ F6 H9 A/ N0 {  l
    0?wx_fmt=png.jpg
    image.png

    1 l0 v5 t& r: @6 J8 A9 r. B
    这里可以看到更加详细的统计信息,你编译的次数,状态,每次提交的信息等等。
    ) q* z7 F. m1 N/ y( v* }

3 {3 ^. b3 n( y0 ?4 d. T

( l7 S6 L1 K: Z& ]$ Y0 i' a实际开发呢?& U+ O* C' W" K5 U6 u. e0 @

2 A) A. [! c8 E1 R" e; [0 N, G) v( |$ O9 q. X; U) T, P
在实际开发的项目中,我们更多的时候,是一个几个功能写好了才提交一次,而当前的情况每个文件发生变化就编译一次,这稍微有点不合理。我们通过对队列任务这里你可以随意取一个名字的进行修改,让项目编译更加的合理。修改为每提交一次才编译。
) W: e% W0 K" Q
4 v2 s2 e# o8 t% @: c3 g$ c
  • 打开VSTS,点击“Build & Release”,再点击“Builds”,找到任务名称“这里你可以随意取一个名字”,然后点击“Edit”按钮。

    ; E! V/ P, L/ q( |* G

$ s# \( A# @3 B1 ?% a9 ^
  • 点击‘Trigger’.修改起来也很简单。。
    9 [3 Z+ ]# d9 s7 b; g
    0?wx_fmt=png.jpg
    看这里.png
    ! {* D9 Y+ b$ y$ s  a
    修改为如图所示即可。
    8 }5 S8 [5 W. J! J" a/ a
* v( l' e3 {& U( q

1 d% j. M7 {9 c4 e% @; b( J
  • 然后点击Save & queue,再点击Save。
    % j% f2 B- V3 t+ j1 E2 I

5 K& K. K* v3 h+ J6 u- |( V总结4 g, {2 d3 Y* ^4 q# G/ e

5 U$ t# R+ j% p) j
以上就是利用Vsts自动编译构建项目的完成,然后在github项目中看到项目的构建状态!
3 x( A  z; w! i  N1 }

2 f: e* q. l1 \1 u1 \8 c* o核心是为了解决帮助大家在开发过程进行的日常编译问题。自动化构建。
3 ~+ e6 H' q3 D3 n% l

" T* ?- `+ J( K! C- M, U# OVSTS的整体功能肯定不止这么一点,在后面的日子内,我会带着大家慢慢玩!

) S( ?6 d' n. c% L: D

; t# I/ J: n: @# m- \) e6 M
原创:梁桐铭
- z7 M" j( P4 D

& j( x( D5 G  Z2 @* F/ F! R
1 {$ J9 V1 T; A3 H/ z6 o5 E% |

本版积分规则

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

Baidu

GMT+8, 2019-6-17 23:06 , Processed in 0.225227 second(s), 31 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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