部署GitLab 、 配置GitLab 、 CI/CD概述、部署Jenkins

鏈接

案例

部署GitLab

1.1 問(wèn)題

本案例要求搭建一臺(tái)GitLab服務(wù)器,要求如下:

  • 準(zhǔn)備環(huán)境(容器環(huán)境)
  • 安裝GitLab

1.2 方案

實(shí)驗(yàn)環(huán)境準(zhǔn)備(沿用DAY01的實(shí)驗(yàn)環(huán)境):

1)準(zhǔn)備兩臺(tái)RHEL8虛擬機(jī),主機(jī)名分別為develop和git。

2)develop主機(jī)的IP地址為192.168.4.10,不需要配置網(wǎng)關(guān)和DNS。

3)git主機(jī)的IP地址為192.168.4.20,不需要配置網(wǎng)關(guān)和DNS。

4)給develop和git兩臺(tái)主機(jī)配置可用的YUM源。

備注:跨網(wǎng)段走路由,相同網(wǎng)段不需要配置網(wǎng)關(guān)就可以互聯(lián)互通!

實(shí)驗(yàn)拓?fù)淙鐖D-1所示。

image

圖-1

1.3 步驟

實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。

步驟一:環(huán)境準(zhǔn)備(在192.168.4.20主機(jī)操作)

1)防火墻、SELinux。

[root@git ~]# firewall-cmd --set-default-zone=trusted
[root@git ~]# setenforce 0
[root@git ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config

2)修改sshd默認(rèn)端口。

因?yàn)镚it是通過(guò)SSH協(xié)議形式訪問(wèn),后面需要啟動(dòng)GitLab容器,該容器需要占用22端口,而電腦的sshd服務(wù)也需要占用22端口(端口沖突),所以需要提前修改sshd默認(rèn)端口,將端口修改為2022。

注意:修改后需要重新登錄一次虛擬機(jī)(重新登錄需要指定端口)。

[root@git ~]# vim /etc/ssh/sshd_config
Port 2022                                               #17行
[root@git ~]# systemctl restart sshd
[root@git ~]# exit

ssh -p 2022  192.168.4.20  #真機(jī)

3)準(zhǔn)備容器環(huán)境。

提示:gitlab_zh.tar在第二階段素材目錄中,需要先將該素材拷貝到192.168.4.20主機(jī)。(比如拷貝到/root目錄)

[root@git ~]# dnf  -y   install   podman
[root@git ~]# podman load < ./gitlab_zh.tar
[root@git ~]# podman images
REPOSITORY               TAG      IMAGE ID          CREATED       SIZE
localhost/gitlab_zh   latest   1f71f185271a       2 years ago   1.73 GB

4)創(chuàng)建數(shù)據(jù)目錄

容器無(wú)法持久保存數(shù)據(jù),需要將真機(jī)目錄和容器目錄綁定,實(shí)現(xiàn)數(shù)據(jù)永久保存。

[root@git ~]# mkdir -p /srv/gitlab/{config,logs,data}

步驟二:?jiǎn)?dòng)GitLab容器(192.168.4.20操作)

tar包較大,內(nèi)存需要3000

1)啟動(dòng)容器

[root@git ~]# touch /etc/resolv.conf                       
#如果沒(méi)有該文件則創(chuàng)建文件,防止無(wú)法podman run啟動(dòng)容器
[root@git ~]# podman run -d -h gitlab --name gitlab \
-p 443:443 -p 80:80 -p 22:22 \
--restart=always \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
gitlab_zh

注釋:

-d將容器放入后臺(tái)啟動(dòng)。

-h設(shè)置容器的主機(jī)名為gitlab。

--name設(shè)置容器名稱為gitlab。

-p進(jìn)行端口映射,將git主機(jī)的443、80、22端口和git上面運(yùn)行的容器端口綁定

這樣以后任何人訪問(wèn)git主機(jī)(192.168.4.20)的22端口也就是在訪問(wèn)容器里面的22端口,任何人訪問(wèn)git主機(jī)(192.168.4.20)的80端口也就是訪問(wèn)容器里面的80端口。

-v將git主機(jī)上面的目錄和容器里面的目錄綁定,git主機(jī)的/srv/gitlab/config目錄對(duì)應(yīng)容器里面的/etc/gitlab/目錄,其他目錄同理。

最后的gitlab_zh是鏡像名稱。

開(kāi)發(fā)----gitlab-----jenkins-----制作容器鏡像-----啟動(dòng)容器

2)配置systemd,實(shí)現(xiàn)容器開(kāi)機(jī)自啟動(dòng)(選做實(shí)驗(yàn))

生成service文件,-n是容器的名稱,給gitlab容器生成service文件

[root@git ~]# cd /usr/lib/systemd/system
[root@git ~]# podman generate systemd -n gitlab --files
[root@git ~]# cd ~

設(shè)置開(kāi)機(jī)自啟動(dòng)

[root@git ~]# systemctl enable container-gitlab.service

3)初始化登錄密碼(真機(jī)使用瀏覽器訪問(wèn)GitLab頁(yè)面)

# firefox http://192.168.4.20

GitLab默認(rèn)用戶名為root,第一次訪問(wèn)需要設(shè)置密碼,效果如圖-2所示。

image

圖-2

設(shè)置密碼后即可使用新設(shè)置的密碼登錄(密碼要8位,有字母符號(hào)數(shù)字組成),效果如圖-3所示。

image

圖-3

配置GitLab

2.1 問(wèn)題

沿用練習(xí)一,配置GitLab,具體要求如下:

  • 創(chuàng)建GitLab用戶和組
  • 創(chuàng)建GitLab項(xiàng)目
  • 客戶端管理GitLab項(xiàng)目
  • 上傳代碼

2.2 步驟

實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。

步驟一:創(chuàng)建用戶和組

1)創(chuàng)建用戶,點(diǎn)擊GitLab頁(yè)面的小扳手圖標(biāo),創(chuàng)建用戶,效果如圖-4所示。

image

圖-4

創(chuàng)建jerry用戶,點(diǎn)擊《編輯》設(shè)置用戶的密碼,效果如圖-5所示。

image

圖-5

2)創(chuàng)建組

點(diǎn)擊GitLab頁(yè)面的小扳手圖標(biāo),創(chuàng)建組,效果如圖-6所示。

image

圖-6

設(shè)置組名稱(組名稱為devops)以及可見(jiàn)等級(jí)(等級(jí)為公開(kāi)),效果如圖-7所示。

image

圖-7

3)將用戶加入到組(將jerry用戶加入devops組),效果如圖-8所示。

image

圖-8

步驟二:創(chuàng)建GitLab項(xiàng)目

1)創(chuàng)建項(xiàng)目,效果如圖-9所示。

image

圖-9

2)設(shè)置項(xiàng)目名稱、組、可見(jiàn)等級(jí),效果如圖-10所示。

image

圖-10

步驟三:管理GitLab項(xiàng)目

1)客戶端使用密碼管理GitLab項(xiàng)目(在192.168.4.10主機(jī)操作)

[root@develop ~]# git config --global user.name "Administrator"
[root@develop ~]# git config --global user.email "admin@example.com"

[root@develop ~]# git clone http://192.168.4.20/devops/myproject.git
[root@develop ~]# cd myproject

[root@develop myproject]# touch README.md
[root@develop myproject]# git add README.md
[root@develop myproject]# git commit -m "add README"
[root@develop myproject]# git push -u origin master
Username for 'http://192.168.4.20': jerry    #這里輸入用戶名
Password for 'http://jerry@192.168.4.20':    #這里輸入密碼

2)客戶端生成SSH密鑰(在192.168.4.10主機(jī)操作)

[root@develop myproject]# rm -rf /root/.ssh/known_hosts  #刪除之前的ssh遠(yuǎn)程記錄
[root@develop myproject]# ssh-keygen                   #生成ssh密鑰文件
[root@develop myproject]# cat ~/.ssh/id_rsa.pub       #查看密鑰文件
ssh-rsa 
AAAAB3NzaC1yc2EAAAADAQABAAABAQDPVwP8E7TtKha9H8Ec+CU2n19aIPo9sUa/pdM7gRaf0yG+Bcdy
Q7Hgi6pI51IhX6tat46L5tLkAY7urVeEmnPtUk/TVIUc0smJPXYKIggOCr2dDd9s1S0

3)使用jerry用戶登錄GitLab頁(yè)面

jerry用戶第一次登錄頁(yè)面需要重置一次密碼,密碼可以與舊密碼相同。效果如圖-11所示。

image

圖-11

4)上傳密鑰

將剛剛192.168.4.10上面創(chuàng)建的密鑰文件內(nèi)容上傳到GitLab。

點(diǎn)擊右上角賬戶圖標(biāo),點(diǎn)擊《設(shè)置》,點(diǎn)擊展開(kāi)按鈕,點(diǎn)擊《SSH密鑰》,然后將develop主機(jī)生成的密鑰文件內(nèi)容復(fù)制到GitLab上面。效果如圖-12、圖-13所示。

image

圖-12

image

圖-13

5)使用密鑰管理GitLab項(xiàng)目

首先要查看下基于SSH連接方式的鏈接,如圖-14所示。

image

圖-14

[root@develop myproject]# git remote remove origin
[root@develop myproject]# git remote add \
origin git@192.168.4.20:devops/myproject.git

重要備注:

前面的案例使用http協(xié)議訪問(wèn)clone了服務(wù)器的代碼倉(cāng)庫(kù),這里把之前的http服務(wù)器信息刪除(remove:刪除),然后在添加新的服務(wù)器信息(add:添加),使用ssh協(xié)議訪問(wèn)服務(wù)器。

[root@develop myproject]# echo hello word >> README.md
[root@develop myproject]# git add .
[root@develop myproject]# git commit -m "modify readme"
[root@develop myproject]# git push -u origin master

6)上傳靜態(tài)頁(yè)面代碼(代碼在第二階段素材lnmp_soft.tar.gz中)

需要提前將真機(jī)的網(wǎng)頁(yè)素材scp拷貝到develop虛擬機(jī)用戶的家目錄,解壓lnmp_soft.tar.gz,在該壓縮包里面有一個(gè)www_template.zip文件。

[root@develop ~]# dnf  -y  install   unzip tar
[root@develop ~]# unzip  www_template.zip
[root@develop ~]# cp -r www_template/*   myproject/
[root@develop](mailto:root@develop) ~]# cd  myproject/
[root@develop](mailto:root@develop) myproject]# git add .
[root@develop](mailto:root@develop) myproject]# git commit -m  "web site"
[root@develop](mailto:root@develop) myproject]# git push -u origin master
[root@develop](mailto:root@develop) myproject]# git tag  v1
[root@develop](mailto:root@develop) myproject]# git push -u origin v1

通過(guò)tag可以給代碼設(shè)置版本標(biāo)簽,如v1,v2,v3等等。

部署Jenkins

3.1 問(wèn)題

沿用練習(xí)二,部署CI/CD環(huán)境,部署Jenkins,具體要求如下:

  • 準(zhǔn)備實(shí)驗(yàn)環(huán)境
  • 部署Jenkins、初始化Jenkins
  • 管理Jenkins插件、調(diào)整系統(tǒng)配置

3.2 方案

實(shí)驗(yàn)環(huán)境準(zhǔn)備:

1)5臺(tái)RHEL8虛擬機(jī),主機(jī)名分別為develop、git、jenkins、web1和web2。

2)develop主機(jī)的IP地址為192.168.4.10,不需要配置網(wǎng)關(guān)和DNS。

3)git主機(jī)的IP地址為192.168.4.20,不需要配置網(wǎng)關(guān)和DNS。

4)jenkins主機(jī)的IP地址為192.168.4.30,不需要配置網(wǎng)關(guān)和DNS。

5)web1和web2主機(jī)的IP地址分別為192.168.4.100和192.168.4.200,不需要配置網(wǎng)關(guān)和DNS。

6)所有主機(jī)都需要配置可用的系統(tǒng)YUM源,設(shè)置防火墻信任所有,SELinux放行所有。

備注:跨網(wǎng)段走路由,相同網(wǎng)段不需要配置網(wǎng)關(guān)就可以互聯(lián)互通!實(shí)驗(yàn)拓?fù)淙鐖D-15所示。

image

圖-15

1.開(kāi)發(fā)寫(xiě)代碼-----上傳git
2.jenkins 訪問(wèn)git拉取代碼
(可以調(diào)用測(cè)試腳本,可以打包,可以編譯)

3.jenkins把結(jié)果放入一個(gè)FTP共享
4.web1、web2訪問(wèn)共享獲取代碼

步驟一:環(huán)境準(zhǔn)備

1)設(shè)置防火墻和SELinux(僅以一臺(tái)主機(jī)為例,其他所有主機(jī)都需要操作)

[root@git ~]# firewall-cmd --set-default-zone=trusted
[root@git ~]# setenforce 0
[root@git ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config

2)安裝依賴軟件(git、postfix、java JDK)。

注意:僅在jenkins主機(jī)操作!

[root@jenkins ~]# dnf -y install git
[root@jenkins ~]# dnf -y install postfix
[root@jenkins ~]# dnf -y install mailx
[root@jenkins ~]# dnf -y install java-11-openjdk
[root@jenkins ~]# systemctl enable postfix --now

備注:Git(版本控制軟件)、postfix(郵件服務(wù)器軟件)、mailx(郵件客戶端軟件)、openjdk(Java JDK工具)。

步驟二:部署、初始化Jenkins

1)安裝、啟動(dòng)Jenkins。

[root@jenkins ~]# dnf -y install ./jenkins-2.164.3-1.1.noarch.rpm
[root@jenkins ~]# systemctl enable jenkins
[root@jenkins ~]# systemctl start jenkins
#設(shè)置jenkins服務(wù)為開(kāi)機(jī)自啟動(dòng)服務(wù),并立刻啟動(dòng)該服務(wù)

2)初始化Jenkins

真機(jī)瀏覽器訪問(wèn)Jenkins頁(yè)面(firefox http://192.168.4.30:8080)。

第一次訪問(wèn)會(huì)提示初始密碼的位置(密碼在/var/lib/Jenkins/secrets/initialAdminPassword文件中),效果如圖-16所示。

image

圖-16

初始化時(shí)選擇不安裝插件,效果如圖-17和圖-18所示。

image

圖-17

image

圖-18

使用默認(rèn)的admin用戶登錄,完成初始化操作,效果如圖-19,圖-20,圖-21所示。

image

圖-19

image

圖-20

image

圖-21

步驟三:管理Jenkins插件、系統(tǒng)配置

1)重置管理員密碼。

重置密碼如圖-22所示。

image

圖-22

使用新密碼重新登錄,如圖-23所示。

image

圖-23

2)插件管理。

查看插件列表,效果如圖-24、圖-25所示。

image

圖-24

image

圖-25

拷貝插件文件到Jenkins目錄,Jenkins插件目錄為插件目錄:/var/lib/jenkins/plugins/。

Jenkins插件文件在第二階段素材目錄:jenkins_plugins.tar.gz。

插件包含:中文插件、Git插件等。

需要提前將真機(jī)素材拷貝到Jenkins虛擬機(jī)。

警告:cp拷貝時(shí)需要-p選項(xiàng)保留權(quán)限!!!

[root@jenkins ~]# tar -xf  jenkins_plugins.tar.gz
[root@jenkins ~]# cp -rp jenkins_plugins/* /var/lib/jenkins/plugins/
[root@jenkins](mailto:root@jenkins) ~]# systemctl restart jenkins

重新登錄Jenkins網(wǎng)頁(yè)控制臺(tái),如圖-26所示。

image

圖-26

再次查看插件列表,效果如圖-27、圖-28所示。

image

圖-27

image

圖-28

3)調(diào)整系統(tǒng)設(shè)置,配置郵箱,效果如圖-29、圖-30所示。

image

圖-29

image

圖-30

附加思維導(dǎo)圖,如圖-31所示。

image

圖-31

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容