±à¼ÍƼö: |
±¾ÎÄÀ´×Ô¸öÈ˲©¿Í£¬±¾Îļòµ¥½éÉÜÁ˽éÉÜÁËÔÚGithubÉÏʹÓÃAppvoyerºÍCodecov¹¤¾ßʵÏÖÁ˼òµ¥µÄ³ÖÐø¼¯³É. |
|
ºÃ´úÂëÊǹܳöÀ´µÄ¡ª¡ªÊ¹ÓÃGitHubʵÏÖ¼òµ¥µÄCI/CD
Èí¼þ¿ª·¢Ò»°ãÀ´ËµÊÇÒ»ÏîÍŶÓ×÷Òµ£¬ÔÚ±¾ÏµÁÐÎÄÕ¿ªÊ¼¾ÍÌáµ½¹ýÈí¼þµÄ±àÂëÊÇÓÉÒ»¸öÍŶӡ°²¢ÐС±Íê³ÉµÄ£¬ÎªÁ˱£Ö¤±àÂëÈÎÎñÕý³£Íê³É£¬Ê×ÏÈÒýÈë°æ±¾¿ØÖƹ¤¾ßÀ´Íê³É´úÂë¹ÜÀí£¬ÎªÁ˱£Ö¤´úÂëÖÊÁ¿ÒýÈëÁË´úÂë·ÖÎöÆ÷ÒÔ¼°´úÂë²âÊÔ¡£
°æ±¾¿ØÖƹ¤¾ß¿ÉÒÔ±£Ö¤´úÂëÓÐÒ»¸öÖ÷°æ±¾£¬µ«´úÂë·ÖÎöºÍ²âÊÔ¾ùÊÇ¿ª·¢ÈËÔ±ÊÖ¶¯ÔÚ±¾µØÍê³ÉµÄ(ͨ¹ý±àÒë¡¢Ö´ÐвâÊԵȷ½Ê½)£¬ÔÚ½øÐдúÂë·ÖÎöºÍ²âÊÔʱ¿ÉÄܲ¢Ã»Óн«±¾µØ´úÂë¸üе½×îа汾£¬ÕâÑù¾Í»á³öÏÖÒ»¸öÎÊÌ⣬µ±¶à¸ö¿ª·¢ÈËÔ±Ïò°æ±¾¿âÌá½»´úÂëʱ£¬ÎÞ·¨±£Ö¤×îдúÂë¿âµÄ´úÂëÊÇÕýÈ·µÄ£¬ÎªÁ˽â¾öÕâ¸öÎÊÌ⣬Ìá³öÁ˳ÖÐø¼¯³É£¬³ÖÐø¼¯³ÉµÄ¼¯³ÉÖ¸µÄÊdzÖÐøµÄ¶Ô¶à¸ö¿ª·¢ÈËÔ±±àдµÄ´úÂë½øÐм¯³É£¬±¾ÎÄ´ÓÏÂÃæ¼¸¸ö·½Ãæ½éÉܳÖÐø¼¯³ÉÒÔ¼°»ùÓÚGithub½øÐгÖÐø¼¯³Éʵ¼ù£º
1.CI&CD
2.³£ÓõijÖÐø¼¯³É¹¤¾ß
3.GitHubÊг¡¼ò½é
4.ʹÓÃAppVeyorʵÏÖ³ÖÐø¼¯³É
5.ʹÓÃCodecovÏÔʾ´úÂ븲¸ÇÂÊ
6.С½á
CI&CD
³ÖÐø¼¯³É(Continuous integration£¬CI)Ö¸µÄÊÇÔÚ¿ª·¢¹ý³ÌÖгÖÐøµØ½«ËùÓпª·¢ÈËÔ±µÄ´úÂëºÏ²¢µ½´úÂë¿âµÄÖ÷ÏßÉÏ£¬È»ºó¶Ô¸ÃÖ÷Ïß´úÂë½øÐбàÒë¡¢²âÊÔÔËÐеȲÙ×÷¶Ô´úÂë½øÐмìÑ飬ÆäÄ¿µÄÊǾ¡¿ÉÄÜÔçµÄ·¢ÏÖ´úÂ뼯³Éºóµ¼ÖµÄÎÊÌâ¡£
ʵÏÖ³ÖÐø¼¯³ÉµÄÒªµãÖ÷ÒªÓУº¹²ÏíµÄ´úÂë¿â¡¢×Ô¶¯»¯±àÒë¡¢×Ô¶¯»¯²âÊԵȣ¬Í¬Ê±Òª±£Ö¤ºÏÀíµÄ¼¯³ÉƵÂÊ£¬Ò»°ã³ÖÐø¼¯³ÉµÄʱ»úÔÚÓÚ¿ª·¢ÈËÔ±½«´úÂëÌá½»µ½´úÂë¿âʱ×Ô¶¯½øÐУ¬µ«ÊÇÈç¹ûÌá½»¹ýÓÚÆµ·±£¬ÄÇôӦ¸ÃʹÓÃʱ¼ä¼ä¸ôµÄÐÎʽ½øÐгÖÐø¼¯³É¡£
³ÖÐø·¢²¼(Continuous delivery,CD)ʵ¼ÊÉÏÊdzÖÐø¼¯³ÉÉϵÄÒ»¸öÍØÕ¹£¬ÔÚ³ÖÐø¼¯³ÉµÄ»ù´¡ÉϽ«·¢²¼¹¤×÷×Ô¶¯»¯£¬±ÜÃâÈËΪ²Ù×÷´Ó¶ø¼õÉÙ·¢²¼Ê±¼äºÍ·¢²¼Ê±ÈËΪÔì³ÉµÄ´íÎó¡£
³£ÓõijÖÐø¼¯³É¹¤¾ß
³ÖÐø¼¯³É¾¹ý¶àÄêµÄ·¢Õ¹£¬ÔÚ²»Í¬µÄÓ¦Óó¡¾°¡¢Æ½Ì¨/ÓïÑÔ¡¢ÉÌÒµ»¯µÈÒòËØÏ²úÉúÁËÐí¶à³ÖÐø¼¯³É¹¤¾ß£¬¿É²Î¿¼(µ«²»ÏÞÓÚÕâЩ)£º¡¡¡¡https://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software
±È½Ï³£ÓõijÖÐø¼¯³É¹¤¾ßÓУº
Jenkins
JenkinsÊÇÒ»¸ö¿ªÔ´µÄ¿çƽ̨³ÖÐø¼¯³É¹¤¾ß£¬ËüÌṩÁËGUI½çÃæÒÔ¼°´óÁ¿µÄÍØÕ¹²å¼þ£¬Í¨¹ýGUI½çÃæ¿ÉÒÔ¼òµ¥¡¢¿ìËÙµÄÍê³ÉÏîÄ¿³ÖÐø¼¯³ÉÅäÖ㬸üÖØÒªµÄÊÇJenkinsÖ§³ÖËùÓеİ汾¿ØÖƹ¤¾ß¡£
ÏîÄ¿µØÖ·£ºhttps://jenkins.io/
TeamCity
TeamCityÊÇJetBrains¹«Ë¾¿ª·¢µÄ³ÖÐø¼¯³É¹¤¾ß£¬ËüÓÐÃâ·ÑºÍÊÕ·ÑÁ½ÖÖÊÚȨ£¬Ãâ·Ñ°æ±¾µÄTeamCityÓµÓÐËùÓй¦ÄÜ£¬ÆäÏÞÖÆ½ö½öÊÇÖ»ÄÜ´´½¨100¸ö±àÒëÅäÖúÍÖ»Äܲ¢ÐÐÔËÐÐ3¸ö´úÀí¡£
ÏîÄ¿µØÖ·£ºhttp://www.jetbrains.com/teamcity/
GitLab
GitLabÊÇÒ»¸öGitµÄ´úÂë¹ÜÀí¹¤¾ß£¬Ê¹ÓÃGitLab¿ÉÒÔÇáËɵÄÔÚLinux»·¾³´î½¨Ò»¸öGitµÄÔ¶³Ì´úÂëÍÐ¹ÜÆ½Ì¨£¬Í¬Ê±GitLabÖÐÒ²ÄÚÖõÄCI/CD¹¦ÄÜ¡£
ÏîÄ¿µØÖ·£ºhttps://about.gitlab.com/
Travis CI
Travis CIÊÇÒ»¸ö³ÖÐø¼¯³ÉÍÐ¹ÜÆ½Ì¨£¬ËüΪ¿ªÔ´ÏîÄ¿ÌṩÃâ·ÑÖ§³Ö£¬µ«Travis
CI²»Ö§³ÖWindowsϱàÒë¡£
ÏîÄ¿µØÖ·£ºhttps://www.travis-ci.org/
AppVeyor
AppVeyorÒ²ÊÇÒ»¸ö³ÖÐø¼¯³ÉµÄÍÐ¹ÜÆ½Ì¨£¬ËüÖ§³ÖWindowsºÍLinux£¬²¢ÇÒAppVeyor¿ÉÒÔ¶Ô»·¾³½øÐж¨ÖÆ£ºhttps://www.appveyor.com/docs/build-environment/£¬ÊÇÒ»¸ö·Ç³£Ç¿´óµÄCI¹¤¾ß£¬AppVeyor¶Ô¿ªÔ´ÏîÄ¿ÌṩÃâ·ÑÖ§³Ö¡£
ÏîÄ¿µØÖ·£ºhttps://www.appveyor.com/
VSTS
VSTS(Visual Studio Team Services)ÊÇ΢ÈíµÄÈí¼þ¿ª·¢¹ÜÀí½â¾ö·½°¸£¬Ëü°üº¬ÁË´úÂë°æ±¾¹ÜÀí¡¢³ÖÐø¼¯³É/·¢²¼¡¢Ãô½ÝµÈÌØÐÔ£¬²¢ÇÒVSTSΪ5ÈËÒÔÏÂÍŶÓÌṩÁËÃâ·ÑʹÓá£
ÏîÄ¿µØÖ·£ºhttps://visualstudio.microsoft.com/zh-hans/team-services/
×ܵÄÀ´Ëµ³ÖÐø¼¯³É¹¤¾ß·ÖΪ¿É±¾µØ°²×°ºÍƽ̨ÍйÜÁ½À࣬±¾µØ°²×°ÀàÐ͵Ť¾ßÊʺÏÓÐרÓù¹½¨·þÎñÆ÷×ÊÔ´µÄ±ÕÔ´ÏîÄ¿(µ±È»¿ªÔ´ÏîĿҲ¿ÉÒÔʹÓÃ)£¬¶øÍÐ¹ÜÆ½Ì¨Ôò±È½ÏÊʺϿªÔ´»òÕßûÓÐרÓù¹½¨·þÎñÆ÷×ÊÔ´µÄÏîÄ¿£¬Ê¹ÓÃÉÏÍÐ¹ÜÆ½Ì¨¸ü¼ÓÊ¡ÐÄ£¬ÕâЩ¹¤¾ßÐèÒª¸ù¾Ýʵ¼ÊÇé¿öÀ´½øÐÐÑ¡Óá£
GitHubÊг¡¼ò½é
GitHub×÷Ϊһ¸ö·Ö²¼Ê½µÄÈí¼þ¹ÜÀí½â¾ö·½°¸£¬Ëü³ýÁËÌṩ´úÂëÍйÜÍ⣬»¹Í¨¹ýÓ¦ÓÃÊг¡µÄ·½Ê½ÌṩÁËÍØÕ¹Ó¦Óã¬ÕâЩӦÓÃÖ÷ÒªÓÃÓÚ³ÖÐø¼Ì³Ð¡¢²¿Êð¡¢²âÊÔ¡¢´úÂëÉó²é¡¢ÏîÄ¿¹ÜÀíµÈµÈ£¬ÏêÇé²é¿´£ºhttps://github.com/marketplace/
ÏÂͼΪGithubÊг¡ÖеÄCI¹¤¾ß£º

Ò»°ãÀ´ËµÊг¡ÖÐÌṩµÄÓ¦ÓöÔÓÚ¿ªÔ´ÏîÄ¿¶¼ÊÇ¿ÉÒÔÃâ·ÑʹÓõģ¬ÏÂÃæ¾Í½éÉÜÈçºÎ½«GithubÉϵĿªÔ´ÏîĿʹÓÃÆäÊг¡Ó¦ÓÃÍê³É³ÖÐø¼¯³É¡£
ʹÓÃAppVeyorʵÏÖ³ÖÐø¼¯³É
AppVeyorÊÇÒ»¸öÖ§³Ö×Ô¶¨Òå³ÖÐø¼¯³É»·¾³µÄCI¹¤¾ß£¬Ëü¶Ô.Net³ÌÐòµÄÖ§³Ö·Ç³£Ç¿´ó£¬Í¬Ê±¶Ô¿ªÔ´ÏîÄ¿Ãâ·Ñ£¬ËùÒÔAppVeyorÊÇ.Net
CoreÏîÄ¿³ÖÐø¼¯³ÉµÄÊ×Ñ¡£¬ÏÂÃæ¾Í½éÉÜÈçºÎʹÓÃAppVeyorÍê³É³ÖÐø»ù´¡£º
1. ÔÚGitHubÊг¡ÖÐÕÒµ½AppVeyor£¬²¢Íê³É°²×°£º

2. Ìí¼ÓÏîÄ¿£º

Ñ¡ÔñGitHub²Ö¿â£¬²¢Íê³ÉÊÚȨ£º

Ìí¼ÓÐèÒªµÄ²Ö¿â£º

µã»÷¡°NEW BUILD¡±½øÐÐÒ»´Î±àÒ룺

´Ó±àÒëµÄÐÅÏ¢¿ÉÒÔ¿´µ½£¬´Ë´Î±àÒëʧ°ÜÁË£¬²¢ÇÒ¸ø³öÁËÏàÓ¦µÄ´íÎóÐÅÏ¢£¬ÕâÊÇÓÉÓÚ±àÒë»·¾³µ¼Öµġ£
3. »·¾³ÅäÖãº
½«±àÒë¾µÏñÑ¡ÔñΪVS2017£º

ÔÚ±àÒëǰÏÈÖ´ÐÐdotnet restoreÃüÁÔÏîÄ¿ÒÀÀµ£º

4. ¿ªÊ¼Ò»¸öеıàÒ룺
±àÒë½á¹û£º

´Ó±àÒë½á¹û¿ÉÒÔ¿´³öAppveyor²»½ö½öÊÇÍê³ÉÁ˱àÒ빤×÷£¬¶øÇÒ»¹ËÑË÷Á˲âÊÔÐÅÏ¢£¬²¢Íê³ÉÁ˲âÊÔ¡£ÁíÍâÓÐÒ»¸öÒªµãÊDZ¾ÏîÄ¿ÖеIJâÊÔÊÇÒÀÀµÊý¾Ý¿âµÄ£¬Õâ¾ÍÒâζ×ÅAppveyorµÄ±àÒë»·¾³ÌṩÁËSQL
ServerÊý¾ÝµÄÖ§³Ö¡£
5. ½«±àÒëºóµÄÄÚÈÝ·¢²¼µ½GitHub release£º
ΪxUnitTestDemo´úÂë¿âÌí¼ÓÒ»¸öTag£º

È»ºóAppveyor½«»á¼ì²âµ½´úÂë¿âµÄ±ä»¯£¬×Ô¶¯±àÒëTag£¬²¢½«½á¹û²¿Êðµ½GithubµÄReleaseÖУº

×Ô¶¯²¿ÊðµÄReleaseÄÚÈÝ£º

¹ØÓÚappveryor²¿ÊðµÄ¸ü¶àÐÅÏ¢²Î¿¼£ºhttps://www.appveyor.com/docs/deployment/
6. ½«±àÒë״̬ÏÔʾµ½GitHubÉÏ£º
AppveyorµÄBadges(±ê¼Ç)ÅäÖýçÃæÖпÉÒÔ»ñÈ¡µ½×´Ì¬±ê¼ÇµØÖ·£º

½«MarkDownµÄ´úÂë¸´ÖÆµ½ÏîÄ¿µÄREADME.mdÎļþÖУº

Ч¹û£º

7. µ¼³öappveyor.ymlÎļþÒÔ¼°Í¨¹ýappveyor.ymlÀ´Íê³ÉÅäÖãº
ÉÏÃæµÄ·½·¨ÊÇͨ¹ýAppveyorµÄWeb½çÃæÉÏÍê³ÉÅäÖõ쬳ý´ËÖ®Í⻹¿ÉÒÔͨ¹ýappveyor.ymlÎļþÀ´Íê³ÉÅäÖã¬appveyor.ymlÎļþ¿ÉÒÔ×Ô¼º´´½¨»òµ¼³öÒÑÓÐÅäÖãº
µ¼³öÒÑÓÐÅäÖãº

½«appveyor.ymlÎļþ·ÅÖõ½´úÂë¸ùĿ¼£¬²¢Í¨¹ýÐ޸ĸÃÎļþÀ´±ä¸üÅäÖãº

ÉÏͼÔÚÔÓÐÅäÖûù´¡ÉÏÐÞ¸ÄΪreleaseµÄ·½Ê½±àÒë´úÂ룬²¢ÇÒÖ¸¶¨Éú³É½á¹ûĿ¼£¬½«½á¹û½øÐÐѹËõ¡£
¸ü¶àappveyor.ymlÅäÖÿɲο¼£ºhttps://www.appveyor.com/docs/appveyor-yml/
ʹÓÃCodecovÏÔʾ´úÂ븲¸ÇÂÊ
CodecovÒ²ÊÇGithubÊг¡µÄÒ»¸öÓ¦Óã¬ËüÓÃÓÚÉú³É´úÂ븲¸ÇÂʱ¨¸æ£¬codecov¶ÔC#µÄÖ§³ÖÊÇ»ùÓÚOpenCoverµÄ(ʹÓÃOpenCover¼ì²â´úÂ븲¸ÇÂʲο¼£ººÃ´úÂëÊǹܳöÀ´µÄ¡ª¡ª.Net
CoreÖеĵ¥Ôª²âÊÔÓë´úÂ븲¸ÇÂÊ)£¬Codecov¶ÔGithubµÄ¹«¿ªÏîÄ¿ÊÇÃâ·ÑµÄ£¬ÏÂÃæ¾Í¿ªÊ¼½éÉÜÈçºÎʹÓÃcodecovÀ´ÊµÏÖ²âÊÔ´úÂ븲¸ÇÂʵÄͳ¼Æ£º
1. °²×°Codecov£º

×¢£º°²×°Íê³ÉCodecovºó£¬»áÓÐÒ»¸öUpload TokenÓÃÀ´½«´úÂ븲¸Ç±¨¸æÉÏ´«µ½Codecov£¬µ«AppveyorµÄ¹«¹²²Ö¿â¿ÉÒÔ²»ÐèÒª£º

2. ÐÞ¸Äappveyor.ymlÎļþ£º

Ìí¼ÓʹÓÃchoco¹ÜÀíÆ÷°²×°OpenCover¼°codecov£¬È»ºóÔÚtest_scriptÖÐÌí¼Ó´úÂ븲¸ÇÂÊ·ÖÎö±¨¸æÒÔ¼°ÉÏ´«½Å±¾¡£
×¢£ºµ±ÉÏÊö±ä¸üpushµ½Githubºó£¬Appveyor½«¿ªÊ¼×Ô¶¯±àÒë²¢Íê³É°üÀ¨´úÂ븲¸ÇÂʱ¨¸æÉú³É¡¢ÉÏ´«µÈËùÓй¤×÷£¬´Ëʱ´ò¿ªcodecovÒ³Ãæ½«»á¿´µ½±¨¸æÐÅÏ¢£º

3. ÔÚREADME.mdÎļþÖÐÌí¼ÓCodecovµÄ±êÇ©£º

½á¹û£º

С½á
±¾ÎĽéÉÜÁËCIºÍCDµÄ»ù±¾¸ÅÄǰÕßÄ¿µÄÔÚÓÚ¾¡¿ÉÄÜÔçµÄ·¢ÏÖ¶àÈË¿ª·¢Ê±´úÂ뼯³ÉµÄ´íÎ󣬶øºóÕßÄ¿µÄÊDZÜÃâÈËΪÔì³ÉµÄ´íÎ󣬽«Ò»Ð©Öظ´µÄÊÂÇé½»ÓɳÌÐò×Ô¶¯Íê³É£¬¼È¿ÉÒÔ¼õÉٳɱ¾ÓÖ¿ÉÒÔÌá¸ßÕýÈ·ÂÊ£¬ÏÖÔÚÁ÷ÐеÄDevOpsµÄ»ù´¡Ö®Ò»¾ÍÊÇ×Ô¶¯»¯Ò²¾ÍÊÇCIºÍCD¡£
µ±°ÑдúÂëÍÆµ½GitHub²Ö¿âʱ£¬Appvoyer»á×Ô¶¯µÄÍê³ÉһϵÁй¹½¨²Ù×÷¡£AppvoyerÊÇÒ»¸ö·Ç³£Ç¿´óµÄCI¹¤¾ß£¬¶ÔC#µÄÖ§³ÖÒ²·Ç³£ºÃ¿ÉÒÔÑ¡ÔñVS°æ±¾(°üÀ¨Ô¤ÀÀ°æ)£¬¶àÖÖÊý¾Ý¿â(°üÀ¨LinuxϵÄSQL
Server)£¬ËùÒÔÔÚÖ´ÐвâÊÔʱÒÀÀµÊý¾Ý¿âµÄ²âÊÔÒ²ÄÜͨ¹ý¡£ |