Linux环境实现gitlabCICD

一、搭建环境

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值