文章目錄
- 概念
- 一、環境準備
- 二、gitlab配置
- 三、.gitlab-ci.yml文件配置
概念
Devops是一個概念,就是邊開發邊測試,能夠大大提升開發效率,本文使用pycharm+gitlab實現一個簡單的DevOps流程
一、環境準備
需要一個測試環境,模擬部署,測試環境需要安裝相關依賴包
測試環境是centos7
本項目是后端fastapi+前端vue2
1、項目采用supervisor進行管理,安裝supervisor
yum install supervisor
# 使用supervisorctl進行進程管理
# 1、修改默認配置
vim /etc/supervisord.conf
# 在最后一行加上,表示此目錄下進行配置相關進程的conf文件
[include]
files = /etc/supervisor/conf.d/*.conf
# 2、增加配置文件,管理相關進程
vim /etc/supervisor/conf.d/
[program:openAdmin]
command=/usr/bin/python3 /var/www/open_admin/backend/main.py run
priority=4
directory=/var/www/open_admin/backend
autostart=true
autorestart=true
stdout_logfile=/var/log/open_admin/app.log
stderr_logfile=/var/log/open_admin/error.log
supervisorctl啟動管理進程相關命令
# 啟動進程openAdmin,也就是配置文件里面寫的[program:openAdmin]
supervisorctl start openAdmin
# 重啟進程
supervisorctl restart openAdmin
# 停止進程
supervisorctl stop openAdmin
# 更新配置文件
supervisorctl update
2、安裝py虛擬環境
cd /var/www/ && pip3.10 install virtualenv
# 創建虛擬環境
virtualenv venv
# 激活虛擬環境
source venv/bin/activate
# 安裝包
pip3 install -r requirements.txt
3、安裝前端npm環境
# 安裝npm
yum install nodejs-16.20.2
二、gitlab配置
需要配置gitlab,將服務器上的ssh密鑰拷貝到gitlab項目配置中
1、服務器生成密鑰
ssh-keygen -t rsa -b 4096 -C "gitlab-deploy"
# 切換到/root/.ssh/
cd /root/.ssh/
# 拷貝id_rsa文件內容
cat id_rsa
2、gitlab配置
在settings>CI/DI>Variables下
將拷貝的id_rsa內容復制到這里
復制id_rsa.pub內容,粘貼到user settings下的ssh keys中,設置項目允許ssh拉取
3、安裝gitlab-runner
安裝gitlab-runner,讓其運行.gitlab-ci.yml,gitlab-runner可以安裝到服務器(測試機上),也可以安裝到gitlab服務器上,這里建議安裝到服務器(測試機),這樣方便,直接選擇本地shell運行即可
# 開始安裝
curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
# 修改執行權限
chmod +x /usr/local/bin/gitlab-runner
# 添加用戶,shell腳本是用gitlab-runner執行的
useradd --comment 'Gitlab Runner' --create-home gitlab-runner --shell /bin/bash
# 啟動安裝
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
# 啟動runner服務
gitlab-runner start
4、注冊gitlab-runner
先進行注冊
# 注冊服務
gitlab-runner register
出現如下內容
需要填url和token,去gitlab項目下,找到CI/DI>Runners
找到Specific Runners
2對應的就是url,粘貼到剛才彈出的地方,回車,會繼續讓你輸入token,復制3,繼續回車,繼續填description、tags、optional,當出現Enter an executor的時候,選擇shell,因為這樣直接在本機運行,gitlab-runner是在服務器本機上注冊的,所以可以選擇shell本機運行
出現以上內容代表注冊成功,gitlab界面也會有如下顯示
三、.gitlab-ci.yml文件配置
配置文件如下
stages:- build- deploy
# 防止淺克隆導致問題
variables:GIT_DEPTH: 0# 打包前端
build_vue:stage: buildtags:- shell # 指定使用 shell runnerbefore_script:# 確保 Node.js 已安裝在 runner 機器上# 因為是centos7,安裝某些包的時候缺少依賴環境,這里單獨導出設置下,以便于打包- export LD_LIBRARY_PATH=/usr/local/gcc-10.1.0/lib64:$LD_LIBRARY_PATH- node --version- npm --versionscript:- cd frontend- npm install- npm run buildartifacts:paths:- frontend/distexpire_in: 1 hour# 部署到服務器
deploy_server:stage: deployonly:- maindependencies:- build_vuetags:- shell # 指定使用 shell runnerscript:- echo "Deploying to production server..."# 直接使用本地文件復制,因為 runner 就在目標服務器上,切換sudo運行- sudo cp -r frontend/dist/* /var/www/project/frontend/- sudo cp -r backend/* /var/www/project/backend/# 直接執行 supervisorctl 命令- sudo supervisorctl restart openAdmin
以上文件需要放到項目根目錄下,這個時候隨便修改文件,進行提交,就會在gitlab界面上看到正在執行的任務,如下所示,能夠看到已經執行成功了
注意:如果yml文件里有拷貝等操作,需要把gitlab-runner添加到和root一樣的權限,在服務器(測試機器)上
sudo visudo
# 添加如下內容
gitlab-runner ALL=(ALL) NOPASSWD: ALL