開篇語
大概是去年就想做這個事情了,奈何當時卡到一個docker命令找不到的問題上,導致文章難產了,墨跡了這么久,終于又有空來搗鼓它了。
目的
我們要實現的目的是我本地不斷提交代碼(CI),然后服務器不斷進行部署(CD)的一個簡單流程。
準備
在進行簡單的gtlab的ci/cd之前,我們需要安裝gitlab軟件,這個可以看之前的文章。
本文環境:
服務器A:使用docker部署了gitlab
服務器B:已經安裝了docker、注冊了gitlab-runner用來部署服務
在centos一鍵安裝docker以及docker-compose的腳本
#!/bin/bashecho?-e?"\033[33m?install?docker?sh?\033[0m"#?設置yum源
echo?-e?"\033[33m?Set?the?yum?source?\033[0m"
sudo?yum?-y?install?yum-utils
sudo?yum-config-manager?--add-repo?http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#yum包更新到最新
echo?-e?"\033[33m?update?version?\033[0m"
sudo?yum?update?-y#安裝Docker最新版
echo?-e?"\033[33m?install?docker-ce?\033[0m"
sudo?yum?install?docker-ce?-y#設置Docker自啟動
echo?-e?"\033[33m?setting?self-turn-on?\033[0m"
sudo?systemctl?enable??docker#啟動Docker
echo?-e?"\033[33m?start?docker?\033[0m"
sudo?systemctl?start?docker#配置國內鏡像?/etc/docker/daemon.json
echo?-e?"\033[33m?Set?up?aliyuncs?mirror?\033[0m"
sudo?tee?/etc/docker/daemon.json?<<-'EOF'
{"registry-mirrors":?["https://docker.mirrors.ustc.edu.cn"]
}
EOF
#加載配置文件,ReStart
sudo?systemctl?daemon-reload
sudo?systemctl?restart?docker#安裝docker-compose,最新版本需要手動查詢一下
echo?-e?"\033[33m?install?docker-compose?\033[0m"
sudo?curl?-L?https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname?-s`-`uname?-m`?-o?/usr/local/bin/docker-compose
sudo?chmod?+x?/usr/local/bin/docker-compose
部署gitlab的yaml腳本
version:?'3'services:gitlab:?#gitlabimage:?gitlab/gitlab-cecontainer_name:?'gitlab'restart:?alwaysenvironment:GITLAB_OMNIBUS_CONFIG:?|external_url?"http://172.18.231.92:9006"?#?web站點訪問地址gitlab_rails['gitlab_shell_ssh_port']?=?9022?#?設置shell?端口gitlab_rails['time_zone']?=?'Asia/Shanghai'?#?設置時區#?gitlab_rails['smtp_enable']?=?true#?gitlab_rails['smtp_address']?=?"smtp.exmail.qq.com"#?gitlab_rails['smtp_port']?=?465#?gitlab_rails['smtp_user_name']?=?"<your?qq?email>"#?gitlab_rails['smtp_password']?=?"xCcqh*L4jkqFCS"#?gitlab_rails['smtp_authentication']?=?"login"#?gitlab_rails['smtp_enable_starttls_auto']?=?true#?gitlab_rails['smtp_tls']?=?true#?gitlab_rails['gitlab_email_from']?=?'<your?qq?email>'#?gitlab_rails['smtp_domain']?=?"exmail.qq.com"ports:-?'9006:9006'-?'443:443'-?'9022:22'volumes:-?'/gitlab/config:/etc/gitlab'
安裝gitlab-runner
在要部署服務的服務器上安裝docker以及gitlab-runner,本次安裝直接安裝在服務器中,不使用docker安裝gitlab-runner,避免產生Dind(docker in docker)問題。
首先導入repository
curl?-L?https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh?|?sudo?bash

安裝
yum?install?gitlab-runner?-y

注冊到gitlab
注冊群組Runner
首先我們要獲取注冊時候需要的信息,獲取地址在 http://172.18.231.92:9006/admin/runners
輸入命令進行注冊
gitlab-runner?register

選擇執行者,這里我使用shell
執行者參考:https://docs.gitlab.com/runner/executors/index.html
到這里已經注冊成功了,就可以在gitlab中看到注冊的runner了

為倉庫設置單獨的Runner
使用該方案應該先看下一步去創建項目
在我們要部署的倉庫里面找到Runner配置信息(設置=>CI/CD)

然后重復上面注冊的過程,詳細步驟如圖

然后就可以在倉庫的配置下可以看到我們注冊的東西

配置帳號
添加gitlab-runner用戶
sudo?adduser?gitlab-runner
將該用戶添加到docker組中
sudo?gpasswd?-a?gitlab-runner?docker
查看docker組是否已經添加用戶成功
cat?/etc/group?|grep?docker
驗證是否可以通過gitlab-runner訪問docker
sudo?-u?gitlab-runner?-H?docker?info
重啟docker容器服務
sudo?systemctl?restart?docker
給docker.sock設置權限
sudo?chmod?a+rw?/var/run/docker.sock

創建項目
直接開始創建項目

拉取項目并填充內容

拷貝一個簡單項目(https://gitee.com/AZRNG/my-example)提交到gitlab上

配置流水線
在項目的根目錄下創建文件名為.gitlab-ci.yml的文件,用于進行打包部署。
#?.gitlab-ci.ymlstages:-?deploydeploy:stage:?deployscript:-?docker?-v-?cd?NetByDocker-?docker?build?-f?Dockerfile?-t?gitlabnetsample?../?-?docker?rm?-f?gitlabnetsample?&&??docker?run?--name?gitlabnetsample?-d?-p?8060:80?gitlabnetsample?#?remove?old,create?new?-?docker?ps?-atags:?-?net
提交推送代碼,然后在gitlab的CI/CD=>Pipeliners查看

查看詳細信息

部署成功,進入該服務器查看容器信息

通過外部訪問服務:http://172.18.229.206:8060/swagger/index.html 成功顯示swagger界面,部署成功。
參考文檔
https://blog.csdn.net/qq_42799562/article/details/118179856