2021-05-12 14:32:11
Jenkins自動化發布工具使用
在很久之前net還只能在windows上部署的時候,或許很多創業公司的朋友發布專案還都是人肉部署,反正windows都是視覺化的介面,拖拖拉拉,開開關關還不
是特別麻煩。。。現如今你的專案需要在linux上部署,可惜的是再也沒有什麼視覺化的介面給你,全在xshell上操作,如果在xshell上部署個位數的專案大家或許還可
以接受,如果要部署10+以上的服務呢,估計很多人在xshell上敲的頭都大了。。。這就是為什麼docker會有dockerfile,會有容器編排的docker-compose,所以找
一款自動化發布工具迫在眉睫了。
一: Jenkins部署
它的官方網址是:https://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.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
2. 使用yum安裝
yum install jenkins
3. 啟動jenkins
[root@localhost ~]# service jenkins start
Starting 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 kill
cd ./MemSql.Test
mkdir -p /data/output/MemSql.Test/v${BUILD_NUMBER}
dotnet publish -o /data/output/MemSql.Test/v${BUILD_NUMBER} -c Release
cd /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 ,接下來的步驟也就是 “提交程式碼” -> “視覺化立即編譯” -> "檢視結果" 這樣的流水線作業而已啦。。。。
好了,本篇就說到這裡,希望對你有幫助。
區域網內利用GitLab+Jenkins自動生成GitBook並行布(Nginx) https://www.linuxidc.com/Linux/2016-05/131136.htm
Linux+Git+Maven+Jenkins+Neuxs自動化編譯環境搭建 https://www.linuxidc.com/Linux/2016-02/128652.htm
CentOS6安裝Jenkins https://www.linuxidc.com/Linux/2016-05/131365.htm
Jenkins伺服器搭建指南-官方文件翻譯整理 https://www.linuxidc.com/Linux/2017-10/147281.htm
使用Jenkins設定Git+Maven的自動化構建 https://www.linuxidc.com/Linux/2016-02/128641.htm
Jenkins+Maven+Git搭建持續整合和自動化部署的設定手記 https://www.linuxidc.com/Linux/2015-06/118606.htm
Jenkins的分散式構建及部署——節點 https://www.linuxidc.com/Linux/2015-05/116903.htm
使用Jenkins 自動部署發布 https://www.linuxidc.com/Linux/2017-04/143257.htm
CentOS 7.4下部署GitLab+Jenkins持續整合環境 https://www.linuxidc.com/Linux/2018-06/152768.htm
Jenkins的安裝和構建一個Maven專案 https://www.linuxidc.com/Linux/2018-05/152155.htm
Jenkins+Maven+Tomcat+SVN+Apache專案持續整合詳解 https://www.linuxidc.com/Linux/2018-03/151352.htm
相關文章