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
参考资料
GitLab CI/CD pipeline configuration reference
Docker Gitlab CI 部署 Spring Boot 项目
spring boot项目搭建gitlab CI CD持续集成环境之CD部署到容器
gitlab+docker+maven+springboot 自动化CI/CD
centos7下使用gitlab+shell实现CI/CD持续集成持续部署
持续集成之.gitlab-ci.yml篇 - jenkins
##############################
GitLab CI/CD + Docker 实现多环境自动化部署
使用GitLab CI和Docker自动部署SpringBoot应用
基于 Jenkins、Gitlab、Harbor、Helm 和 K8S 的 CI/CD(一)
花椒前端基于 GitLab CI/CD 的自动化构建、发布实践
############# SSH 免密登录##################
SSH基础知识以及配置免密登录(gitlab-runner为例)
使用gitlab和gitlab-runner实现项目多服务器自动同步
centos7 ssh gitlab自动构建 CI/CD 免密登录
############# shell 脚本部署 ##################