最詳細之教你Jenkins+github自動化部署.Net Core程式到Docker

包子wxl發表於2021-08-19

環境 centos7.9,.NET5

一、Jenkins搭建

1)下載Jenkins的war包

在\home目錄建一個jenkins目錄放jenkins的包

#進入\home目錄
cd \home
#建立 jenkins目錄
mkdir jenkins

在jenkins目錄下載war包

#進入jenkin目錄
cd \home\jenkins
#下載jenkins的war包
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

如果包wget命令用不了的話,安裝一下

#如果wget命令用不了的話,執行以下命令
yum -y install wget 

下載完後jenkins目錄下產生一個jenkins.war檔案

 

 

 2)安裝java jdk

看到war,可以知道jenkins是java寫的,所以要安裝java,官網上提示安裝java1.8或java11,這裡安裝java1.8

#下載java jdk的rpm檔案
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" \
http://download.oracle.com/otn-pub/java/jdk/8u301-b09/d3c52aa6bfa54d3ca74e617f18309292/jdk-8u301-linux-x64.rpm
#授許可權
chmod +x jdk-8u301-linux-x64.rpm
#安裝
rpm -ivh jdk-8u301-linux-x64.rpm

如果報 Unable to establish SSL connection 執行一下下面命令

#如果報Unable to establish SSL connection.執行下面命令
yum install openssl openssl-devel -y

執行完上面3個命令,看下java版本資訊

java -version

看到已經安裝好了

 

 

 3)安裝Jenkins

進入到上面的jenkins.war包的目錄\home\jenkins

#啟動,調通前用這個,沒問題後再用後臺啟動,關閉窗體就停止,或ctrl+c停止
#java -jar jenkins.war --httpPort=8081
#後臺執行 --後臺啟動,窗體關閉了,也在後臺啟動
nohup java -jar jenkins.war --httpPort=8081 &
#輸入jps 檢視當前jenkins啟動的程式號
#ps ef|grep jenkins 查詢當前啟動的jenkins的程式號
#如果要關閉,kill -9 埠號

 

執行上面命令中的  nohup java -jar jenkins.war --httpPort=8081 &  後,瀏覽器開啟ip:8081,這裡安裝過程要小等一會才能開啟

 

 

 然後按提示命令開啟 vi /root/.jenkins/secrets/initialAdminPassword 檔案把密碼複製到輸入框上

vi /root/.jenkins/secrets/initialAdminPassword

然後到這個介面,如果不熟悉,就用推薦的。

 

 

 

一直等待安裝完,如果有失敗是網路原因,重試就能裝上了。

 

 

 

裝完後跳到這個介面,輸入使用者名稱密碼,郵件。

 

 

 

然後到這個介面,直接儲存。

 

 

 

然後開始使用,來到jenkins介面,右上方有個鈴,點選升級。

 

 

 裝完重啟

 

 

 

安裝完成。

 

 

 

如果遇到升級慢的問題解決

1、修改/home/jenkins/hudson.model.UpdateCenter.xml檔案

vi /home/jenkins/hudson.model.UpdateCenter.xml

修改為:

<sites>
  <site>
    <id>default</id>
<url>http://mirror.xmission.com/jenkins/updates/update-center.json</url>
  </site>
</sites>

 

2、設定 default.json 許可權 安裝外掛什麼的時候,不需要google.com,改成百度

 cd /root/.jenkins/updates/

然後執行下面的

sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu
.cn\/jenkins/g' default.json && sed -i
's/http:\/\/www.google.com/https:\/\/www.baidu.com/g
' default.json

修改完之後,需要重新啟動

二、github .NetCore專案準備

github建立一個私有倉庫

 

 

建立完後進入倉庫,把地址複製出來

 

 

把專案克隆到本地,這裡用vs2019的git功能

點克隆後會彈出一個github的授權頁面授權給vs,然後成功把專案克隆到本地。

 

 建立一個.NetCore程式,並放到剛才克隆的目錄

 

 

 執行一下檢視介面

 

 因為我們要把.NetCore程式部署到Docker,所以建一個DockerFile檔案

 

 

 點了後會會產生一個Dockerfile檔案,在根目錄,需要把它移動到外面,和專案資料夾同級。

 

Dockerfile的內容是vs自動生成的,內容如下,注意一下路徑。

 

 

 

 

 

然後提交修改。

 

 

 把專案推到github

 

 開啟githug看到專案已經提交成功

 

 

 

 

三、伺服器git客戶端安裝

回到伺服器,執行安裝git客戶端命令

#安裝git客戶端
yum install -y git

安裝完客戶端後,執行命令生成ssh key命令,一直回車確認即可。

#生成ssh key
ssh-keygen -t rsa -C '284743503@qq.com'

 

 

 

 

 

執行完命令後,可以看到把ssh key生成到了/root/.ssh目錄下了,id_rsa檔案為私鑰,id_rsa.pub為公鑰。

執行vi /root/.ssh/id_rsa.pub開啟公鑰。

 

 

 把上面的公鑰複製到github上的ssh key裡。

 

 

 

 

 

 

四、Jenkins自動化構建任務建立

回到jenkins,新建任務

 

 

輸入任務名稱,構建自由風格專案

 

 

進去原始碼管理,選擇Git,倉庫URL填上面克隆github專案的ssh地址,因為專案是私有的,因為是私有的,所以也要把git的私鑰憑證加進來。

複製github上的地址

 

 

 

填到jenkins的git上,把分支改為github的預設main分支,然後新增github憑證。

 

 憑證填上面的id_rsa檔案裡面的私鑰,命令 vi /root/.ssh/id_rsa然後複製裡面的私鑰填到sshkey憑證裡面。

 

 配置完後外面選剛才的配置。

 

 

構建環境,把超時時間設10分鐘,因為訪問github網路可能會有點慢,專案檔案大的時候拉取需要時間。

 

 

 構建,選擇執行shell命令,命令如下,生成docker映象,然後執行容器例項,然後完成。

#!/bin/bash
# 獲取短版本號
GITHASH=`git rev-parse --short HEAD`
echo ---------------開始編譯程式...------------------
echo ---------------Building Docker Image...--------
----------
docker build -t jkdemo:$GITHASH .
docker tag jkdemo:$GITHASH jkdemo:latest
echo ---------------Launching Container...----------
--------
docker rm -f jkdemo1
docker run -d -p 5001:80 --name jkdemo1 jkdemo:latest

 

 

 在這個任務下點選立即構建,就會自動拉取程式碼,然後執行裡面的shell命令釋出。

 

 構建成功

 

 

訪問部署的.NetCore ,ip:5001,訪問成功

 

更新站點,提交

 

 

 再點選立即構建,構建成功,點進去還能看到提交的內容

 

 

 

 

 

 

 

 再訪問站點,發現更新了。

 

 後面的修改,提交後,只需要點選構建就可以自動釋出啦!公司中一般都是用自己搭的gitlab,只要把github的操作換成gitlab,操作過程也是一樣的。

 

相關文章