GitLab是基于Web的版本控制服务器
Jenkins是CI/CD工具
Gitlab概述
是一个开源的 可以实现一个自托管的Git项目仓库 可以通过web界面进行访问 公开或者私人项目
我这里的部署方式是容器方式部署
redhat8.2
前期准备关闭selinux
关闭防火墙
改sshd的默认端口 (防止端口冲突)
因为Gitlab需要基于ssh协议访问 ,Gitlab需要22端口
文件在/etc/ssh/sshd_config 找到port改为2022
环境准备
安装podman容器
dnf -y install podman
podman load < gitlab_zh.tar # 这里需要自己找容器包
mkdir -p /srv/gitlab/{config,logs,data} #创建用于保存容器数据的目录主要用于数据存储
podman run -d -h gitlab --name gitlab -p 443:443 -p 80:80 -p 22:22 --restart always -v /srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /srv/gitlab/data:/var/opt/gitlab gitlab_zh
打开网页进入网站
通过web界面去创建用户 创建群组 创建项目
git clone http://192.168.4.20/devops/myproject.git #会生成一个myproject的目录 与仓库名
cd myproject
推送数据
git push
git remote -v 查看远程仓库的链接标记名
originhttp://gitlab/devops/myproject.git (fetch)
originhttp://gitlab/devops/myproject.git (push)
我们添加文件 提交文件之后需要去推送数据
git push -u origin master
-u 设置pull/status的上游 upstream
第一次需要指定 第二次直接git push就可以 因为在.git/config有了配置
其他用户只要直接pull就可以获取到其他程序员push上传的最新文件
SSH免密获取
生成密钥
ssh-keygen #一路回车
保存密钥到服务器
cat ~/.ssh/id_rsa.pub
把你看到的复制到gitlab 的web端的右上角 点击头像 点击设置 左边有ssh密钥粘贴进去点击增加密钥
查看仓库信息,当前是http方式
git remote -v
origin http://192.168.4.20/devops/myproject.git (fetch)
origin http://192.168.4.20/devops/myproject.git (push)
删除http的路径
git remote remove origin
添加ssh路径
git remote add origin git@192.168.4.20:devops/myproject.git #这里的原本是gitlab 如果有解析就不用改没有就像我一样改为ip地址
查看修改后的路径
git remote -v
origin git@192.168.4.20:devops/myproject.git (fetch)
origin git@192.168.4.20:devops/myproject.git (push)
此时就没有显示的http
推送测试
echo "this is test01" > 1.txt
[root@develop myweb]# ls
1.txt
[root@develop myweb]# git add .
[root@develop myweb]# git commit -m "add 1.txt"
[master(根提交) f9efd48] add 1.txt
1 file changed, 1 insertion(+)
create mode 100644 1.txt
[root@develop myweb]# git push
枚举对象: 3, 完成.
对象计数中: 100% (3/3), 完成.
写入对象中: 100% (3/3), 212 bytes | 212.00 KiB/s, 完成.
Total 3 (delta 0), reused 0 (delta 0)
To gitlab:devops/myweb.git
此时就没有输入密码就可以同步
CI/CD--------就是一个流程图
CI持续集成:
开发人员的自动化流程。成功的CI意味着应用代码的新更改会定期构建、测试并合成到共享存储库中
CD持续交付
通常指开发人员对应用的更改会自动进行错误测试并上传到存储库(如gitlab或容器注册表),然后由运维团队将其部署到实时生产环境中
目的就是确保尽可能减少部署新代码时所需要的工作量
CI/CD减少人为干预
一个完整的流程图
plan --->code--->build(打包项目)--->test--->release(封版)git tag--->deploy(发布)--->operate(运维)--->monitor--->plan
应用上传的流程
- 程序员将代码上传到gitlab
- 云计算工程师通过jenkins服务器自动下载gitlab上的代码
- 云计算工程师写一些计划任务的脚本之类的,用于自动部署到服务器
Jenkins
由Java编写
主要功能监视重复性工作
特点
SCM(软件配置管理) 简单 可扩展 用户界面友好 构建各种风格的项目 可以选择各种
安装
yum install -y git postfix mailx java-11-openjdk
git(jenkins需要连接Gitlab下载代表)
postfix(可以发送邮件)
java jdk(jenkins是java语言开发的软件)
yum install -y jenkins-2.263.1-1.1.noarch.rpm
systemctl restart jenkins 并且开机自启了
随后访问主机的8080端口就可访问到了
jenkins的插件目录
/var/lib/jenkins/plugins/
systemctl restart jenkins
你需要知道
1 podman从本地文件加载镜像的命令是什么?
podman load < xxx.tar
2 Podman实现端口映射和目录映射的选项是什么?
-p -v
3 如何给git代码仓库创建版本标签?
git tag 标记名
4 什么是CI/CD?
是一个工作流程
持续集成:意味着应用代码的新更改会定期构建、测试并合并到共享存储库中
持续交付 : 常是指开发人员对应用的更改会自动进行错误测试并上传到存储库(如 GitLab 或容器注册表),然后由运维团队将其部署到实时生产环境中。