基于gitlab-runner的CICD实现

基于gitlab-runner的CI/CD基本实现(二)

cc项目为例*

1. 注册项目runner

在gitlab的项目内查询本项目的token,在gitlab-runner容器内使用gitlab-runner register命令完成注册。tags命名为:cc_dev

2. 编辑.gitlab-ci.yml文件,基本内容如下

## 这是cc的自动构建流水线
## 定义阶段
stages:
        - build
        - deploy
## 第一步构建新的jar包
buildjar:
        stage: build
        tags:
                - dev_cc
        script:
                - ssh root@项目服务器ip "cd /opt/cc/cc/ && git pull && sh /opt/cc/buildjar.sh;exit"
        only:
                - dev
## 运行容器                
runcontainer:
        stage: deploy
        tags:
                - cc_dev
        script:
                - ssh root@项目服务器ip "sh /opt/cc/runnercc.sh"
        only:
                - dev

3. 赋权

3.1服务器赋权

要登陆到远端服务器,需要使用gitlab-runner这个用户身份,要注意的是在docker方式运行gitlab-runner的时候,要进入容器内进行以下操作

docker exec -it gitlab-runner /bin/bash
#su - gitlab-runner
$ssh-keygen ## 生成ssh密钥
$ssh-copy-id 远端服务器用户名@远端服务器地址  ## 将公钥copy至目标服务器
3.2项目赋权

在gitlab服务器上建立用户gitlab-runner(可以自定义用户名),将此用户添加至需要CI/CD的项目内,权限不低于开发人员即可。

3.3本地git仓库的免密登录

在.git/confi内增加如下内容

[credential]
	helper = store

4. 服务器脚本示例:

buildjar.sh
#!bin/bash
time=$(date "+%Y-%m-%d %H:%M:%S") 
echo "${time}"  # 以上两行输出执行脚本时的时间
/usr/bin/docker run --rm -v /opt/cc/cc/ruoyi:/opt/ruoyi -v /etc/localtime:/etc/localtime:ro -v /opt/cc/settings.xml:/usr/share/maven/ref/settings.xml -v /opt/cc/m2:/root/.m2 -w /opt/ruoyi maven:3-openjdk-8 mvn clean package
exit 0
runnercc.sh
#!bin/bash
time=$(date "+%Y-%m-%d %H:%M:%S") 
imagedate=`date +%Y%m%d`
echo "${time}"  # 以上两行输出执行脚本时的时间
docker tag cc_docker_cc:latest cc_docker_cc:$imagedate &&  cp /opt/cc/cc/ruoyi/target/cc.jar /opt/cc_docker/cc/ && /usr/bin/docker-compose -f /opt/cc_docker/docker-compose.yml up -d  --build 
exit 0
cc_docker/docker-compose.yml
version: '2'
services:
        cc:
                build: . 
                container_name: cc
                mem_limit: 1024m
                networks:
                        nginx:
                restart: always
                volumes:
                        - /etc/localtime:/etc/localtime:ro
networks:
        nginx:
                external: true
cc_docker/Dockerfile
FROM java:8
COPY ./cc/cc.jar /opt/cc/cc.jar
WORKDIR /opt/cc
CMD ["java","-jar","-Duser.timezone=GMT+08","-Xms256m","-Xmx256m","cc.jar",">>/dev/null","&"]
EXPOSE 8181
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值