一、搭建环境
1、安装git, 注意默认安装的 Git 是 1.8.3.1 版本的,需要升级到2.*版本
// 首先,把老版本的 Git 卸掉。
sudo yum -y remove git
sudo yum -y remove git-*
//添加 End Point 到 CentOS 7 仓库
sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
//安装 Git
sudo yum -y install git
//查看安装后的 Git 版本
git version
2、安装与配置gitliab-runner
2.1 安装gitlab-runner
//下载二进制文件
sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64"
//给文件操作权限
sudo chmod +x /usr/local/bin/gitlab-runner
//安装以及运行gitlab runner
sudo gitlab-runner install --user=root --working-directory=/home/gitlab-runner
sudo gitlab-runner start
//注意:working-directory是默认在/usr/local下创建的,是用来放gitlab runner执行任务时产生的文件,涉及到文件读写,有操作权限问题,所以working-directory换成了home下面的目录,不需要权限,这样可以解决运行gitlab runner执行job的权限问题
2.2 注册gitlab-runner
-
输入GitLab instance URL(url和token都在gitlab的配置页面提供的)
-
输入 token
-
输入runner的描述,有时候你的gitlab项目可能有多个runner,你需要靠这个描述来区分不同的runner
-
输入tags,用英文逗号间隔
-
输入runner的执行工具,建议选的 shell
二、部署java后端项目,项目是用java -jar发布的
1、配置jdk环境
-
下载jdk(建议使用open jdk),注意要和项目编译与运行环境版本一致,比如都采用11.
-
拷贝到服务器一目录文件下,配置系统环境变量,通过修改/etc/profile文件来配置JAVA_HOME,要执行 source /etc/profile 来生效配置
-
输入java -version 检查jdk配置是否正确
2、配置maven环境
-
下载maven包,拷贝到一目录上,配置系统环境变量,通过修改/etc/profile文件来配置MAVEN_HOME,要执行 source /etc/profile 来生效配置
-
输入mvn -v检查maven配置是否正确
3、在项目根目录下新增.gitlab-ci.yml文件,编写cicd脚本,注意命令采用shell操作命令
stages:
- build
- deploy
build-prod:
stage: build
script:
- echo mvn clean package -DskipTests
- mvn clean package -DskipTests
artifacts:
paths:
- 'target/*.jar'
expire_in: 1 day
tags:
- 192.168.100.100
only:
- main
deploy-prod:
stage: deploy
before_script:
- echo stop ideng-backend
- ps -ef|grep ideng|gawk '$0 !~/grep/ {print $2}' | xargs kill -9
- echo remove backup file /home/web/bak/ideng.jar
- rm -rf /home/web/bak/ideng.jar
- echo backup file from "/home/web/ideng.jar" to "/home/web/bak/ideng.jar"
- mv /home/web/ideng.jar /home/web/bak/ideng.jar
script:
- echo cp target/*.jar /home/web/ideng.jar
- cp target/*.jar /home/web/ideng.jar
- echo start ideng-backend
- nohup java -Xms512m -Xmx2g -jar /home/web/ideng.jar --spring.profiles.active=prod >/home/logs/ideng.log 2>&1 &
tags:
- 192.168.100.100
only:
- main
when: manual
三、部署VUE前端项目,项目是用nginx发布的
1、配置nodejs环境
-
下载nodejs,注意要和项目编译与运行环境版本一致
-
拷贝到服务器一目录文件下,配置系统环境变量,通过修改/etc/profile文件来配置NODE_HOME,要执行 source /etc/profile 来生效配置
-
输入node -v 检查nodejs配置是否正确
2、配置nginx config
为了实现多环境(开发、测试、正式)自动化部署,前端访问后端接口需要能自动识别访问各自对应的环境,因此采用nginx来实现前后端请求跳转配置,即在对应环境服务器上的nginx配置上相应的后端跳转地址,如下是测试库的配置
server {
listen 80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
root /home/web/ideng/;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_pass http://192.168.100.200:8080/api;
}
}
注意:要实现此方式,需要统一前后端API调用路径,便于nginx识别与跳转,如下
export const findAllRoleApi = () => service.get("/api/v1/pri/role/all")
export const saveRoleApi = (params) => service.post("/api/v1/pri/role/save", params)
3、在项目根目录下新增.gitlab-ci.yml文件,编写cicd脚本,注意命令采用shell操作命令
stages:
- deploy
build_prod:
stage: deploy
before_script:
- npm i --save
- npm run build
script:
- echo rm /home/web/ideng/*
- rm -rf /home/web/ideng/*
- echo copy to /home/web/ideng
- cp -r dist/* /home/web/ideng
tags:
- 192.168.100.100
only:
- main
when: manual