netcore編程之後面對不習慣的xshell黑屏部署,是時候使用jenkins自動化發布工具了

來源:互聯網
上載者:User

    

   在很久之前net還只能在windows上部署的時候,或許很多創業公司的朋友發布項目還都是人肉部署,反正windows都是可視化的介面,拖拖拉拉,開開關關還不

是特別麻煩。。。現如今你的項目需要在linux上部署,可惜的是再也沒有什麼可視化的介面給你,全在xshell上操作,如果在xshell上部署個位元的項目大家或許還可

以接受,如果要部署10+以上的服務呢,估計很多人在xshell上敲的頭都大了。。。這就是為什麼docker會有dockerfile,會有容器編排的docker-compose,所以找

一款自動化發布工具迫在眉睫了。

 

一: Jenkins部署

  它的官方網址是:jenkins.io/download/  ,使用docker模式部署的話太簡單了,本篇就不用Docker部署,而是直接部署到宿主機Centos上,如:

1. 匯入jenkins的key

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.reposudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

 

2. 使用yum安裝

yum install jenkins

 

3. 啟動jenkins

[root@localhost ~]# service jenkins startStarting jenkins (via systemctl):                          [  OK  ]

 

4. 然後在瀏覽器中輸入你的虛擬機器IP:  http://192.168.23.173:8080,看到下面的介面就算成功了。

  

  然後大家就可以按照步驟一步一步下去就可以了。

 

二:構建你的netcore程式

  先提供一個簡單的test程式,供後續做自動化部署只用。

 

  static void Main(string[] args)        {            var bgtask = Task.Run(() =>            {                for (int i = 0; i < 1000; i++)                {                    Log.Info($"i={i}");                    Thread.Sleep(1000);                }            });            AppDomain.CurrentDomain.ProcessExit += (s, e) =>            {                Log.Info($"{DateTime.Now} 恭喜,TestService服務程式已準備退出!");                Environment.Exit(0);            };            bgtask.Wait();        }

 

三:jenkins配置

1.  點擊建立任務

 

2. 選擇構建一個自由式饒舌的軟體項目,然後點擊確定

 

3.   這裡的“源碼管理”tab頁是非常重要的,預設支援git和svn,這裡就選擇svn了,把你產生svn的地址貼上去,因為後續

      執行shell指令碼的時候,會在jenkins的workspace檔案夾中執行dotnet publish 的。

 

4. 在“構建” tab頁中,最最重要的就是裡面的shell指令碼。

ps -ef | grep MemSql.Test.dll | grep -v grep | awk '{print $2}' | xargs --no-run-if-empty killcd ./MemSql.Testmkdir -p /data/output/MemSql.Test/v${BUILD_NUMBER}dotnet publish -o /data/output/MemSql.Test/v${BUILD_NUMBER} -c Releasecd /data/output/MemSql.Test/v${BUILD_NUMBER}BUILD_ID=dontKillMe nohup dotnet MemSql.Test.dll &

 

   這裡要關心的幾處是:

   《1》 在kill pid的時候,如果pid不存在,你的預設指令碼會報pid不存在的錯誤的,所以加上 --no-run-if-empty  的if判斷,沒有就

             不執行kill。

   《2》 使用了一個Jenkins的一個環境變數 {BUILD_NUMBER} , 也就是中的這個位置,用這個編譯版本號碼作為檔案夾。

 

  《3》 因為我是用nohup產生後台進程的,所以要使用dotKillMe命令讓jenkins不要在產生完後kill 它。

 

然後點擊儲存,這個Test項目的自動化部署就搞定了。。。

 

四:操作流程

       在操作之前,一定要記得讓 jenkins使用者提升一下許可權,否則你的 copy,mkdir可能許可權不足,這裡我就提升成root許可權。

 

1: 把jenkins使用者加入到root組中。

gpasswd -a root jenkins

 

2:修改/etc/sysconfig/jenkins檔案, 把原來的 users= jenkins 改成root。

# Unix user account that runs the Jenkins daemon# Be careful when you change this, as you need to update# permissions of $JENKINS_HOME and /var/log/jenkins.#JENKINS_USER="root"JENKINS_GROUP="root"

 

3:重啟Jenkins即可

service Jenkins restart

 

4. 然後你的步驟為:

   《1》 在svn中提交代碼。

  《2》 找到你的所屬項目,點擊“立即構建”。

  

 

    當然也可以讓jenkins自動化構建,但是考慮到產生項目,最好還是加上手工發布這個按鈕,安全可靠, 構建完之後,大家可以看看 jenkins的 “控制台輸出”。

 

然後你可以通過ftp去生產看一下,果然都跑起來了,v21就是我的編譯版本號碼,而且你的日誌果然就是我的商務邏輯輸出,對吧,如:

 

 

這時候,你覺得代碼有問題,需要修改一下,把i 改成 m ,接下來的步驟也就是 “提交代碼” -> “可視化立即編譯”  ->  "查看結果" 這樣的流水線作業而已啦。。。。

 

 

好了,本篇就說到這裡,希望對你有協助。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.