{"id":423,"date":"2017-09-20T16:21:51","date_gmt":"2017-09-20T08:21:51","guid":{"rendered":"https:\/\/blog.jsjs.org\/?p=423"},"modified":"2017-09-20T16:21:51","modified_gmt":"2017-09-20T08:21:51","slug":"%e3%80%90%e8%a1%a5%e5%85%85%e3%80%91gitlab-%e9%83%a8%e7%bd%b2-ci-%e6%8c%81%e7%bb%ad%e9%9b%86%e6%88%90","status":"publish","type":"post","link":"https:\/\/blog.jsjs.org\/?p=423","title":{"rendered":"\u3010\u8865\u5145\u3011Gitlab \u90e8\u7f72 CI \u6301\u7eed\u96c6\u6210"},"content":{"rendered":"<div id=\"cnblogs_post_body\" class=\"cnblogs-markdown\">\n<p>\u4e0a\u4e00\u7bc7\uff1a\u300a<a href=\"http:\/\/www.cnblogs.com\/xishuai\/p\/gitlab-ci.html\">\u5288\u8346\u65a9\u68d8\uff1aGitlab \u90e8\u7f72 CI \u6301\u7eed\u96c6\u6210<\/a>\u300b<\/p>\n<p>\u4e0a\u4e00\u7bc7\u6240\u914d\u7f6e\u7684<code>.gitlab-ci.yml<\/code>\uff1a<\/p>\n<div class=\"sourceCode\">\n<pre class=\"sourceCode yml\"><code class=\"sourceCode yaml hljs\"><span class=\"fu\"><span class=\"hljs-attr\">stages:<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> build\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> test\n\n<span class=\"fu\"><span class=\"hljs-attr\">before_script:<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> echo <span class=\"st\"><span class=\"hljs-string\">\"Restoring NuGet Packages...\"<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-attr\">-<\/span><\/span> <span class=\"fu\"><span class=\"hljs-attr\">C:<\/span><\/span>\\NuGet\\nuget.exe restore <span class=\"hljs-string\">\"src\\CNBlogsCI-Sample.sln\"<\/span>\n  <span class=\"fu\"><span class=\"hljs-attr\">only:<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> master\n\n<span class=\"fu\"><span class=\"hljs-attr\">build_job:<\/span><\/span>\n  <span class=\"fu\"><span class=\"hljs-attr\">stage:<\/span><\/span> build\n  <span class=\"fu\"><span class=\"hljs-attr\">script:<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> echo <span class=\"st\"><span class=\"hljs-string\">\"Release build...\"<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-attr\">-<\/span><\/span> <span class=\"fu\"><span class=\"hljs-attr\">C:<\/span><\/span>\\Windows\\Microsoft.NET\\Framework64\\v4<span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.30319<\/span>\\msbuild.exe \/consoleloggerparameters:ErrorsOnly \/maxcpucount \/nologo \/property:Configuration=Release \/verbosity:quiet <span class=\"hljs-string\">\"src\\CNBlogsCI-Sample.sln\"<\/span>\n  <span class=\"fu\"><span class=\"hljs-attr\">except:<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> tags\n  <span class=\"fu\"><span class=\"hljs-attr\">only:<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> master\n\n<span class=\"fu\"><span class=\"hljs-attr\">test_job:<\/span><\/span>\n  <span class=\"fu\"><span class=\"hljs-attr\">stage:<\/span><\/span> test\n  <span class=\"fu\"><span class=\"hljs-attr\">script:<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> echo <span class=\"st\"><span class=\"hljs-string\">\"Tests run...\"<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-attr\">-<\/span><\/span> <span class=\"fu\"><span class=\"hljs-attr\">C:<\/span><\/span>\\xunit.runner.console\\tools\\xunit.console.exe <span class=\"hljs-string\">\"src\\ClassLibrary2\\bin\\debug\\ClassLibrary2.dll\"<\/span>\n  <span class=\"kw\"><span class=\"hljs-attr\">-<\/span><\/span> <span class=\"fu\"><span class=\"hljs-attr\">C:<\/span><\/span>\\xunit.runner.console\\tools\\xunit.console.exe <span class=\"hljs-string\">\"src\\ClassLibrary3\\bin\\debug\\ClassLibrary3.dll\"<\/span>\n  <span class=\"fu\"><span class=\"hljs-attr\">only:<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> master<\/code><\/pre>\n<\/div>\n<p>\u6709\u51e0\u4e2a\u95ee\u9898\uff1a<\/p>\n<ul>\n<li><code>before_script<\/code>\u8981\u6267\u884c\u4e24\u6b21\u3002<\/li>\n<li><code>C:\\NuGet\\nuget.exe<\/code>\u5199\u6b7b\u8def\u5f84\u7684\u5199\u6cd5\u4e0d\u53ef\u53d6\u3002<\/li>\n<li><code>test_job<\/code>\u9700\u8981\u4e0a\u4f20<code>debug<\/code>\u4e2d\u7684<code>dll<\/code>\u6587\u4ef6\u3002<\/li>\n<\/ul>\n<p>\u5bf9\u4e8e\u4e0a\u9762\u7684\u95ee\u9898\uff0c\u5b8c\u5584\u5982\u4e0b\uff1a<\/p>\n<div class=\"sourceCode\">\n<pre class=\"sourceCode yml\"><code class=\"sourceCode yaml hljs\"><span class=\"fu\"><span class=\"hljs-attr\">stages:<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> build\n\n<span class=\"fu\"><span class=\"hljs-attr\">build_job:<\/span><\/span>\n  <span class=\"fu\"><span class=\"hljs-attr\">stage:<\/span><\/span> build\n  <span class=\"fu\"><span class=\"hljs-attr\">script:<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> echo <span class=\"st\"><span class=\"hljs-string\">\"Restoring NuGet Packages...\"<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> nuget restore <span class=\"st\"><span class=\"hljs-string\">\"src\\CNBlogsCI-Sample.sln\"<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> echo <span class=\"st\"><span class=\"hljs-string\">\"Release build...\"<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> <span class=\"fu\">msbuild \/consoleloggerparameters:<\/span>ErrorsOnly \/maxcpucount \/nologo \/property:Configuration=Release \/verbosity:quiet <span class=\"hljs-string\">\"src\\CNBlogsCI-Sample.sln\"<\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> echo <span class=\"st\"><span class=\"hljs-string\">\"Tests run...\"<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> xunit.console <span class=\"st\"><span class=\"hljs-string\">\"src\\ClassLibrary2\\bin\\debug\\ClassLibrary2.dll\"<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> xunit.console <span class=\"st\"><span class=\"hljs-string\">\"src\\ClassLibrary3\\bin\\debug\\ClassLibrary3.dll\"<\/span><\/span>\n  <span class=\"fu\"><span class=\"hljs-attr\">except:<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> tags\n  <span class=\"fu\"><span class=\"hljs-attr\">only:<\/span><\/span>\n  <span class=\"kw\"><span class=\"hljs-bullet\">-<\/span><\/span> master<\/code><\/pre>\n<\/div>\n<p><code>nuget<\/code>\uff0c<code>msbuild<\/code>\u548c<code>xunit.console<\/code>\u547d\u4ee4\u90fd\u9700\u8981\u6dfb\u52a0\u73af\u5883\u53d8\u91cf\uff0c\u4e3a\u4ec0\u4e48\u8981\u53bb\u9664<code>before_script<\/code>\u548c<code>test_job<\/code>\uff1f\u56e0\u4e3a\u6bcf\u6267\u884c\u4e00\u4e2a<code>job<\/code>\uff0c<code>git<\/code>\u90fd\u9700\u8981<code>Fetching changes...<\/code>\uff0c\u6240\u4ee5\u4f1a\u6e05\u9664\u4e0d\u53d7<code>git<\/code>\u7248\u672c\u63a7\u5236\u7684\u6587\u4ef6\u3002<\/p>\n<p>\u8fd8\u6709\u5c31\u662f\uff0c\u5bf9\u4e8e\u4e0a\u9762\u7684\u7b2c\u4e09\u4e2a\u95ee\u9898\uff0c\u56e0\u4e3a<code>msbuild<\/code>\u662f<code>Release<\/code>\u6a21\u5f0f\u751f\u6210\uff0c\u800c\u6211\u4eec<code>test<\/code>\u7684<code>debug dll<\/code>\uff0c\u6240\u4ee5\u5c31\u5fc5\u987b\u4e0a\u4f20\u6587\u4ef6\uff0c\u6211\u4eec\u628a<code>test<\/code>\u4e2d\u7684<code>debug<\/code>\u6539\u4e3a<code>Release<\/code>\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n<p>\u6211\u4eec\u53ef\u4ee5\u628a<code>nuget<\/code>\uff0c<code>msbuild<\/code>\u548c<code>xunit.console<\/code>\u72ec\u7acb\u51fa\u6279\u547d\u4ee4\u5b9e\u73b0\u3002<\/p>\n<p><code>restore.cmd<\/code>\uff1a<\/p>\n<pre class=\"cmd\"><code class=\"hljs dos\"><span class=\"hljs-built_in\">echo<\/span> \"NuGet Sources List...\"\nnuget Sources List\n<span class=\"hljs-built_in\">echo<\/span> \"Restoring NuGet Packages...\"\nnuget <span class=\"hljs-built_in\">restore<\/span> \"src\\CNBlogsCI-Sample.sln\"<\/code><\/pre>\n<p><code>build.cmd<\/code>\uff1a<\/p>\n<pre class=\"cmd\"><code class=\"hljs dos\"><span class=\"hljs-built_in\">echo<\/span> \"Release build...\"\nmsbuild \/consoleloggerparameters:ErrorsOnly \/maxcpucount \/nologo \/property:Configuration=Release \/verbosity:quiet \"src\\CNBlogsCI-Sample.sln\"<\/code><\/pre>\n<p><code>test.cmd<\/code>\uff1a<\/p>\n<pre class=\"cmd\"><code class=\"hljs dos\"><span class=\"hljs-built_in\">echo<\/span> \"Tests run...\"\nxunit.console \"src\\ClassLibrary2\\bin\\Release\\ClassLibrary2.dll\"\nxunit.console \"src\\ClassLibrary3\\bin\\Release\\ClassLibrary3.dll\"<\/code><\/pre>\n<p><code>.gitlab-ci.yml<\/code>\uff1a<\/p>\n<pre class=\"cmd\"><code class=\"hljs dos\"><span class=\"hljs-function\">stages:\n  - <span class=\"hljs-title\">build<\/span>\n\n<span class=\"hljs-title\">build_job<\/span>:\n  <span class=\"hljs-title\">stage<\/span>: <span class=\"hljs-title\">build<\/span>\n  <span class=\"hljs-title\">script<\/span>:\n  - .\/<span class=\"hljs-title\">restore.cmd<\/span>\n  - .\/<span class=\"hljs-title\">build.cmd<\/span>\n  - .\/<span class=\"hljs-title\">test.cmd<\/span>\n  <span class=\"hljs-title\">except<\/span>:\n  - <span class=\"hljs-title\">tags<\/span><\/span><\/code><\/pre>\n<p><code>script<\/code>\u4e2d\u7684<code>cmd<\/code>\u547d\u4ee4\u4e4b\u524d\u9700\u8981\u6dfb\u52a0<code>.\/<\/code>\u3002<\/p>\n<\/div>\n<div id=\"MySignature\">\n<div id=\"xishuai_qianming\">\u4f5c\u8005\uff1a<a href=\"http:\/\/www.cnblogs.com\/xishuai\/\">\u7530\u56ed\u91cc\u7684\u87cb\u87c0<\/a><br \/>\n\u51fa\u5904\uff1a<a href=\"http:\/\/www.cnblogs.com\/xishuai\/\">http:\/\/www.cnblogs.com\/xishuai\/<\/a><br \/>\n\u672c\u6587\u7248\u6743\u5f52\u4f5c\u8005\u548c\u535a\u5ba2\u56ed\u5171\u6709\uff0c\u6b22\u8fce\u8f6c\u8f7d\uff0c\u4f46\u672a\u7ecf\u4f5c\u8005\u540c\u610f\u5fc5\u987b\u4fdd\u7559\u6b64\u6bb5\u58f0\u660e\uff0c\u4e14\u5728\u6587\u7ae0\u9875\u9762\u660e\u663e\u4f4d\u7f6e\u7ed9\u51fa\u539f\u6587\u8fde\u63a5\u3002<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u4e0a\u4e00\u7bc7\uff1a\u300a\u5288\u8346\u65a9\u68d8\uff1aGitlab \u90e8\u7f72 CI \u6301\u7eed\u96c6\u6210\u300b \u4e0a\u4e00\u7bc7\u6240\u914d\u7f6e\u7684.gitlab-ci.yml\uff1a stages: &#8211; build &#8211; test before_script: &#8211; echo &#8220;Restoring NuGet Packages&#8230;&#8221; &#8211; C:\\NuGet\\nuget.exe restore &#8220;src\\CNBlogsCI-Sample.sln&#8221; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-423","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts\/423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=423"}],"version-history":[{"count":0,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts\/423\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}