1. 程式人生 > >centos7下使用gitlab+shell實現CI/CD持續集成持續部署

centos7下使用gitlab+shell實現CI/CD持續集成持續部署

argument shel tro 項目 rman lob b+ pull 部署過程

                  centos7下使用gitlab+shell實現CI/CD持續集成持續部署

技術分享圖片

流程解釋:第一步ci客戶端向gitlab服務器註冊自己,建立通信,第二步,當項目分支代碼收到變化時,自動觸發yml腳本,yml腳本根據註冊時帶入的runner通知客戶端deploy腳本更新代碼,同時執行編譯和部署過程,deploy腳本寫代碼集成相關操作,具體見下面的講解

CI部分

第一步:準備三臺虛擬機S,C1,C2,我這裏的三臺機子都是全新的,除了系統文件沒有其他文件

S:內存是4G用於裝gitlab服務器 IP:192.168.95.131

C1:內存是1G用於裝gitlab-CI

客戶端1 IP:192.168.95.132

C2:內存是1G用於裝gitlab-CI客戶端2 IP:192.168.95.133

第二步:S上安裝gitlab服務器

安裝依賴

sudo yum install curl policycoreutils openssh-server openssh-clients

sudo systemctl enable sshd

sudo systemctl start sshd

sudo yum install postfix

sudo systemctl enable postfix

sudo systemctl start postfix

sudo systemctl start firewalld

sudo firewall-cmd --permanent --add-service=http

sudo systemctl reload firewalld

windows下載安裝包,下載地址是:

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm

並且上傳至linux目錄下 如/data/web-download

cd /data/web-download

安裝python依賴 -y的意思是所有問答都使用Y

yum install -y policycoreutils-python

安裝 這裏安裝需要花一點時間,耐心等待一下

rpm -i gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm

出現了這個圖案,代表安裝完成

技術分享圖片

安裝 vim

yum install -y vim

更換端口(這裏寫ip地址或者域名都可以,但是不能寫localhost)

vim /etc/gitlab/gitlab.rb

技術分享圖片

啟動

gitlab-ctl reconfigure (這裏可能需要一點時間)

重啟:

gitlab-ctl restart(這裏也會可能需要一點時間,不是必須項)

直接ip或者域名 +端口訪問,如果訪問不了,關閉防火墻或者防火墻開放端口

查看防火墻狀態

systemctl status firewalld

關閉防火墻

systemctl stop firewalld

再次訪問 即可,第一次登陸需要重新設置密碼

技術分享圖片

新建組,新建項目

技術分享圖片

技術分享圖片

到這裏服務器已經創建好了,項目也創建好了

第二步:C1上安裝 gitlab-ci客戶端

安裝 vim

yum install -y vim

安裝runner

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash

如果出現嘗試其他鏡像提示 可以ctrl+c 終止掉進程,然後更改鏡像地址

vim /etc/yum.repos.d/runner_gitlab-ci-multi-runner.repo

將一下內容替換runner_gitlab-ci-multi-runner.repo原有的內容

[gitlab-ci-multi-runner]

name=gitlab-ci-multi-runner

baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ci-multi-runner/yum/el7

repo_gpgcheck=0

gpgcheck=0

enabled=1

gpgkey=https://packages.gitlab.com/gpg.key

執行 yum install -y gitlab-ci-multi-runner 即可

註冊runner

gitlab-ci-multi-runner register

技術分享圖片

其中 urlgitlab 服務器的地址

token是上面新建的項目token

技術分享圖片

配置好後 刷新一下項目的runners,可以找到我們剛剛註冊的runner,並且狀態是綠色的

技術分享圖片

如果不是綠色的 重啟runner即可

查看runner狀態

gitlab-ci-multi-runner verify

重啟所有runner
gitlab-ci-multi-runner run

重啟單個runner
gitlab-ci-multi-runner run-single --url http://IP:port/ --token runnerToken --executor shell

編寫 deploy文件

gitlab-runner~/.local/bin/目錄下新建deploy文件

su gitlab-runner

mkdir ~/.local/bin -p

cd ~/.local/bin

vim deploy

復制以下內容到deploy文件

#!/bin/bash

if [ $# -ne 3 ]

then

echo "arguments error!"

exit 1

else

deploy_path="/data/wwwroot/$3/$1/$2"

if [ ! -d "$deploy_path" ]

then

git clone "[email protected]:${1}/${2}.git" $deploy_path

cd $deploy_path

git checkout $3

else

cd $deploy_path

git pull

fi

fi

以上腳本的意思是如果參數不是三個,打印參數錯誤

如果目錄沒建立 git clone 並且git checkout

如果存在 git clone

添加腳本執行權限

chmod +x ~/.local/bin/deploy

切換到root身份 編輯/etc/profile文件 最末尾添加加入 path路徑

PATH="$HOME/.local/bin:$PATH"

給gitlab-runner用戶創建文件權限

chown -hR gitlab-runner:gitlab-runner /data/wwwroot

配置ssh登錄

su gitlab-runner

mkdir ~/.ssh

cd ~/.ssh

ssh-keygen

然後一直按enter

查看id_rsa.pub文件 並復制 token

創建一個runner-1用戶,並將該用戶添加到項目成員中(賦予該成員maintainer角色)

gitlab上,登錄runner-1

將剛剛復制的token設置到runner-1用戶的ssh-keys

創建文件 .gitlab-ci.yml test.txt ,前者用於CI解析,後者用於觸發CI

技術分享圖片

yml 內容如下

stages:

- deploy

deploy1:

stage: deploy

tags:

- test-runner-1

only:

- master

script:

- bash deploy java test-project master

修改test.txt文件,查看CI 功能是否觸發

此時任務可能會報以下錯誤

技術分享圖片

gitlab-runner身份下 執行以下命令

/etc/profile

deploy java test-project master

第一次訪問這個服務器的時候,有個命令行提示是要把sign添加進已知服務器列表,然後手工輸入個yes

同樣的,在C2上做C1基本一致的的操作(除了基本配置一致,修改一下yml),這裏不再一步一步的演示,至於單機版,就是講CI客戶端和gitlab服務端裝在同一服務器上,操作基本一致,這裏也不再贅述

修改yml 文件(這裏是指定兩個runner並行部署) 其他均一致

技術分享圖片

自行查看c1,cd服務器文件是否都成功修改?如果都修改了,代表CI功能實現

CD部分

c1,c2服務器上安裝好jdk,maven,tomcat,mysql,具體可見文章:https://www.cnblogs.com/tjqBlog/p/9573459.html

將一個常規的基於maven的spring web項目上傳到gitlab服務器上,(我這裏采用spring boot+mybatis的項目),

修改yam文件如下,

增加編譯和部署生命周期

技術分享圖片

設置編譯生命周期目標

技術分享圖片

設置部署生命周期目標

技術分享圖片

提交修改,查看CI/CD運行軌跡,所有目標均為綠色代表CI/CD功能成功實現,

技術分享圖片

這裏的每種周期運行詳情都可以點擊進入查看,以下分別截圖 deploy,build,ops,三個周期的詳情

技術分享圖片

技術分享圖片

技術分享圖片

centos7下使用gitlab+shell實現CI/CD持續集成持續部署