文章目录

  • jenkins+gitlab实现自动化部署平台
    • git
    • gitlab
      • gitlab介绍
        • 安装
    • jenkins
      • jenkins介绍
        • CI/CD介绍
      • Jenkins安装
    • gitlab+jenkins
      • 配置
    • 学习参考

jenkins+gitlab实现自动化部署平台

git

版本控制系统,顾名思义,版本控制就是一个管理我们文件版本的软件系统。同一份文件中会有不同的版本,编辑者会根据需求对新版本文件添加(修改、删除)内容等

gitlab

官网
私人代码仓库
公开的对应的是github

gitlab介绍

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

Git的家族成员
Git:是一种版本控制系统,是一个命令,是一种工具。
Gitlib:是用于实现Git功能的开发库。
Github:是一个基于Git实现的在线代码托管仓库,包含一个网站界面,向互联网开放。
GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业、学校等内部网络搭建git私服。

Gitlab的服务构成
Nginx:静态web服务器。
gitlab-shell:用于处理Git命令和修改authorized keys列表。
gitlab-workhorse: 轻量级的反向代理服务器。
logrotate:日志文件管理工具。
postgresql:数据库。
redis:缓存数据库。
sidekiq:用于在后台执行队列任务(异步执行)。
unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。

GitLab Shell
GitLab Shell有两个作用:为GitLab处理Git命令、修改authorized keys列表。
当通过SSH访问GitLab Server时,GitLab Shell会:
1.限制执行预定义好的Git命令(git push, git pull, git annex)
2.调用GitLab Rails API 检查权限
3.执行pre-receive钩子(在GitLab企业版中叫做Git钩子)
4.执行你请求的动作 处理GitLab的post-receive动作
5.处理自定义的post-receive动作
当通过http(s)访问GitLab Server时,工作流程取决于你是从Git仓库拉取(pull)代码还是向git仓库推送(push)代码。
如果你是从Git仓库拉取(pull)代码,GitLab Rails应用会全权负责处理用户鉴权和执行Git命令的工作;
如果你是向Git仓库推送(push)代码,GitLab Rails应用既不会进行用户鉴权也不会执行Git命令,它会把以下工作交由GitLab Shell进行处理:
1.调用GitLab Rails API 检查权限
2.执行pre-receive钩子(在GitLab企业版中叫做Git钩子)
3.执行你请求的动作
4.处理GitLab的post-receive动作
5.处理自定义的post-receive动作

GitLab Workhorse
GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。

安装

配置要求:内存2G以上

Gitlab环境部署
阿里云购买也可以,不要钱
手动部署:
1、配置yum源
vim /etc/yum.repos.d/gitlab-ce.repo
复制以下内容:
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6
Repo_gpgcheck=0
Enabled=1
Gpgkey=https://packages.gitlab.com/gpg.key
2、更新本地yum缓存
yum makecache
3、安装GitLab社区版
yum intall gitlab-ce        #自动安装最新版
yum install gitlab-ce-x.x.x    #安装指定版本
4.
vim /etc/gitlab/gitlab.rb 编辑配置文件写入当前主机IP,修改gitlab仓库路径
external_url '当前主机IP'gitlab-ctl reconfigure    初始化gitlab
gitlab-ctl restart  重载服务
在网页访问输入密码大于八位即可;首次登录会强制用户修改密码。密码修改成功后,输入新密码进行登录。'GitLab常用命令
gitlab-ctl start    # 启动所有 gitlab 组件;
gitlab-ctl stop        # 停止所有 gitlab 组件;
gitlab-ctl restart        # 重启所有 gitlab 组件;
gitlab-ctl status        # 查看服务状态;
gitlab-ctl reconfigure        # 启动服务;
vim /etc/gitlab/gitlab.rb        # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace    # 检查gitlab;
gitlab-ctl tail        # 查看日志;'

jenkins

官网 阿里云下载都行
官网
文档

jenkins介绍

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
1)持续的软件版本发布/测试项目。
2)监控外部调用执行的工作。

Jenkins特性:

开源的java语言开发持续集成工具,支持CI,CD;
易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理;
消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告;
分布式构建:支持Jenkins能够让多台计算机一起构建/测试;
文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等;
丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

CI/CD介绍

把开发工作流程分为以下几个阶段:
编码 → 构建 → 集成 → 测试 → 交付 → 部署

正如你在上图中看到,持续集成(Continuous Integration)、持续交付(Continuous Delivery)和持续部署(Continuous Deployment)有着不同的软件自动化交付周期。

CI/CD是什么?

CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。

CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。

Jenkins安装

安装最低配置:不少于256M内存,不低于1G磁盘,JDK版本>=8(openjdk也可以)。
机器可上网1.jenkins的安装配置
[root@localhost ~]# ls
jdk-8u171-linux-x64.rpm  jenkins-2.121.1-1.1.noarch.rpm
[root@localhost ~]# yum install * -y2.打开服务
[root@localhost ~]# systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation ServerLoaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)Active: inactive (dead)Docs: man:systemd-sysv-generator(8)
[root@localhost ~]# /etc/init.d/jenkins start  开启服务
Starting jenkins (via systemctl):                          [  OK  ][root@localhost ~]# netstat -antlp  查看端口8080开启
3.网页访问jenkins
根据提示在虚拟机获取初始化密码:
[root@localhost ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
bdb371f17f07452eb5d935d7ab6d4f16安装建议安装插件
这里要保证所有插件安装成功,保证网络有失败的再次安装即可
'加速Jenkins安装插件的速度
第1种方式:使用vim
vim /var/lib/jenkins/updates/default.json   ##插件下载的加速  这是打开网页之后才有的
:$s/http:\/\/www.google.com/https:\/\/www.baidu.com/g
:$s/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g第二种方式:使用sed
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
&& sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json'创建Admin用户,完成相关设置
此时jenkins已部署完毕
查看jenkins的配置文件
cat /etc/sysconfig/jenkins              #查看jenkins的配置文件,定义了home、JAVA_CMD、user、port等基础配置,保持默认即可查看程序主目录:
# ls /var/lib/jenkins/              #查看程序主目录
config.xml                                      nodes
hudson.model.UpdateCenter.xml                   plugins
hudson.plugins.git.GitTool.xml                  queue.xml.bak
identity.key.enc                                secret.key
jenkins.CLI.xml                                 secret.key.not-so-secret
jenkins.install.InstallUtil.lastExecVersion     secrets
jenkins.install.UpgradeWizard.state             updates
jenkins.model.JenkinsLocationConfiguration.xml  userContent
jobs                                            users
logs                                            workflow-libs
nodeMonitors.xmljobs        浏览器上面创建的任务都会存放在这里
logs        存放jenkins相关的日志
nodes       多节点时用到
plugins     插件所在目录
secrets     密码秘钥所在目录
#jobs和plugins目录比较重要
jenkins存放数据不依靠数据库,所以在移植时只需要拷贝整个程序主目录即可。

gitlab+jenkins

GitLab是一个代码仓库,用来管理代码。Jenkins是一个自动化服务器,可以运行各种自动化构建、测试或部署任务。
所以这两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins以一定频率自动运行测试、构建和部署的任务,
帮组开发团队更高效的集成和发布代码。
两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins以一定频率自动运行测试、构建和部署的任务,帮助开发团队更高效的集成和发布代码。

配置

节点 服务
node1 gitlab
node2 gjenkins
1.配置gitlab的ssh免密连接
# cd .ssh/
# ls
authorized_keys  id_rsa  id_rsa.pub  known_hosts
# cat id_rsa.pub 查看公钥
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNeD0hcnCreyvvLHo5fMcQ4MszPyzAihqHQa9plB7Hxn+Qau4SSo8h2jJbhIDtvGfQdrCcB7823+skP6QFrfhUWBUbwZ7UjleSbumA3YhHK/ooCEzDx1kQY9pXxOEIp7jZ4PWfOhvINyFC1RH/kPC7Tx7697lq3mcWQCRS1wArF3vg3AHsNDtswwiYLitHkiZDlUVBBBnwH4GM1xe4YKtQXDOoqjnfxoq2LHFh8JKb/92NvqzYr1w+E8ps/jx+AoeUnv9pU4qtHierA3B/DQawI+wH3ChABZAjmr7zONbdINj1QJIjFmjDOgXQIc2eyYTFJb7/qaCwvm+Cwm6SVitx root@foundation38.ilt.example.com
将公匙复制到gitlab的sshkeys
2.使用gitlab
在GitLab的主页中新建一个Project:demo
# git clone git@172.25.38.11:root/demo.git  进行克隆
Cloning into 'demo'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
# cd demo/
# ls
README.md
# cd .git/
# ls
branches  description  hooks  info  objects      refs
config    HEAD         index  logs  packed-refs
# git remote -v
origin  git@172.25.38.11:root/demo.git (fetch)
origin  git@172.25.38.11:root/demo.git (push)
# cd ..
# ls
README.md
#提交代码
# vim README.md
# cat README.md demohelloworld
# git add README.md   提交到暂存区
# git commit -m "add README.md"   直接提交
[master e4b9560] add README.md1 file changed, 1 insertion(+)
# git push origin master
Counting objects: 5, done.
Writing objects: 100% (3/3), 261 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@172.25.38.11:root/demo.gitc11a0b1..e4b9560  master -> master
在gitlab界面可以看到实时数据
#创建一个测试job查看私钥:
# cd /root/.ssh/
# ls
authorized_keys  demo  id_rsa  id_rsa.pub  known_hosts
# cat id_rsa  全部复制到网页即可
设置免密保存即可#通过git测试jenkins,ssh gitlab主机
# pwd
/home/kiosk/demo
# ls
aa.txt  readme.md  test.txt
# vim test.txt
# cat test.txt
test
# git add test.txt   提交信息
# git commit -m "add test.txt"
[master 02cadf8] add test.txt1 file changed, 1 deletion(-)# git push origin master  推送信息
Username for 'https://github.com': xuefeilong
Password for 'https://xuefeilong@github.com':
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 248 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/xuefeilong/test.gitacbf46a..02cadf8  master -> master此时可以看到jenkins有推送信息标志,查看控制台输出可以看到提交的信息

学习参考

1

2

jenkins+gitlab实现自动化部署平台相关推荐

  1. Jenkins+Gitlab+Ansible自动化部署(四)

    Jenkins+Gitlab+Ansible自动化部署(2021-08-11) 一.Jenkins Linux Shell 集成 登录Jenkins web管理页,点击新建任务 添加描述信息 添加构建 ...

  2. 基于Jenkins+Gitlab的自动化部署实战

    故事背景 一个中小型企业,是典型的互联网公司,当初期的时候可能运维只能标配到2~3人,此时随着公司的发展,项目会逐渐增多.前期部署项目可能都是手动的, 俗称"人肉部署",这简直是无 ...

  3. 基于Gitlab Jenkins Docker集群 微服务搭建自动化部署平台

    随着公司应用系统的不断增多,原有手工部署流程越来越不满足上线的需求.为了各个系统能快速迭代与测试,减少上线流程时间和人为出错,迫切需要一套自动化部署系统. 转载原文:https://luoji.liv ...

  4. gitlab ci 自动化部署_前端gitLab加jenkins自动化构建和部署,以及服务器常用的linux命令行操作,免密登录...

    常用的linux命令行操作 将项目部署到服务器后,需要查看文件是否已经部署成功,已经对文件进行增删改查操作,就需要用到命令行操作,常用操作如下: ll 罗列出当前文件或目录的详细信息,含有时间.读写权 ...

  5. 详解 Jenkins 自动化部署平台

    详解 Jenkins 自动化部署平台 原文来源:Jenkins自动化部署 Jenkins介绍 Jenkins是一个开源的.可扩展的持续集成.交付.部署(软件/代码的编译.打包.部署)的基于web界面的 ...

  6. java部署平台_开源Java自动化部署平台JDeploy

    JDeploy是Java + Shell实现的基于Linux系统的自动化.可视化的项目部署平台,能部署Java服务.Java Web项目,可以简化项目部署操作,无需繁琐的黑窗口SSH指令及Jenkin ...

  7. java自动化部署平台_开源Java自动化部署平台JDeploy

    JDeploy是Java + Shell实现的基于Linux系统的自动化.可视化的项目部署平台,能部署Java服务.Java Web项目,可以简化项目部署操作,无需繁琐的黑窗口SSH指令及Jenkin ...

  8. jenkins+gitee 实现自动化部署项目到centos上

    目录 一 原理说明 1 流程说明 2 流程图 二 环境部署说明 三 Jenkins基本配置 1 Configure System (系统设置) 2 Configure  Global Security ...

  9. 一站式自动化运维及自动化部署平台

    真正的大师,永远都怀着一颗学徒的心! 一.项目简介 一站式自动化运维及自动化部署平台 二.实现功能 支持机器管理(环境变量.机器秘钥.终端日志.终端会话.机器代理) 支持调度任务 支持执行管理 支持应 ...

最新文章

  1. iOS中responseToSelector()方法是不是需要优化
  2. 组策略 之 驱动器映射
  3. 145. 超市【小根堆 贪心】
  4. 2行代码实现小程序分享到朋友圈功能
  5. Android插件化原理解析——概要
  6. 算法分类整理+模板②:字符串处理
  7. C/C++ 时间相关用法
  8. python贪吃蛇设计目标_基于 pygame 设计贪吃蛇游戏
  9. P2633-Count on a tree【主席树,LCA】
  10. Pandas 生成随机整数序列
  11. Energetically Consistent Invertible Elasticity
  12. 用C#实现基于TCP协议的网络通讯(1)
  13. php 日之泪,php泪中一帮助
  14. Java高并发编程详解系列-Volatile关键字
  15. android屏幕尺寸像素详解
  16. Oracle 11.2.0.4 RAC 最新补丁下载(11.2.0.4.200714)
  17. 如何区分网线是几类的_怎么看网线是几类网线?
  18. 【太经典】如果有人问你数据库的原理,叫他看这篇文章
  19. 无人机蜂群拦截系统作战构想与关键技术论文解读
  20. 维克森林大学计算机科学专业好不好,备受推崇的维克森林大学到底是什么样的?...

热门文章

  1. 如何轻松恢复Windows 10/8/7中覆盖的文件
  2. 古井贡酒作为“老字号”走进故宫过大年
  3. 宁波大学计算机专业知名校友,校友会2020宁波市最好大学排名,宁波大学第一...
  4. pt-osc 文档使用说明
  5. Activiti动态审批实现方案
  6. 6sigma(六西格玛)黄带认证学习
  7. 网络机顶盒usb调试模式打开
  8. 房产营销、地产中介如何高效低成本获客?
  9. php dreamweaver转编码,用DW软件批量实现html编码转换的详细步骤 另附utf-8与gb2312互转软件小工具...
  10. 2D Toolkit教程