gitlab和jenkins

什么是gitlab:

  • GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

什么是Jenkins:

  • Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

两者结合的优势:

  • 这两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins以一定频率自动运行测试、构建和部署的任务,帮组开发团队更高效的集成和发布代码

一、gitlab的安装与配置

  1. 安装配置
[root@server1 ~]# yum install -y gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm 
[root@server1 ~]# cd /etc/gitlab/
[root@server1 gitlab]# ls
gitlab.rb
[root@server1 gitlab]# vim gitlab.rb   ##编辑gitlab的配置文件,将ip修改为自己gitlab所在的ip
  13 external_url 'http://172.25.19.1'
[root@server1 gitlab]# gitlab-ctl reconfigure   ##重新加载
  1. 访问Gitab页面输入:http://172.25.19.1
  • 重置密码
    gitlab和jenkins_第1张图片
  • 以root身份登陆

gitlab和jenkins_第2张图片

  • create a project
    gitlab和jenkins_第3张图片
    gitlab和jenkins_第4张图片
  • 添加公钥
    为了通过ssh直接上传和拉取代码,所以需要在gitlab中做免密(在/root/.ssh/中生成公钥和私钥)
    gitlab和jenkins_第5张图片
    gitlab和jenkins_第6张图片
  1. 在物理机上使用git来进行版本控制时,为了得一个项目的拷贝(copy),我们需要知道这个项目仓库的地址(Git URL). Git能在许多协议下使用,所以Git URL可能以ssh://, http(s)/, git://,或是只是以一个用户名(git 会认为这是一个ssh 地址)为前辍.

gitlab和jenkins_第7张图片

[root@server1 ~]# git clone git@172.25.19.1:root/demo.git
[root@server1 ~]# cd demo/
[root@server1 demo]# ls
README.md

二、安装jenkins

  1. 在server2中安装 jdk和 jenkins
[root@server2 ~]# yum install -y jdk-8u171-linux-x64.rpm
[root@server2 ~]# yum install -y jenkins-2.121.3-1.1.noarch.rpm
[root@server2 ~]# /etc/init.d/jenkins start      ##端口是8080
Starting jenkins (via systemctl):                          [  OK  ]
  1. 虚拟机需要能够联网
  2. 网页上输入172.25.19.2:8080
    gitlab和jenkins_第8张图片
  • 获取解锁 Jenkins密码
[root@server2 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
bf44894d032849a093a1adb3b80e029a
  • 将密码复制到网页,解锁Jenkins
    gitlab和jenkins_第9张图片
  • 安装官方推荐插件,选择 左侧 选项进行安装
    gitlab和jenkins_第10张图片
  • 大概等几分钟,进度条完成即可
    gitlab和jenkins_第11张图片
    gitlab和jenkins_第12张图片
    在这里插入图片描述
    gitlab和jenkins_第13张图片
  • 用户登录,用户名:admin,密码:刚才解锁的 Jenkins密码
    gitlab和jenkins_第14张图片
    gitlab和jenkins_第15张图片
  1. 配置安装完成之后:
  • 建立一个新的项目hui
    gitlab和jenkins_第16张图片
  • 点击配置
    gitlab和jenkins_第17张图片
    gitlab和jenkins_第18张图片
  • 查看私钥,将私钥添加上去
[root@server2 ~]# yum install -y git     ##一定要安装
[root@server1 ~]# cd .ssh
[root@server1 .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub  known_hosts
[root@server1 .ssh]# cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA2utjQ1jkywkrOOmpXKCsHe0UR5v75UCQHlmgxNqiSKYNFKry
I4Z43QMlFvAYOh7qKE9o5UVXUfK7nEf4MzkH3J4Z/aRK/7ArVT8Arzg5gMp3e9Zt
IQ/h1TjQo391tCJG44N6lRakrOuYczlG+2Ms/a/f/u3GKmG2GAjN5e5IcgrTx3PC
c9oSAU7s92Rvf1H+vJ29rw0B3/mxhJh3vP/rU5qqFjcilYhY/XdO9L8WqAaDqwsv
5CEQMHISlnio4xAO10qGGzXSy+4+R1hScQ9JCg420OIyd9sMQ6BuLRmIBg61/G5g
uyoW6NHJ7B2UUbjIXM3FEhBPRC8lMJl0uF2bxwIDAQABAoIBADLKa/RDGon0rZ99
rrp72JL030Ch8vZEXWt9NeyWIRKj2+MQqi8N0trMEP3aZHSPmZoSmm6fANxVaauf
kvknYSiRUcxkIrZhxBv6CwmcDNNRphkILbd+/NFAZj+YodFSJopAhd8zKq+n1W3e
Oxa18slE1b5KojBRDTNUT5jqCMrURDj0MuhTFsZcrR61BxQpnerulRTDM19vFggS
6MMcsvq14T70dh/6/xZZT06DIpa3cjryj/wOlai2L3Bg+Jp6NJkKQLPgx52DDNo/
ZXfshN81WjujydgHoHKn+hnBZXV1qFAVG9nqoEncrUVvuQYZXjmvWw1RDCDFqFaT
u4v+c6ECgYEA+qKst2xg/W4LNinKHKBlgyTtKY7a6amT6QQNcdoPZq1fWPwf3okj
WpNgxxaM91LetmaOE7FtSLLjr9aczjnJ30BojP/JWwuonpHlVUo+d+adqHXQDF7s
JopjHFwllFFP2oc+tKXg8KoeMjlID/jLjLKI8SAmCHjWtx+9PVIglPcCgYEA35rt
8BlE75Pljk4DSVaNfVFFVFfRpwbCXBJqg6wPtvvZF89TGgRT508PArXmAKiuXE3r
saEFz9HPGlwLc5A5fWdjpxPBQ+gHWyl/21ahun9ynppo4fZ+luPYgZ6nW9wF9j/G
BhubtmQyeH+eCGH6aR95ql060LBX2wuFlxYQC7ECgYEAtbiO2+rzo6xO6rV/+iN9
lomGfvQ52uL+ABvVF7BQLFUV5bHf9XyfKoPizlaWXJg0LDHNX4/sOaKinRJQ3OFf
ccQESf8HYkDgwB/uFFnhUxPdSZAqCV4lgIgj9iMFiDUwXbRjjZ0bq8LcY/POQO5V
vyyPR6zUhp3+qAWWMsjCIN8CgYEAmg6jOpYeYbYTJb1oFEI2z42L57Vts9c7V7Y0
fq2wUhEonHfyOG2c5TQaEnMCmZeeMehZqBNZ7roOJ4odNay7f0QZa4Z31HJrhwqL
lbIVUWn3rYCTHIP46brncz687dQko2mC5Lhmyv4zq8O5POtMXNsbtx3upNOqZDeG
/fZsbbECgYBBB1tC1OEfjCwaqrN6sK1QIxvTQLYErKrHFg0u//BqL+NNFyUE2kbA
XYv+Bm/jOnyoEOP1oTHU8JcJBxXbQFJkWbdYFya7RvxjjdHpyWxfeSDuCmqBw6g4
GMBIfFU6JCv5/jgpuWMgfd+zxwJ9s6CVhjnEEcueB01R77AkXisrgQ==
-----END RSA PRIVATE KEY-----

gitlab和jenkins_第19张图片
gitlab和jenkins_第20张图片

  • 构建触发器,选择定时构建,写上定时策略
    gitlab和jenkins_第21张图片
  • 构建环境–>增加构建步骤—>执行shell ls -l
    gitlab和jenkins_第22张图片
    gitlab和jenkins_第23张图片
  • 写完之后一定要保存
  1. 在真机中编辑文件,选择push之后,每一分钟它会刷新,会在构建名称之后选择控制台输出
[root@server1 ~]# cd hui/
[root@server1 hui]# vim index.html
[root@server1 hui]# cat index.html 
westos.org
[root@server1 hui]# git add index.html 
[root@server1 hui]# git commit -m "add index" 
[root@server1 hui]# git push -u origin master

gitlab和jenkins_第24张图片gitlab和jenkins_第25张图片
gitlab和jenkins_第26张图片
6. 关联gitlab和jenkins

  • jenkins下载插件
    gitlab和jenkins_第27张图片
    gitlab和jenkins_第28张图片
    gitlab和jenkins_第29张图片
    配置
    gitlab和jenkins_第30张图片
    生成token
    gitlab和jenkins_第31张图片

  • 配置gitlab
    gitlab和jenkins_第32张图片
    gitlab和jenkins_第33张图片
    gitlab和jenkins_第34张图片
    gitlab和jenkins_第35张图片
    gitlab和jenkins_第36张图片

  • 测试,push events
    gitlab和jenkins_第37张图片
    可以在Jenkins上看到触发的事件和相应的控制台输出
    gitlab和jenkins_第38张图片
    gitlab和jenkins_第39张图片

  • 自己修改文件上传也会有相应的触发

[root@server1 ~]# cd hui/
[root@server1 hui]# echo hello > index.html
[root@server1 hui]# git add index.html 
[root@server1 hui]# git commit -m "add index" 
[root@server1 hui]# git push -u origin master

gitlab和jenkins_第40张图片
gitlab和jenkins_第41张图片

三、安装docker

  1. server2安装docker,并导入镜像
[root@server2 docker]# ls
container-selinux-2.21-1.el7.noarch.rpm
docker-ce-18.06.1.ce-3.el7.x86_64.rpm
libsemanage-2.5-8.el7.x86_64.rpm
libsemanage-python-2.5-8.el7.x86_64.rpm
pigz-2.3.4-1.el7.x86_64.rpm
policycoreutils-2.5-17.1.el7.x86_64.rpm
policycoreutils-python-2.5-17.1.el7.x86_64.rpm
[root@server2 docker]# yum install -y *

[root@server2 docker]# systemctl start docker
[root@server2 docker]# docker load -i registry.tar
[root@server2 docker]# docker load -i nginx.tar


[root@server2 docker]# docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry:2.3.1
2d8cd0427136f4efed8b4d5071772e634a0fccb5a1cd5d07941fc3b4a58d3a7f
[root@server2 docker]# ll /var/run/docker.sock 
srw-rw---- 1 root docker 0 Mar 31 16:40 /var/run/docker.sock
[root@server2 docker]# chmod 777 /var/run/docker.sock

[root@server2 docker]# vim /etc/sudoers
 92 jenkins ALL=(ALL)       NOPASSWD: ALL

在这里插入图片描述
gitlab和jenkins_第42张图片
gitlab和jenkins_第43张图片
gitlab和jenkins_第44张图片
在这里插入图片描述
gitlab和jenkins_第45张图片
gitlab和jenkins_第46张图片
gitlab和jenkins_第47张图片
gitlab和jenkins_第48张图片
gitlab和jenkins_第49张图片

  • 配置后保存
[root@server1 hui]# pwd
/root/hui
[root@server1 hui]# vim Dockerfile
[root@server1 hui]# cat Dockerfile 
FROM nginx
COPY index.html /usr/share/nginx/html
[root@server1 hui]# ls
Dockerfile  index.html  README.md
[root@server1 hui]# cat index.html 
westos.org
[root@server1 hui]# git add Dockerfile
[root@server1 hui]# git commit -m "add Dockerfile"
[root@server1 hui]# git push -u origin master
[root@server2 docker]# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED              SIZE
localhost:5000/nginx   4                   23dec48ca5fa        About a minute ago   109MB
localhost:5000/nginx   latest              23dec48ca5fa        About a minute ago   109MB
nginx                  latest              e548f1a579cf        13 months ago        109MB
registry               2.3.1               83139345d017        3 years ago          166MB

gitlab和jenkins_第50张图片
gitlab和jenkins_第51张图片

  • 修改index.html,然后上传,会引发新的触发
    gitlab和jenkins_第52张图片
    在这里插入图片描述
    gitlab和jenkins_第53张图片
    在这里插入图片描述
    可以用tree查看docker

你可能感兴趣的:(Linux)