1、安裝和配置必須的依賴
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 firewall-cmd --permanent --add-service=http sudo systemctl reload firewalld
2、去清華大學鏡像站下載gitlab的rpm安裝包
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ yum install -y policycoreutils-python rpm -i gitlab-ce-11.0.0-ce.0.el7.x86_64.rpm
如圖表示安裝成功
3、修改gitlab配置文件指定服務器ip和自定義端口
vim /etc/gitlab/gitlab.rb
firewall-cmd --zone=public --add-port=8088/tcp --permanent
ps:注意這里設置的端口不能被占用,默認是8080端口,如果8080已經使用,請自定義其它端口,並在防火牆設置開放相對應得端口
4.重置並啟動GitLab
gitlab-ctl reconfigure
gitlab-ctl restart(可省略)
瀏覽器訪問http://192.168.6.139:8088
首次登陸,需要設置root的密碼
登陸后新建組和項目
安裝客戶端gitlab-ci-multi-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
刷新項目,查看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/$1/$2/$3" if [ ! -d "$deploy_path" ] then git clone "git@192.168.6.139:${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"
source /etc/profile
給gitlab-runner用戶創建文件權限
chown -hR gitlab-runner:gitlab-runner /data/wwwroot
配置ssh登錄
su gitlab-runner mkdir ~/.ssh cd ~/.ssh ssh-keygen
然后一直按enter
查看id_rsa.pub文件 並復制 ssh key
創建一個gitlab-runner用戶,並將該用戶添加到項目成員中(賦予該成員maintainer角色)
在gitlab上,登錄gitlab-runner
將剛剛復制的ssh key設置到gitlab-runner用戶的ssh-keys上
創建文件 .gitlab-ci.yml 和test.txt ,前者用於CI/CD解析,后者用於觸發CI/CD
yml 內容如下
stages: - deploy deploy1: stage: deploy tags: - test-runner-1 only: - master script: - bash deploy java test-project master
修改test.txt文件,查看ci/cd 功能是否觸發
此時任務可能會報以下錯誤
root身份下 執行以下命令
source /etc/profile
ln -s /home/gitlab-runner/.local/bin/deploy /usr/bin/deploy
切換
su gitlab-runner deploy java test-project master
根據提示 填入yes 就可以了
至此就完成了ci的功能
將tomcat和jdk都放到wwwroot目錄下,並給gitlab-runner賦予權限
修改配置文件
vim /etc/profile
在文件末尾加上
export JAVA_HOME=/data/wwwroot/jdk export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export TOMCAT=/data/wwwroot/tomcat export PATH=$TOMCAT/bin:$PATH
修改.gitlab.yml配置為
stages:
- deploy - build - ops deploy_job: stage: deploy tags: - test-project only: - master script: - bash deploy java taozugong-service master build_job: stage: build tags: - test-project only: - master script: - source /etc/profile - cd /data/wwwroot/java/taozugong-service/master - /data/wwwroot/maven/bin/mvn clean package -Dmaven.test.skip=true ops_job: stage: ops tags: - test-project only: - master script: - rm -f /data/wwwroot/tomcat/webapps/taozugong.war - cp /data/wwwroot/java/taozugong-service/master/taozugong-service/target/taozugong.war /data/wwwroot/tomcat/webapps/taozugong.war - rm -f /data/wwwroot/tomcat/webapps/admin.war - cp /data/wwwroot/java/taozugong-service/master/taozugong-admin/target/admin.war /data/wwwroot/tomcat/webapps/admin.war
建議先修改maven源地址阿里雲Aliyun倉庫地址及設置
至此完成
還需要解決一下gitlab綁定的nginx與自己安裝的nginx的沖突
# 復制一份 gitlib 下的 nginx
mv /opt/gitlab/embedded/sbin/nginx /opt/gitlab/embedded/sbin/nginx2 # 修改啟動腳本 vi /opt/gitlab/sv/nginx/run
exec chpst -P /opt/gitlab/embedded/sbin/nginx -p /var/opt/gitlab/nginx # 改為 exec chpst -P /opt/gitlab/embedded/sbin/nginx2 -p /var/opt/gitlab/nginx
其實就是修改了 gitlab 的 nginx 進程名來防止沖突。
最后 reboot
即可。