DevOps简单教程应用
文章目录
- 概念
- 一、环境准备
- 二、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/opensoftrepos
autostart=true
autorestart=true
stdout_logfile=/var/log/opensoft/app.log
stderr_logfile=/var/log/opensoft/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 就在目标服务器上- cp -r frontend/dist/* /var/www/project/frontend/- cp -r backend/* /var/www/project/backend/# 直接执行 supervisorctl 命令- supervisorctl restart opensoftrepos
以上文件需要放到项目根目录下,这个时候随便修改文件,进行提交,就会在gitlab界面上看到正在执行的任务,如下所示,能够看到已经执行成功了
注意:如果yml文件里有拷贝等操作,需要把gitlab-runner添加到和root一样的权限,在服务器(测试机器)上
sudo visudo
# 添加如下内容
gitlab-runner ALL=(ALL) NOPASSWD: ALL