GitLab與Jenkins自動部署——Devops(一)

前言

上一次某雲崩潰以後,學習了一下CentOS開機自啓。然後想着,如果我提交Git就可以自動發佈新版本測試,那是不是又節約了一部分時間,又可以學習了,學習總是使我快樂!

出於上述的目的,瞭解了時下比較火熱的一個概念——Devops,持續集成開發!

一般來說,Git+Jenkins+Docker這一套模式比較火,Docker之前玩過,但是這次沒集成,本次從自己搭建GitLab服務端到部署Jenkins開始,之後有時間再集成Docker

1、搭建 GitLab(192.168.117.129)

1.1 下載 RPM 安裝包

gitlab-ce-12.10.1-ce.0.el8.x86_64.rpm

1.2 安裝GitLab

rpm -ivh gitlab-ce-12.10.1-ce.0.el8.x86_64.rpm
#安裝 SSH
yum install -y openssh openssh-server
systemctl enable sshd
systemctl start sshd
# 安裝郵件服務
yum install postfix
systemctl enable postfix
systemctl start postfix

一般服務器默認開啓SSH,所以這裏也可以省略這步

1.3 修改external_url

vi /etc/gitlab/gitlab.rb

external_url 'http://192.168.117.129:6953/gitlab’

一般不建議把端口寫成8080,會與GitLab的unicorn衝突,當然也可以修改unicorn端口 unicorn[‘port’]=8888

1.4 自動配置GitLab

gitlab-ctl reconfigure

1.5 啓動GitLab

gitlab-ctl start
/etc/gitlab/gitlab.rb 主配置文件
/var/log/gitlab/ 日誌目錄
/var/opt/gitlab/ 各個服務的主目錄
/var/opt/gitlab/git-data/repositories GIT 倉庫數據目錄

1.6 訪問 502 錯誤

可能是由於GitLab佔據內存大,所以報錯,如果是虛擬機運行的,調大內存即可。還一種說法是要分配虛擬交換內存

創建2G的空間
[root@localhost ~]# dd if=/dev/zero of=/var/swap bs=1024 count=2048000
2048000+0 records in
2048000+0 records out
2097152000 bytes (2.1 GB, 2.0 GiB) copied, 6.82497 s, 307 MB/s
 
if 表示infile,of表示outfile,bs=1024代表增加的模塊大小,count=2048000代表2048000個模塊,也就是2G空間
將目的文件設置爲swap分區文件
[root@localhost ~]# mkswap /var/swap
mkswap: /var/swap: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 2 GiB (2097147904 bytes)
no label, UUID=3f3c1b4e-6444-4180-a309-4f52ea91958d
 
激活swap,立即啓用交換分區文件
[root@localhost ~]# mkswap -f /var/swap
mkswap: /var/swap: insecure permissions 0644, 0600 suggested.
mkswap: /var/swap: warning: wiping old swap signature.
Setting up swapspace version 1, size = 2 GiB (2097147904 bytes)
no label, UUID=8d2c8fef-b7e7-4b36-849d-fe85fbd4ef78
[root@localhost ~]# reboot

2、Devops(192.168.117.128)

2.1 安裝配置JDK、Tomcat、jenkins.war、Maven

將jenkins.war移動到Tomcat中的webapps路徑下,修改Tomcat端口(8088),啓動Tomcat
打開127.0.0.1:8088/jenkins/,從本地獲取密碼登陸

[root@localhost conf]# vi server.xml 
[root@localhost conf]# cd ../bin/
[root@localhost bin]# sh startup.sh 
Using CATALINA_BASE:   /home/apache-tomcat-9.0.34
Using CATALINA_HOME:   /home/apache-tomcat-9.0.34
Using CATALINA_TMPDIR: /home/apache-tomcat-9.0.34/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/apache-tomcat-9.0.34/bin/bootstrap.jar:/home/apache-tomcat-9.0.34/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# cat /root/.jenkins/secrets/initialAdminPassword
[root@localhost bin]#

2.2 安裝插件

安裝插件可能會失敗,建議更換源

http://mirror.esuni.jp/jenkins/updates/update-center.json

插件管理
更新源

2.3 創建管理員用戶

2.4 漢化

下載locale插件和Localization: Chinese (Simplified),通過 Jenkins 管理設置中文

漢化

2.5 配置JDK、Maven、Git

配置

3 配置GitLab構建項目

3.1 手動同步代碼構建啓動

選擇Git 項目,把項目地址,用戶名/登錄密碼填上,添加啓動命令,基本就可以完成手動構建項目並啓動了

啓動的Shell命令,是如果發現有老的版本正在運行的,將會關閉老的版本然後啓動新版本。因爲版本號可能會隨着功能模塊的更新而發生變化,所以Shell並不指定具體的版本號

cd /root/.jenkins/workspace/LocalGitLabTest/JenkinsTest/target/

APP_NAME="jenkins-*.jar"

pid=`ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}'`
if [ -z "${pid}" ]; then
    kill -9 ${pid}
fi

# BUILD_ID防止jenkins在build後把子進程殺死
BUILD_ID=DONTKILLME
nohup java -jar "${APP_NAME}" > /dev/null 2>&1 &

創建項目
啓動命令

3.2 配置Webhook觸發自動構建

Webhook提示Requests to the local network are not allowed
GitLab用root用戶登錄,進入Configure Gitlab模塊

Configure Gitlab
允許本地地址
Jenkins 生成 token
Jenkins token
將Jenkins項目token填寫到GitLab Webhook的token中
webhook token
創建GitLab token
GitLab token
Jenkins 配置 GitLab 生成的 token
Jenkins GitLab token
Webhook 403錯誤
403
Webhook 500錯誤

Jenkins安裝GitLab Hook插件及其依賴

3.3 測試Webhook配置

測試
當前版本11,測試推送
11
push
12
至此,可以看到 Jenkins 會根據更新自動構建,基本可以使用了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章