持续集成(Continuous Integration),简称CI,是指开发者在代码的开发过程当中,能够频繁的将代码部署集成到主干,并进程自动化测试。java
持续交付(Continuous Delivery),指的是在持续集成的环境基础之上,将代码部署到预生产环境node
持续部署(Continuous Deployment),是指在持续交付的基础上,把部署到生产环境的过程自动化,持续部署和持续交付的区别就是最终部署到生产环境是自动化的。nginx
PS:目前大部分公司都是作到持续交付,作到持续部署的还不多,由于上生产环境,还要有不少步骤须要作。git
1.代码获取(直接了拉取最新代码,使用tag标签获取某个版本代码)
2.编译 (可选)
3.配置文件放进去
4.打包
5.scp到目标服务器
6.将目标服务器移除集群
7.解压并放置到Webroot
8.Scp 差别文件
9.重启 (可选)
10.测试
11.加入集群web
GitLab是一个利用
Ruby on Rails
开发的开源应用程序,实现一个自托管的Git项目仓库,可经过Web界面进行访问公开的或者私人项目。
GitLab拥有与Github相似的功能,可以浏览源代码,管理缺陷和注释。能够管理团队对仓库的访问,它很是易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片断收集功能能够轻松实现代码复用,便于往后有须要的时候进行查找redis
#环境准备 [root@node1 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@node1 ~]# uname -r 3.10.0-693.el7.x86_64 #更换阿里yum源 [root@node1 yum.repos.d]# wget http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm [root@node1 ~]# wget http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm [root@node1 ~]# yum update -y #更换gitlabyum源为清华大学 [root@node1 ~]# vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] name=gitlab-ce baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7 repo_gpgcheck=0 gpgcheck=0 enabled=1 gpgkey=https://packages.gitlab.com/gpg.key [root@node1 ~]# yum makecache [root@node1 ~ ]# yum install -y gitlab-ce #安装依赖 [root@node1 ~]# yum install curl policycoreutils openssh-server openssh-clients postfix -y #启动postfix [root@node1 ~]# systemctl start postfix #安装gitlab-ce 版本为gitlab-ce.x86_64 0:10.6.4-ce.0.el7 [root@node1 ~]# yum install -y gitlab-ce #配置并启动gitlab 比较久,须要耐心等待一下,在此以前须要保证80端口不被占用 [root@node1 ~]# gitlab-ctl reconfigure #等待完成,看到以下结果,说明配置成功 Running handlers: Running handlers complete Chef Client finished, 387/552 resources updated in 01 minutes 55 seconds gitlab Reconfigured! #查看启动状态 所有为run说明正常启动 [root@node1 ~]# gitlab-ctl status run: gitaly: (pid 15333) 182s; run: log: (pid 14995) 225s run: gitlab-monitor: (pid 15350) 181s; run: log: (pid 15153) 213s run: gitlab-workhorse: (pid 15318) 182s; run: log: (pid 14876) 239s run: logrotate: (pid 14928) 231s; run: log: (pid 14927) 231s run: nginx: (pid 14895) 237s; run: log: (pid 14894) 237s run: node-exporter: (pid 15132) 219s; run: log: (pid 15131) 219s run: postgres-exporter: (pid 15387) 180s; run: log: (pid 15240) 199s run: postgresql: (pid 14634) 273s; run: log: (pid 14633) 273s run: prometheus: (pid 15370) 181s; run: log: (pid 15191) 205s run: redis: (pid 14574) 279s; run: log: (pid 14573) 279s run: redis-exporter: (pid 15175) 207s; run: log: (pid 15174) 207s run: sidekiq: (pid 14858) 245s; run: log: (pid 14857) 245s run: unicorn: (pid 14820) 247s; run: log: (pid 14819) 247s
至此最基本的gitlab已经正常运行起来了!sql
2.3.1 此时咱们在浏览器中访问http://192.168.66.129vim
Web页面提示须要设置一个密码(最少8位数)我这里设置密码为:12345678浏览器
登陆系统,默认用户名为root服务器
点击settings 把Sign-up enabled的钩去掉便可
2.3.2 建立组,建立项目
进去管理区域,点击New group
输入相关信息,并选择Private
相似上面的方法,建立一个项目,并选择web组
2.3.3 在客户端测试,并配置ssh免秘
[root@node1 ~]# useradd www [root@node1 ~]# passwd www 更改用户 www 的密码 。 新的 密码: 无效的密码: 密码少于 8 个字符 从新输入新的 密码: passwd:全部的身份验证令牌已经成功更新。 [root@node1 ~]# su www [www@node1 root]$ ssh-keygen -t rsa -C "yuanjy@juweitu.com" Generating public/private rsa key pair. Enter file in which to save the key (/home/www/.ssh/id_rsa): Created directory '/home/www/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/www/.ssh/id_rsa. Your public key has been saved in /home/www/.ssh/id_rsa.pub. The key fingerprint is: SHA256:J5Ja/RLAE4KPv70zz1YMmrz7r5ojLPfchGThH9hBdI8 yuanjy@juweitu.com The key's randomart image is: +---[RSA 2048]----+ | .. ..o . | | . o o . o | | o = . E . | | . .. O.. | | . .OoSo. | | .=++ *o | | ..o..+.. | | . =.*=.. | | o oB@*o. | +----[SHA256]-----+ [www@node1 root]$ cd [www@node1 ~]$ cd .ssh/ [www@node1 .ssh]$ ll 总用量 8 -rw------- 1 www www 1679 4月 21 16:40 id_rsa -rw-r--r-- 1 www www 400 4月 21 16:40 id_rsa.pub [www@node1 .ssh]$ cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGS5bnpPvBPLkh/j3OJ8j3Z0dkxgUgLMT2ebeL0U/c7cQ6xGRgKajfLLb2xp+U4XCgU6kKBncXvFWh4PY7/eBPpVbpstJmtf/13gAYB/skHen+jl58k1JP4m/9W/aB6KW3PBRuWF9BA3ki0fHt624R2qSHoaveHiP2YK/9hsYhAizzdN3Y6JMCfSxZ7/FluLb+tXuASLuVQqyilxxZGkAjY0/15zntXyNTovAfseeRrmyAktvMgjK9ZfdGZp/nzS3LXclw2/QhAyT4mLL9FzLLWE2adYuBxj/42UrVZrc7bfkTMUllYvSq4Qkg0VS/8n5FLxEjAIKwPDTkbeTFVKan yuanjy@juweitu.com [www@node1 .ssh]$
上面建立了一个www用户,并生产了秘钥文件,在浏览器中点击我的头像,点击settings进入设置,点击SSH keys
输入刚刚生成的公钥,点击Add key既可
在客户端测试
[www@node1 ~]$ git clone git@gitlab.example.com:web/web-demo.git 正克隆到 'web-demo'... ssh: Could not resolve hostname gitlab.example.com: Name or service not known fatal: Could not read from remote repository. #PS 由于我这里是虚拟机没有配置相关域名,也没有修改hosts,这里就临时把gitlab.example.com改为IP既可,后面能够修改配置文件 Please make sure you have the correct access rights and the repository exists. [www@node1 ~]$ git clone git@192.168.66.129:web/web-demo.git 正克隆到 'web-demo'... The authenticity of host '192.168.66.129 (192.168.66.129)' can't be established. ECDSA key fingerprint is SHA256:wJyF35WdLaQJxzWYaVgjv61ujKzHcTw1DpR789UPUQ8. ECDSA key fingerprint is MD5:3c:96:f6:ad:15:ba:73:fd:67:ac:54:52:84:4d:0a:b3. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.66.129' (ECDSA) to the list of known hosts. remote: Counting objects: 6, done. remote: Compressing objects: 100% (2/2), done. remote: Total 6 (delta 0), reused 0 (delta 0) 接收对象中: 100% (6/6), done. [www@node1 ~]$ ll 总用量 0 drwxrwxr-x 3 www www 35 4月 21 16:49 web-demo [www@node1 ~]$ cd web-demo/ [www@node1 web-demo]$ ll 总用量 4 -rw-rw-r-- 1 www www 44 4月 21 16:49 README.md [www@node1 web-demo]$ cat README.md 测试专用 测试 。。。。。。。。[www@node1 web-demo]$
至此Gitlab基本使用已经完成
Jenkins
只是一个平台,真正运做的都是插件。这就是jenkins流行的缘由,由于jenkins什么插件都有
Hudson
是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工做,Hudson后来被收购,成为商业版。后来创始人又写了一个jenkins
,jenkins在功能上远远超过hudson
Jenkins官网:https://jenkins.io/
Jenkins 是由java语言编写,因此咱们这里须要java环境,我事先已经安装好了1.8.0_161
PS:由于gitlab中的unicorn组件会监听8080端口,而Jenkins默认也是监听8080,这里咱们采用node2来部署jenkins
#jenkins本身提供了yum源,这里采用yum方式,也能够采用源码编译的方式 [root@node2 ~]# cd /etc/yum.repos.d/ [root@node2 yum.repos.d]# wget http://pkg.jenkins.io/redhat/jenkins.repo [root@node2 ~]# rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key [root@node2 ~]# yum install -y jenkins [root@node2 ~]# systemctl start jenkins
在浏览器端访问http://192.168.66.130:8080,看到以下界面就说明启动成功
查看输入密码,登陆进入,会看到以下页面
填写要建立的管理用户这里使用Admin 密码为12345678,点击保存并完成便可。
至此基本的Jenkins已经正常的运行了
由于咱们要和gitlab结合,因此这里须要安装gitlab的插件
在系统管理中,进入插件管理,搜索gitlab
按实际状况,选择须要的插件,点击下载待重启后安装既可
点击建立一个新任务,输入任务名字,选择自由风格,点击肯定既可
在源码管理添加源码路径,点击Add,添加认证,这里是git,若是是svn,须要安装svn相关插件
在Gitlab上建立deploy keys
[root@node2 yum.repos.d]# useradd www [root@node2 yum.repos.d]# cd [root@node2 ~]# passwd www 更改用户 www 的密码 。 新的 密码: 无效的密码: 密码未经过字典检查 - 过于简单化/系统化 从新输入新的 密码: 抱歉,密码不匹配。 新的 密码: 无效的密码: 密码未经过字典检查 - 过于简单化/系统化 从新输入新的 密码: passwd:全部的身份验证令牌已经成功更新。 [root@node2 ~]# su www [www@node2 root]$ ssh-keygen -t rsa -C "yuanjy@juweitu.com" Generating public/private rsa key pair. Enter file in which to save the key (/home/www/.ssh/id_rsa): Created directory '/home/www/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/www/.ssh/id_rsa. Your public key has been saved in /home/www/.ssh/id_rsa.pub. The key fingerprint is: SHA256:CSt+dEEFmyv40qJ5d1e/NbCHbn9fgEYLaf2FhKHuptk yuanjy@juweitu.com The key's randomart image is: +---[RSA 2048]----+ | oo. .o. | | . o +.. . | | . + = o . .| | . o * o + . | | o + S . +.o | | . = o . .. +. | | + + o. + oo| | o.+. .=. ..o.+| | o. . .o.E ..oo+| +----[SHA256]-----+ [www@node2 root]$ cd [www@node2 ~]$ ll 总用量 0 [www@node2 ~]$ cd .ssh/ [www@node2 .ssh]$ ll 总用量 8 -rw------- 1 www www 1675 4月 21 23:42 id_rsa -rw-r--r-- 1 www www 400 4月 21 23:42 id_rsa.pub [www@node2 .ssh]$ cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZZE5beieQdGcCQLkHjeh/4TJXwGnybLc7A0xVfTSQszjq7jx/m6jjE4pOHMQX/yUqb9Pg+NdvsJynpV1ZSNr/ojm18vR4S7sj+6nEV0kIP0IWOLeqSlHKvr9BFggkvcAjSTzsSc31P1Wn8rs6z9xag8WWK759vSz1BdG85fW5xgDdlu8ynwGulF6roOa2pAKhCCk2ibRvwYbpElVGcFA6taf7LOnR63842JsYbeC+a8XTcZmWFWVq8JYfeDcoHZ/61gC9lmiIlsVlEGifAJaM6KHQxkViQtEpWzgfRvKEnBmXigiCUvbJPBNSPCbzSPVYK+Yv1llBsGJQfp/74glD yuanjy@juweitu.com [www@node2 .ssh]$
点击Create既可,填写私钥文件,点击Add既可
点击保存既可,点击当即构建