持续集成与交付(3)gitlab私有代码仓库
安装安装的时候需要gitlab的安装包,可以在官网上下,或者在清华大学的镜像站中下载。https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum安装的时候应该需要4G内存安装还是十分简单的,之用解决依赖性后可以直接进行安装。安装完成之后会出来一些工具,可以直接使用。gitlab-ctl这个为工具集。安装完成之后需要进行启动,但是启动之前需要修改他...
安装
安装的时候需要gitlab的安装包,可以在官网上下,或者在清华大学的镜像站中下载。https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum
安装的时候应该需要4G内存
安装还是十分简单的,之用解决依赖性后可以直接进行安装。
安装完成之后会出来一些工具,可以直接使用。gitlab-ctl这个为工具集。
安装完成之后需要进行启动,但是启动之前需要修改他的文件。
[root@server1 ~]# cd /etc/gitlab/
[root@server1 gitlab]# vim gitlab.rb
external_url 'http://192.168.122.10' ##只修改这个,外部访问地址
每次改完地址后需要重载服务,服务会给你自动配置好,这个有一段时间的过程,等等就好。
[root@server1 ~]# gitlab-ctl reconfigure
服务配置完成后登陆设置的ip地址。
进入之后会让你强制更改密码。
密码更改完成后使用用户root进行登陆。界面和github很相似
点击创建项目
这时我们可以将Initialize repository with a README
选项进行勾选,在远端进行初始化。
这时我们没有配置ssh-key,现在进行设置。
创建好公钥后将钥匙复制。
将ssh设置完成后就初始化完成了,然后我们选择克隆ssh方式的链接。
[root@server1 ~]# git clone git@192.168.122.10:root/demo.git
正克隆到 'demo'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
接收对象中: 100% (3/3), done.
这样一个私有的代码仓库就搭建完成了。
jenkins持续集成
jenkins专门做CI CD的软件。
CI持续集成强调开发人员提交新代码后立刻进行构建和测试。
CD持续交付,在持续集成的基础上部署到生产环境中。
再开启一台虚拟机server2
在server2上安装jdk-8u171-linux-x64.rpm和jenkins-2.225-1.1.noarch.rpm两个包。
安装完成直接启动jenkins服务。服务开启后默认开启8080端口。
开启完成后在网页上登陆server2的8080端口(启动有点慢,多等等)。
第一次进来要进行解锁,根据提示复制需要的东西。
进去之后先不着急进行下一步操作,首先到
/var/lib/jenkins/目录下编辑一个文件,目的是将下载源替换掉,因为自带的速度太慢。
[root@server2 jenkins]# vim hudson.model.UpdateCenter.xml
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url> ##用清华大学的加速
</site>
</sites>
完成这个步骤还不行,我们进入updates这个目录。
[root@server2 jenkins]# cd updates/
目录中有一个文件,这个文件是提前安装的时候就存在的,所以即使改了刚才的文件也不能进行数据的更新,所以在这里要将里面的一些东西进行替换。
[root@server2 updates]# sed -i.bak 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json ##更新地点
[root@server2 updates]# sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json##测试地点
[root@server2 updates]# systemctl restart jenkins.service
重启服务后才能生效。这样更改完成后下载速度才比较快。
全部设置完成后我们进入网页,选择推荐安装即可。
安装完成之后提示创建管理员,这里我们直接使用admin用户,就不再创建新的用户。
进入之后我们可以先创建一个任务。
输入名称,选择风格完成创建。
在源码管理的选项中将server1中的gitlab仓库中的地址复制过来。但是这里我们看到报错了,因为一般上传时候使用的工具是git,所以我们还需要在server2上安装git工具。
完成之后我们在下面点击添加,并且选择ssh的私钥连接,使用私钥可以直接在gitlab服务端进行拿取。
[root@server1 ~]# cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
完成之后复制上去
将ssh私钥添加完成并且不报错了往下走,我们来构建触发器,选择poll SCM轮询的方式,并且设置多长时间一次。
之后进行环境的构建,我们直接使用shell查看拉取了哪些东西。
全部设置完成之后进行保存。
之后可以查看构建历史中的控制台输出,其中提示我们所有gitlab中的东西会通过免密的方式git进行抓取下来,将文件放在/var/lib/jenkins/workspace/test下面。
[root@server2 updates]# cd /var/lib/jenkins/workspace/test
[root@server2 test]# ls
README.md
gitlab主动进行触发
现在我们设置的是每分钟进行查看一次,但如果我们需要及时的拉取,当gitlab只要一提交,这里就自动拉取如何进行设置呢?
这里就需要gitlab主动进行触发。
首先我们在jenkins中安装一个叫GitLab的插件。然后我们要进入项目之中进行配置。在构建触发器里面将轮询去掉,改为Build when a change is pushed to GitLab. GitLab webhook URL: http://192.168.122.11:8080/project/test
在这个选项中点击高级,并生成一个密钥串。设置完成进行保存。
jenkins设置完成后进入gitlab中的管理中心,在侧面点击设置中的网络,将外发请求展开进行设置,
设置完成保存后再回到我们的项目,选择设置中的集成,将jenkins中的生成粘贴到gitlab中。
下面的trigger表示动作,根据需要进行添加。完成之后点击最底下的添加。
添加完成可以在最底下进行测试动作。测试完成之后进入jenkins页面查看构建历史,可以看到已经出现了。
测试完成后我们还可以进行手动测试。
在server1上继续创建
[root@server1 ~]# cd demo/
[root@server1 demo]# vim index.html
<h1>hahahahaha</h1>
[root@server1 demo]# git add index.html
[root@server1 demo]# git commit -m "add index.html"
[root@server1 demo]# git push origin master
将新创建的测试页面进行上传。
上传完成后进入jenkins已经可以看到将文件进行拉取了。
[root@server2 test]# ls
index.html README.md
使用harbor仓库进行触发实验
安装一个CloudBees Docker Build and Publish的插件
安装完成后需要进入项目中进行配置,更改下构建的方法,里面还要使用docker引擎,所以在jenkins本地安装一个docker,在这个docker中编写daemon.json文件,将目标放在私有仓库中。
接着在网页中添加harbor地址和docker本地docker地址(因为嫌麻烦所以不设置远端的docker地址。)
下来需要添加认证,我们这里设置的认证是用户名和密码,就是harbor的用户名和密码。因为需要上传镜像。
之后在登陆的时候我们还要在私有仓库中添加一个tls。
将目录/etc/docker/certs.d/192.168.122.13中的ca.crt文件传到jenkins的机器上。
之后有个tag的选项,这个选项使用变量自动获取版本号。
最后再到server1上编写dockerfile,编写完成等待镜像自动拉取。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)