一、gitlab:(使用主机ip:10.6.12.135)
页面版的git仓库,为了方便,使用docker部署。
安装与部署:
1、首先需要将真机的ssh服务的22端口修改成其他的端口(这里改为2222)
gitlab的docker要与真机的22端口进行绑定,方便使用ssh的方式下载上传
vim /etc/ssh/sshd_config
port 2222
systemctl restart sshd
2、下载对应的gitlab容器
docker search gitlab-ce-zh
docker pull docker.io/twang2218/gitlab-ce-zh #汉化版
3、启动gitlab容器
docker run -d -h gitlib --name gitlib -p 443:443 -p 8000:80 -p22:22 --restart always -v /srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /srv/gitlab/data:/var/opt/gitlab docker.io/twang2218/gitlab-ce-zh
# -v表示目录映射,实现了数据持久化
# -p端口映射,将docker的端口和主机的端口映射
应用:
1、浏览器输入主机ip:10.6.12.135:8000
第一次登陆需要修改密码,用户名是root
2、gitlab中重要概念:
群组group:对应一个开发团队
项目:对应一个软件项目
成员用户member:对应用的账户,可以将用户加入到组或者项目中去
3、使用:
创建一个名为sda的组,类型为公开
使用管理员,创建一个名为jason的用户,创建的时候不能设置密码
创建完毕之后修改用户信息可以修改密码
创建一个名为mypro的项目,类型为公开
创建完毕之后,会有一系列提示信息
根据这些信息可以在主机上构造自己的git然后和gitlab仓库关联起来
将用户sda添加到项目中,角色为主程序员
4、git命令补充说明:
git pull #同步文件
git tag #查看当前的标记
git tag 1.0 #当前的标记设置为1.0
git remote add origin http://gitlib/sda/mypro.git
需要变成
git remote add origin http://10.6.12.135:8000/sda/mypro.git
# 是为了将本地仓库和gitlab仓库进行关联,注意这里的端口是8000,如果不写则是80会出错
# 之后只需要执行 git add . git tag 2.0 git commit -m "描述"
# git push gitpush --tags 就可以了,不在需要指明gitlab的地址了
git clone http://10.6.12.135/sda/mypro.git
# 克隆git仓库,直接和gitlab关联
5、使用ssh免密上传:
默认使用的是http的方式进行上传和下载的
git提供了三种访问方式,hhtp,ssh,git
这里使用ssh实现免密上传
右上角个人信息-->左侧导航栏-->ssh秘钥
对应区域内填写ssh-keygen生成的公钥
之后执行:
git remote add origin git@10.6.12.135:sda/mypro.git #关联仓库
二、jenkins:(使用主机ip:10.6.12.136)
是一款就java开发的工具,可以监视重复工作的执行,可以用于构建和测试各种项目。方便实现CI/CD(持续集成/持续交付)。结构如下:
如果应用服务器直接到gitlab上下载对应的代码,还需要在每一台上进行构建,这样比较麻烦。
开发人员向gitlab上提交编写好的代码,jenkins将代码同步到本地进行构建,然后应用服务器到jenkins上下载已经构建好的程序,这样节省了构建的时间。
安装与部署:
yum -y install java-1.8.0-openjdk-devel
rpm -ivh jenkins-2.204.1-1.1.noarch.rpm #到jenkins官网下载
systemctl start jenkins
systemctl enable jenkins
访问 http://10.6.12.136:8080
首次登录的密码存放在/var/lib/jenkins/secrets/initialAdminPassword这个文件下
首次登陆先不要安装任何插件,jenkins默认使用的是外国的镜像,因此安装比较费时
安装插件:(页面默认是英文版的,我这里安装了汉化插件)
只需要修改对应的url就可以了,这里使用的是清华提供的镜像
在这里选择两个插件 Git Parameter 和 Localization:chinese(Simplified)两个插件
然后点击直接安装。
在安装的过程中可能会出现超时等错误,导致相关插件的依赖插件无法安装
可以根据错误提示到对应的镜像中去下载对应的 .hpi 文件来进行安装。
CI/CD流程:
1、gitlab仓库配置
创建一个名为website的项目,类型为公开
添加用户成为项目的主程序员
2、程序员开发程序,并且提交到gitlab仓库中
mkdir website
git init website
cd website
git remote add origin http://10.6.12.135:8000/root/website.git #将本地仓库关联到gitlab上
echo "<h1> hello jenkins 1.0 <h1/>" > index.html
git add .
git commit -m "1.0 test"
git tag 1.0
git push -u origin --all #首次提交
git push -u origin --tags #首次提交
echo "<h1> hello gitlab 2.0 <h1/>" >> index.html
git add .
git commit -m "2.0test"
git tag 2.0
git push #除了首次之外不需要再添加 -u origin了
git push --tags
3、配置jenkins:
新建一个任务
输入任务名为website,这里选择自由风格
添加git parameter参数,这里的Name相当于一个变量,代表版本
Parameter Type相当于这个变量的类型,是分支/标记(branch/tag)
源码管理,使用git的方式,这里使用的$webversion就是上面的Name定义的变量
代表了版本号,或者是分支
4、构建:
构建就是相当于将代码下载到jenkins本地然后进行操作的过程
jenkins默认将文件下载到了/var/lib/jenkins/workspace
过程:
a.将软件所在文件夹拷贝到/var/www/html/deploy/pkgs目录下,通过http让应用服务器下载
b.删除软件文件夹下的.git目录
c.将软件打包,方便下载
d.删除原有的软件目录
e.计算tar包的md5值并且保存到/var/www/html/deploy/pkgs目录下,用于校验
f.生成/var/www/html/deploy/{last_ver, live_ver}两个文件,last_ver记录上一个版本的版本号,live_ver记录当前版本的版本号
yum -y install httpd
systemctl start httpd
systemctl enable httpd
以下的脚本就是上述的构建过程
deploy_dir=/var/www/html/deploy/pkgs
cp -r website-$webversion $deploy_dir # $webversion就是上面定义的变量
cd $deploy_dir
rm -fr website-$webversion/.git
tar -czf website-$webversion.tar.gz website-$webversion
rm -fr website-$webversion
md5sum website-$webversion.tar.gz | awk '{print $1}' > website-$webversion.tar.gz.md5
cd ..
[ -f live_ver ] && cat live_ver > last_ver
echo $webversion > live_ver
配置构建之后:
在git上提交的版本都在这里
构建完毕之后按钮变成蓝色
构建完毕之后jenkins服务器上的/var/www/html/deploy/pkgs中有对应的文件
写总结的第七十七天!!!