最新准備上個gitlab+jenkins自動下發。就找資料一路摸坑,根據老男孩資料加上一些博客。終於搭建完成。記錄一下排坑過程。
首先是安裝:
軟件版本:
gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
jdk-8u181-linux-x64.rpm
jenkins-2.99-1.1.noarch.rpm
三台機器。gitlab:192.168.6.71 jenkins:192.168.6.72 模擬生產web服務器:192.168.6.73
安裝gitlab:按照官網給出的步驟一步一步
安裝依賴、配置防火牆(其實沒毛用,這邊服務器加固過默認都是關閉防火牆和selinux的) yum install -y curl policycoreutils-python openssh-server |
直接登陸http://192.168.7.61讓設置用戶名密碼。設置完重新登陸即可。至此gitlab安裝完成,目前沒啥大坑,小水溝有幾個隨隨便便還是能趟過的
然后就是創建項目了。創建的先后順序:
創建組》創建項目》創建用戶
項目和用戶都要屬於組,用戶給個Devloper權限
創建項目》選擇屬於的組》項目名稱》默認創建即可
項目創建完成
在服務器上吧項目clone下來,注意需要添加密鑰認證
執行命令
git clone git@192.168.6.71:git_data/lingshu.git
然后本地就有一個叫lingshu的文件夾。
從碼雲上找了一個開源的web項目,上傳到自己的gitlab上。gitlab的操作基本完成
安裝jenkins:
rpm -ivh jdk-8u181-linux-x64.rpm rpm -ivh jenkins-2.99-1.1.noarch.rpm systemctl start jenkins |
登陸http://192.168.6.72:8080
提示密碼在/var/lib/jenkins/secrets/initialAdminPassword文件下
cat /var/lib/jenkins/secrets/initialAdminPassword
將密碼輸入,登陸,改密,重新登陸
安裝完成
jenkins支持插件,可以從官網下載。將插件拷貝到/var/lib/jenkins/plugins目錄下。重啟服務,systenctl restart jenkins
登陸jenkins點 系統管理》管理插件》已安裝 就可以看到已經加載的插件
構建項目:新建項目》起個項目名稱,自由風格的,點確定》源碼管理》Git》輸入gitlab的連接。
結果發下,一路飄紅。what?為什么跟着老師一步一步做會有錯。這個時候我意識到了,這個視頻可能老男孩給你的坑,誘導你報班。對於我這種每天研究《五毛錢如何花三天》的人來說,只有一路百度。
首先報錯信息:
|
從報錯信息來看,應該是ssh密鑰有問題,認證失敗,但是隨着我重新生成兩次密鑰都不行后,就意識到了事情沒那么簡單。然后繼續百度博客。然后發現大多說是本地git版本低需要升級。我也不管對不對,下了個源碼包,編譯安裝雖然沒大坑,但是小坑不斷好在花了十幾分鍾升級好了jenkins上git軟件版本。但是沒毛用,坑還在。這時候有想到的原來的猜想,報錯上來看應該是密鑰對的問題,會不會是jenkins不知道私鑰在哪沒法開鎖。正巧這時候看到了一篇博客解決方法跟我的想法一樣,就按照他的做了,結果搞定。步驟繁瑣就不截圖了,放個鏈接 https://www.cnblogs.com/dotnet261010/p/12393917.html
還有個小坑就是升級完git后由於是編譯安裝的,雖然我加入了環境變量但還是有問題。需要更改 系統管理》全局工具配置》Git 將環境變量改一下要不然會報There's no such executable git in PATH: /sbin, /usr/sbin, /bin, /usr/bin.
至此項目創建完成。點一下立即構建。
燈是藍色表示執行成功,單機左鍵查看控制台輸出
已經將項目拉取到了/var/lib/jenkins/workspace/freestyle-job目錄在jenkins上查看發現已經有文件,說明項目拉去成功
自動化發布:
192.168.6.73上安裝一個nginx做驗證。
先寫一個自動化發布的小腳本。將項目打包上床到web服務器上。
[root@jenkins72 ~]# cat /server/scripts/bulid.sh #!/bin/bash |
手動執行一下,發現沒問題。然后在jenkins上配置自動構建
配置好之后點立即構建,發現飄紅。哎呦我去,有預感坑又來了,然后看控制台輸出報錯信息
發現又是密鑰問題,百度發現應該是用戶不一致,安裝的時候是有個jenkins用戶的,但是這個用戶默認是/bin/false類型的。執行一些普通命令還行。但是沒有執行ssh和scp的權限。思路就是改用戶類型給他個sudo權限。然后把腳本里的ssh和scp命令都用sudo執行。
比較繁瑣,貼個別人寫好的https://www.cnblogs.com/fawaikuangtu123/p/10316404.html更改后的腳本
[root@jenkins72 ~]# cat /server/scripts/bulid.sh |
再點擊立即構建,就可以將拉去到的項目發布到服務器上了。但是我們要的是自動發布,不能每次改完代碼push到gitlab上,都要點一次自動構建,這就沒意義了,還不如直接手動執行腳本呢,買辦法只能繼續坑。
自動構建:
編輯項目的構建觸發器
保存
在gitlab上進行授權
點擊測試,模擬push操作。再登陸到jenkins上查看發現任務已經自動執行成功。至此所有操作完成。只要開發將改好的代碼push到gitlab上或者有合並請求的時候。jenkins就會自動執行構建。
————假裝自己是一條分割線———————————————————————————————————————————————————————————————
jenkins返回構建結果給gitlab
gitlab上配置:創建access Touken
用戶-->設置(settings)-->Access Tokens -->輸入名稱,勾選api-->點擊創建(Create personal access token)-->復制生成的key
將生成的token復制下來保存好
jenkins上操作:
jenkens-->系統管理-->系統設置-->Gitlab項
創建成功后保存配置即可
在項目構建后的操作中選擇倒數第4個將構架狀態push到gitlab。最后保存。
jenkins上立即構建,在gitlab倉庫后面顯示綠色對號表示成功。
返回構建結果配置結束。