1. 程式人生 > >centos7下jenkins部署donetcore 程式

centos7下jenkins部署donetcore 程式

1.在centos7下安裝docker,通過yum來安裝docker,執行如下命令

# yum install docker            --安裝docker,最好不要安裝最新版本的Docker,最新版本的docker不穩定可能存在bug

# systemctl start docker      --啟動docker服務

# systemctl enable docker  --設定開機啟動docker,防止機器關機後,docker服務需要手動啟動

2.安裝完docker後,接下來安裝jdk(因為jenkins是java開發的)以及從網路下載jenkins安裝包,注意 /data/software為我的系統儲存jenkins包的路徑,使用者可以自行設定,注意jenkins的rpm包地址可能失效,失效的話,請登入jenkins官網進行下載,如果嫌網路下載速度慢,可以將離線下載的包,通過sftp工具拷貝到主機上進行安裝

# yum install java  或者 # yum install java-1.8.0-openjdk

wget -P  /data/software https://prodjenkinsreleases.blob.core.windows.net/redhat-stable/jenkins-2.138.3-1.1.noarch.rpm

3.轉到/data/software 下,安裝jenkins包

# cd /data/software
# rpm -ivh jenkins-2.138.3-1.1.noarch.rpm

4.啟動jenkins服務,並通過 http://localhost:8080 訪問啟動的jenkins(預設jenkins管理頁面是ip:8080)

# systemctl start jenkins  //啟動jenkins服務

# systemctl enable jenkins //開機啟動jenkins服務

5.不出意外將通過地址能夠訪問jenkins,但是也不排除無法訪問jenkins,因為centos7預設防火牆是開啟,導致無法通過瀏覽器訪問jenkins,我們可以通過在執行下面的命令,關閉系統的防火牆

# systemctl stop  firewalld.service  --關閉防火牆服務

# systemctl disable  firewalld.service  --取消開機啟動防火牆服務

6.解決無法訪問的問題後,通過地址訪問到如下的頁面

7.在centos7中執行下面的命令得到初始密碼,進行登入操作

# vi /var/lib/jenkins/secrets/initialAdminPassword

8.輸出密碼後,進入如下介面,選擇安裝推薦外掛

9.安裝完推薦的外掛後,進入建立管理員使用者

10.設定完所有的步驟後,終於進入jenkins的管理介面,如下圖

11.jenkins安裝成功後,下面將繼續介紹使用jenkins自動構建自己github上dotnet core程式

12.在jenkins主介面選擇建立新任務,如下圖

12.輸入任務名稱和選擇構建咋樣的風格的任務,選擇完畢後,確定儲存

13.確定後,進入任務配置頁面,在general頁面填寫任務說明與描述,以及設定其他引數資訊

14.填寫general頁面,進行原始碼管理,在這裡我選擇github,使用者可以選擇其他程式碼管理方式

15.進入centos7中執行命令,安裝git

16.安裝完成git後,再次檢視之前報錯的頁面,錯誤消失了

17.因為在general頁面配置了引數,我們將在原始碼管理頁面使用,如下圖所示

18.構建觸發器頁面,我這裡不進行任何設定,使用者可以憑藉自己的需求自行設定

19.構建環境頁面,因為想在構建環境頁面,能夠設定Version Number 的資訊,在jenkins的系統設定中,外掛管理安裝Version Number 外掛如下圖,安裝完成後,就可以在構建環境頁面通過Version Number Plug外掛生成優雅的版本號

20.構建頁面,這裡選擇“執行shell”,填寫shll指令碼(這裡最好將shell指令碼命令寫到檔案中,以便後續的修改),在這裡使用shell指令碼,有利於後面的維護操作,不出問題,專案將構建成功

21.儲存後,構建任務,發生錯誤(在jenkins任務控制檯輸出頁面),輸出如下圖,執行 dotnet restore 命令失敗,主要是系統中沒有安裝dotnet環境

22.在centos7中安裝dotnet core執行環境

# rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm  --在安裝Net之前,我們需要安裝微軟key以及依賴,這個命令每臺機器只要執行一次就行,安裝dotnet sdk時,根據專案的版本選擇特定的sdk進行安裝

#  yum install libunwind libicu --dotnet-sdk需要依賴“libunwind”和“libicu”

#  yum install dotnet-sdk-2.0.0   --安裝dotnet-sdk 版本2.0.0

23.在執行構建的過程中出現了“sudo: no tty present and no askpass program specified”的錯誤,原因在於在shell指令碼中,使用sudo命令來提升執行許可權,因為Jenkins伺服器在執行sudo命令時的上下文有誤,導致這個命令執行的異常,以下為解決方式

     在Jenkins宿主伺服器上執行如下命令 
     # sudo visudo
     在檔案的末尾加上一行 
     jenkins ALL=(ALL) NOPASSWD: ALL
     重啟Jenkins服務 
     # systemctl restart jenkins
     最後,重新執行構建任務,不會出現先前的錯誤。

     如果誤操作修改了/etc/sudoers的許可權來修改上述檔案,則會導致如下所示的錯誤:

      sudo :/etc/sudoers is world writable 
      sudo : no valid sudoers source found, quitting 
      sudo : unable to initialize poling plugin

       這是Linux的一種保護機制。因此,如果出現上述誤操作,則需要執行如下命令來解決: 
       # pkexec chmod 0440 /etc/sudoers

24.在構建過程中,出現錯誤  shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory,具體的解決方案可以參考如下文章

https://blog.csdn.net/juyin2015/article/details/79233815

25.在執行shell指令碼的過程,執行映象啟動的過程,容器啟動後馬上就關閉了,可以參考下面的文章

https://www.jianshu.com/p/f1e7a1630c64

26.下面是shell檔案的具體內容,供大家參考

27.下面是Dockerfile檔案的內容,供大家參考

28.使用docker exec 命令出現如下的錯誤

rpc error: code = 2 desc = oci runtime error: exec failed: 
container_linux.go:247: starting container process caused "process_linux.go:110: 
decoding init error from pipe caused \"read parent: connection reset by peer\""

使用者可以通過以下的命令來進行處理

# yum update

# yum downgrade docker docker-client docker-common     --before and no idea for what the old version of docker, just run

以上就是完整的過程,總算寫完了,花了不少時間,不足之處,還往大家的見諒。