記錄一次gitlab+jenkins入坑到排坑的過程


最新准備上個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
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
改配置文件(也是手動改的,后來嫌每次安裝手動改麻煩就寫了個sed),加載配置
sed -i "s/'http:\/\/gitlab.example.com'$/'http:\/\/192.168.6.71'/g" /etc/gitlab/gitlab.rb
gitlab-ctl reconfigure

  

 

  

 

 

 

直接登陸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?為什么跟着老師一步一步做會有錯。這個時候我意識到了,這個視頻可能老男孩給你的坑,誘導你報班。對於我這種每天研究《五毛錢如何花三天》的人來說,只有一路百度。

 

 

 首先報錯信息:

Failed to connect to repository : Command "/usr/local/git/bin/git ls-remote -h git@192.168.6.71:git_data/lingshu.git HEAD" returned status code 128:
stdout:
stderr: Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

從報錯信息來看,應該是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
CODE_DIR=/var/lib/jenkins/workspace/freestyle-job/
TIME=`date +%F-%H-%M-%S`
WEB_DIR=/usr/share/nginx
IP=192.168.6.73
cd ${CODE_DIR} && tar -zcf /tmp/web-${TIME}.tar.gz *
scp /tmp/web-${TIME}.tar.gz ${IP}:${WEB_DIR}
ssh root@${IP} "mkdir ${WEB_DIR}/web-${TIME} && tar -zxf ${WEB_DIR}/web-${TIME}.tar.gz -C ${WEB_DIR}/web-${TIME} && rm -rf ${WEB_DIR}/web-${TIME}.tar.gz"
ssh root@${IP} "rm -rf ${WEB_DIR}/html && ln -s ${WEB_DIR}/web-${TIME} ${WEB_DIR}/html"

手動執行一下,發現沒問題。然后在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
#!/bin/bash
CODE_DIR=/var/lib/jenkins/workspace/freestyle-job/
TIME=`date +%F-%H-%M-%S`
WEB_DIR=/usr/share/nginx
IP=192.168.6.73
cd ${CODE_DIR} && tar -zcf /tmp/web-${TIME}.tar.gz *
sudo scp /tmp/web-${TIME}.tar.gz ${IP}:${WEB_DIR}
sudo ssh root@${IP} "mkdir ${WEB_DIR}/web-${TIME} && tar -zxf ${WEB_DIR}/web-${TIME}.tar.gz -C ${WEB_DIR}/web-${TIME} && rm -rf ${WEB_DIR}/web-${TIME}.tar.gz"
sudo ssh root@${IP} "rm -rf ${WEB_DIR}/html && ln -s ${WEB_DIR}/web-${TIME} ${WEB_DIR}/html"

 

 

 

 

 

 

 

再點擊立即構建,就可以將拉去到的項目發布到服務器上了。但是我們要的是自動發布,不能每次改完代碼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倉庫后面顯示綠色對號表示成功。

 

 返回構建結果配置結束。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM