gitlab-CI实现持续集成自动发布踩坑记录

gitlab-CI实现持续集成自动发布

背景:
公司为了版本统一方便管理,舍弃jenkins,拥抱Gitlab-Ci,开始踩坑。

区别:
个人感觉,Jenkins图形化交互页面友好,Gitlab-Ci更适合敏捷开发。
一:简介
1、GitLab-CI
 GitLab-CI就是一套配合GitLab使用的持续集成系统(当然,还有其它的持续集成系统,同样可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以后的版本是默认集成了GitLab-CI并且默认启用的。
2、GitLab-Runner
 GitLab-Runner是配合GitLab-CI进行使用的。一般地,GitLab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知GitLab-CI。这时GitLab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本。

二:GitLab-Runner的安装
1:采用docker方式安装

docker run -dit \
--name gitlab-runner \
--restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest

2:执行注册Runner

docker exec -it gitlab-runner gitlab-runner register

三:配置Runner,与GItLab-cI关联起来
1:进入你的gitlab ——> settings —— > CI/CD ——> Runners
在这里插入图片描述
这里主要是记住第4 和 第5 的值

2:注册Runner

输入步骤1中,4的值。

3:输入token
在这里插入图片描述
输入步骤1中,5的值。

4:输入描述
在这里插入图片描述
暂时随便输入,可以gitlab-ci中修改

5:输入tag在这里插入图片描述
注意:如果只在加表签的build中运行,此时输入tag必须与ci.yml脚本中tag对应。

6:是否在未加标签的build中运行。
在这里插入图片描述
7:Runner-execute(重要)
在这里插入图片描述
运行平台,这里选择docker.

8:默认镜像
在这里插入图片描述

9:完成
在这里插入图片描述
10:完成之后可以在的gitlab ——> settings —— > CI/CD ——> Runners查看到刚刚关联的Runner

四:编写.gitlab-ci.yml 文件

image: xxx/maven-pk:1.1.0

before_script:
  # Run ssh-agent (inside the build environment)
  - eval $(ssh-agent -s)
  # Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
  - ssh-add <(echo "$CI_SSH_KEY")
  - mkdir -p /root/.ssh
  - '[[ -f /.dockerenv ]] && echo "$SSH_SERVER_KEY" >> /root/.ssh/known_hosts'
  - echo "$CI_SSH_KEY" > /root/.ssh/id_rsa
  - chmod 600 /root/.ssh/id_rsa && chmod 700 /root/.ssh

# 缓存服务, 如果有文件需要多个stages共用,例如jar/war包
cache:
  paths:
    - target/
# 本次构建的阶段:build package deploy
stages:
  - package
  - deploy
# 打包
package:
  stage: package
  tags:
    - test
  script:
    - source /etc/profile
    - echo "=============== 开始打包任务  ==============="
    - mvn package -Dmaven.test.skip=true
# 部署
deploy:
  stage: deploy
  tags:
    - test
  script:
    - echo "=============== 开始部署任务  ==============="
    # 测试,是否能够通过 ssh 连通远程服务器
    - ssh xxx@xxx "echo hhh"
    - scp -r /builds/* xxx@xxx:/mnt/


push代码后就可以在CI/CD ——> pipelines 中即可看到效果.

注意点:

  1. 如果只在加表签的build中运行,此时输入tag必须与ci.yml脚本中tag对应。
  2. ssh-agent管理密钥,无需输入密码访问远程服务器。
    2.1:ssh-keygen -t rsa --生成密钥对
    2.2:ssh-copy-id -i .ssh/id_rsa.pub 用户名字@192.168.x.xxx --用ssh-copy-id将公钥复制到远程机器中
    2.3:cat id_dsa --获取私钥,配置CI环境变量;在目标服务器 ssh keyscan ip 获取knowshost信息(模拟第一次登陆),配置CI环境变量;
    在这里插入图片描述
  3. 优化镜像本地仓库存在则优先使用,通过目录挂更改镜像配置
    在这里插入图片描述
 pull_policy="if-not-present"

挂载maven仓库

    volumes = ["/cache","/home/jiaokc/software/m2/.m2/repository:/root/.m2/repository:rw"]```

参考地址:(https://blog.csdn.net/junmoxi/article/details/82762413)
[参考地址]https://www.jianshu.com/p/2b43151fb92e

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值