GitLab CI/CD 学习记录

GitlabCI/CD 学习记录

一、安装gitlab

gitlab默认按照位置

/opt/gitlab

+、安装镜像仓库-registry

二、安装gitlab-runner

相关命令

#重启
systemctl restart gitlab-runner

#重启
gitlab-runner restart

#运行
gitlab-runner run

gitlab-runner用户 ssh 免密登录 应用部署服务器

注意:是 gitlab-runner 用户

参考如下:

配置服务器之间的ssh登录
1.本人三台服务器的ip分别是:
192.168.56.101,
192.168.56.102,
192.168.56.104
gitlab服务器的ip是:
192.168.56.103
gitlab-runner安装的服务器为102(后面用102来代替对应的服务器)
因为gitlab-runner部署的服务器是102所以要建立 gitlab-runner用户与101,102和104之间的root ssh免密码登录
为什么是gitlab-runner用户呢 因为执行同步代码的脚本是gitlab-runner用户


1.先在102服务器切换gitlab-runner用户
su gitlab-runner

2.使用ssh-keygen -t rsa生成ssh的公钥和私钥
ssh-keygen -t rsa #回车之后3次回车即可


你就会在 /home/gitlab-runner/.ssh目录下发现2个文件
id_rsa.pub 和id_rsa


3.然后再切换到root用户,重复上述操作,这样 root用户的ssh的公钥和私钥也生成了,接下来就是将gitlab-runner用户的公钥写入root用户的authorized_keys文件中
cat /home/gitlab-runner/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys

4.重启ssh service ssh restart
5.先切换到gitlab-runner用户 su gitlab-runnner
6.使用ssh登录root用户 ssh root@192.168.56.102
你会发现你已经切换到了root用户了
7.101和104的服务器的root的ssh同理,只需要将102服务器的中/home/gitlab-runner/.ssh/id_rsa.pub的内容分别写入 101和104/root/.ssh/authorized_keys中即可
重启101和104服务器的ssh服务service ssh restart
然后就可以使用102的gitlab用户

ssh root@192.168.56.104
ssh root@192.168.56.101

注意 第一次连接会提示yes/no, 输入yes即可

三、注册runner

四、编写DockerFile文件

五、编写.gitlab-ci.yml 文件

1、build

2、package

3、deploy

六、提交代码更改触发CI/CD流程

七、基于docker部署的具体步骤

1、构建一个jar文件

2、构建Docker镜像并推送Docker镜像到 Docker 镜像仓库中

3、SSH到我们的应用程序服务器并运行一些Docker命令,最终运行最新版本的Docker镜像

  a、停止正在运行的Docker容器;
  b、删除所有未运行的Docker镜像;非强制
  c、拉取最新版本的Docker镜像(该镜像是在上一个阶段中构建并推送的)。
  d、运行最新版本Docker镜像:

八、gitlab-runner打包

1、默认打包位置

gitlab-runner安装目录/具体的runner目录/0/gitlab源码分组名称/项目名称/target/xxxxxx.jar

 /home/gitlab-runner/yybiTczd/0/avengers/demo-hello/target/demo-hello-0.0.1-SNAPSHOT.jar

job执行结果

操作系统目录

九、其他

CICD流程中概念

一次提交触发一次CI&CD即执行一次脚本对应一个pipeline;一个pipeline对应stages下的所有job;一个stage对应一个job;
一个job可以允许失败,比如我们的例子中,每次清除就得docker容器的时候可能失败,因为新机器上没有对应的容器或者其他一些不影响主流程的操作可以添加容错配置。

.gitlab-ci.yml 配置项说明

十、问题

1、gitlab runner 权限问题

#卸载runner配置
sudo gitlab-runner uninstall

#以root用户重装runner配置,--user 要配置的用户
#建议:新建用户,付用户相应的权限,例如docker,k8s集群操作权限.....
gitlab-runner install --working-directory /home/gitlab-runner --user root

#最后重启
sudo service gitlab-runner restart

参考资料

正确使用 Docker 搭建 GitLab 只要半分钟

Docker搭建自己的Gitlab CI Runner

GitLab CI/CD pipeline configuration reference

使用GitLab CI/CD进行自动测试和部署

gitlab中CI/CD自动化部署使用

Docker Gitlab CI 部署 Spring Boot 项目

spring boot项目搭建gitlab CI CD持续集成环境之CD部署到容器

gitlab+docker+maven+springboot 自动化CI/CD

centos7下使用gitlab+shell实现CI/CD持续集成持续部署

sshpass使用

持续集成之.gitlab-ci.yml篇 - jenkins

docker-compose 安装及异常处理

gitlab runner 权限问题

gitlab-runner容器内解决容器部署权限不足

##############################

Gitlab CI&CD 实战经验分享 - 滴滴云

GitLab CI/CD 自动部署构建

GitLab CI/CD + Docker 实现多环境自动化部署

使用GitLab CI和Docker自动部署SpringBoot应用

基于gitlab和jenkins的自动化部署实例

基于 Jenkins、Gitlab、Harbor、Helm 和 K8S 的 CI/CD(一)

花椒前端基于 GitLab CI/CD 的自动化构建、发布实践

############# SSH 免密登录##################

Linux密钥登录原理和ssh使用密钥实现免密码登陆

SSH基础知识以及配置免密登录(gitlab-runner为例)

使用gitlab和gitlab-runner实现项目多服务器自动同步

centos7 ssh gitlab自动构建 CI/CD 免密登录

GitLab CI/CD自动化部署(持续集成)

gitlab gitlab-runner持续集成

如何利用Gitlab-CI持续部署到远程机器?

############# shell 脚本部署 ##################

GitLab CI/CD +Shell脚本实现简单的自动代码部署+重新启动dotnet 服务

原文地址:https://www.cnblogs.com/wangwangfei/p/13365778.html