持续集成之 Jenkins+Gitlab 简介:

持续集成概念:

持续集成 Continuous Integration

持续交付 Continuous Delivery

持续部署 Continuous Deployment

什么是持续集成:

持续集成是指开发者在代码的开发过程中,可以频繁的将代码部署集成到主干,并进程自动化测试

什么是持续交付:

持续交付指的是在持续集成的环境基础之上,将代码部署到预生产环境

持续部署:

在持续交付的基础上,把部署到生产环境的过程自动化,持续部署和持续交付的区别就是最终部署 到生产环境是自动化的

部署代码上线流程:

1.代码获取(直接了拉取)

2.编译      (可选)

3.配置文件放进去

4.打包

5.scp 到目标服务器

6.将目标服务器移除集群

7.解压并放置到 Webroot

8.Scp 差异文件

9.重启      (可选)

10.测试 11.加入集群

运维必知 OWASP:

Jenkins 上 OWASP 插件介绍: 它是开放式 Web 应用程序安全项目[OWASP,Open Web Application Secunity Project]

它每年会出一个 top10 的安全漏洞,我们需要知道当前 top10 的漏洞有哪些

https://www.owasp.org/images/5/57/OWASP_Proactive_Controls_2.pdf

https://www.owasp.org/index.php/Top_10_2013-Top_10

Gitlab 介绍:

GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库, 可通过 Web 界面进行访问公开的或者私人项目

GitLab 拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库 的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可 以轻松实现代码复用,便于日后有需要的时候进行查找

安装gitlab:

首先安装一个git客户端:

[root@localhost web-demo]# yum  -y  install  git

安装gitlab-ce,并配置启动:

[root@localhost ~]# rpm  -ivh  gitlab-ce-11.9.8-ce.0.el6.x86_64.rpm[root@localhost ~]# gitlab-ctl   reconfigure[root@localhost ~]# vim  /etc/gitlab/gitlab.rb

修改:

external_url 'http://192.168.1.10'[root@localhost ~]# gitlab-ctl   reconfigure

gitlab 常用命令:

关闭 gitlab:gitlab-ctl stop启动 gitlab:gitlab-ctl start重启 gitlab:gitlab-ctl restart

web访问192.168.1.10

Web 页面提示我们需要设置一个账号密码(我们要设置最少 8 位数的一个账号密码)

设置完成后进行登录,默认用户名是root:

进来之后新建一个项目:

设置ssh密钥:

[root@localhost ~]# ssh-keygen   -t rsa[root@localhost ~]# cat /root/.ssh/id_rsa.pubssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzi9enzO1wD4l3429Qk7sSpkJE2oacjdpmDaThf5UniqPua6p0DF/VJ/p0l0uSdf2ZPpraoe+JaaJTTy05+AqdSl+zsn4hvzZuy7Kxu9/W+HUaiS87WPw8nYA5xVElMnupNUAeJPQ4GvLsEJ2CLFCS0FA8QBt8Sx/TLnjp6MCkEb/FRXotRUHplRXQcMcVikLL9xRPVARvn1ac3sxiYahcQNiq/qo8sztQ0AyeLNiGo6iiRsXbuPMSV5wvqiR3eYXv9Ou9Ttch2tqyMH8X6nf2MYhVIsXMBvpNTBAKpGjhhItAt/MqHVJ288kyDvL1Wo89wsRDn3Cu/YeaejHyAYhp root@localhost.localdomain

将新建的项目克隆下来:

[root@localhost ~]# git config --global user.name "Administrator"[root@localhost ~]# git config --global user.email admin@admin.com[root@localhost ~]# git clone git@192.168.1.10:root/web-demo.git[root@localhost ~]# cd  web-demo/

模拟开发继续写代码提交:

[root@localhost ~]# vim  index.htmlnihao[root@localhost ~]# git add  index.html[root@localhost ~]# git commit  -m "1"[root@localhost ~]# git push  -u  origin  master

git push 命令用于将本地分支的更新,推送到远程主机。它的格式与 git pull 命令相仿

刷新浏览器就能看到了:

自动化运维之 DevOps:

DevOps(英文 Development(开发)和 Operations(技术运营)的组合)是一组过程、方法与 系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、 协作与整合

它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作 必须紧密合作

简单的来说 DevOps 是一种文化,是让开发开发、运维、测试能够之间沟通和交流

自动化运维工具:saltstack、jenkins、等。因为他们的目标一样,为了我们的软件、构建、 测试、发布更加的敏捷、频繁、可靠

如果运维对 git 不熟,是无法做自动化部署。因为所有的项目都受制于开发

Jenkins 介绍:

Jenkins 只是一个平台,真正运作的都是插件。这就是 jenkins 流行的原因,因为 jenkins 什么插 件都有

Hudson 是 Jenkins 的前身,是基于 Java 开发的一种持续集成工具,用于监控程序重复的工作,Hudson 后来被收购,成为商业版。后来创始人又写了一个 jenkins,jenkins 在功能上远远超过 hudson

Jenkins 官网:https://jenkins.io/

安装:

[root@localhost ~]# rpm  -ivh  jenkins-2.172-1.1.noarch.rpm修改他的端口号:默认是8080,因为和gitlab冲突了,所以我们修改为8081[root@localhost ~]# vim  /etc/sysconfig/jenkinsJENKINS_PORT="8081"

使离线安装:

[root@localhost ~]# tar zxf jenkins-plugins.tar.gz  -C  /var/lib/jenkins/[root@localhost ~]# /etc/init.d/jenkins  start[root@localhost ~]# netstat  -anput  |  grep  8081tcp6       0      0 :::8081                 :::*                    LISTEN      11296/java

浏览器访问192.168.1.10:8081

查看/var/lib/jenkins/secrets/initialAdminPassword,将密码复制

[root@localhost web-demo]# cat  /var/lib/jenkins/secrets/initialAdminPasswordaa3e329424494a93bd9b0450f92c2e73

因为是使用离线安装所以这时候需要断网,然后点击继续:

来到这个界面就可以联网了:

Jenkins创建项目拉去gitlab上的代码:

新建任务----构建自由风格的软件----web-demo---源码管理----git

这里报错:

无法连接到存储库:命令“ git ls-remote -h http://192.168.1.10/root/web-demo.git HEAD”返回状态码128
stdout
stderr:致命:'http//的身份验证失败192.168.1.10/root/web-demo.git/'

解决方案:

[root@localhost web-demo]# cat /root/.ssh/id_rsa-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCAQEA7mMhexS9iijP4uShyldzmBsNhrEeYLy8qDBDbdb0+vh50wxOz7G6/vO0sNODOaZfJv1N60VYhvW4kw+gKRPpCpwEFLg5DI/i8KwhlZz+lye2RTg9zGkk1OcZWNw0T4dXCv563kRk97XNZtmwQIaryBG50r58k6zR1jFgLZJr1NRbhyxkqiC1THVY9BVj2mSgsf7CoCJ1ylayvcfZdirj8X9GxUYGiwBhp6zVXJgj/g6ukkivmBZo0Eqwyrcn+FneaD89/oIVOhXFcdmMqLK8yqjtr/fQdOCaq5TZ3oLv1VhaRu6gNxzzifzVdYn/sxkNRlWX2oQCB+8x5VJHiJzMdQIDAQABAoIBAQCiokDKPpkc88D4E3EJoWX8ZKByvs1xw/GVcO/ftOIHgpNiV6hA7AkePNeON470Orv51qBdHT9LO8KDmgpzW+EGWvAxzoklN9jkxxpWfvf12aLxUHBgz27QTSWuyPRrOXM5zem3T8Pudzq9q1AihX4WjXlP/KLzANlbnu31yUoFtNXmxG8UdFGkUXK0m8v6FrTeVUlSEo5Fsb1uvP84VKlgqLTkf3xs8yDtsT9uvlXOuMs5dPvFOW9Va4Lo6z9fMdE/N8UZ3S14SKADHt1BlzYv+tUStBbXgw+X3TmQkIvk/gn2MDZB3Gj7U42+1qLklhehtcHomVJ5o4cutJIUwxdhAoGBAPurvxoOXzRQKZZ1bTBEJ3w3z3tbsT84mwTnD9zyA3cJIQRzNsJQxohjC+3YGf6VOpU25jFC3W7oXZWLRvzbYtChCn66FD05vm823Zhky2MUEf5+RE0dWdYb52f3F/Jl9Neaj0DskuuVT4ImfI7eCUxbK8oDFTF5m8m988LaZf4ZAoGBAPJ843yz7tyquND2kohCMwxjotpSunz57bnwp0plEHkRMRGpp4MjdSN8MHgHDPPQQN6mfK5tYMFAWqu4jtDy2guLgSYFqDWPzAqROBU4NBk09G2o0pmrJQBmiik021p6z9E6ZA2jGZGM9ZmbMK2RnQQNmF5mpcH3mn9ng+QRcFS9AoGALI6ct+1Bd86Vfljt6vS2FO0Ao/N47xuDfpu2GEUUzfdkzBfl4wNQEweOLh7rg0JCa/abTK9s6tzi7L4K5GunFA7e/87MFIbrq18IXpnB1JnSEb+jMg/3PswT7Tk3GShp794ibLk1zdXSjNVpihXPiaA+oXZoQyknptElniLymckCgYA00VUvvXWi5SDai0rBmUHLSgyX53sta7cHUE7wGnFrHX6FrWGKY/fI4e0gx9BfbxYiKTtxNuvjTCQz0UBybONnrlxULtlDyW2VQ6pmnNZkQy+WjzZIOIoXuz4O2a+J1sRbe499lPAlzwFUEwSYWeZMkrWEonEqfcdORvroe4/vNQKBgG1lLcT32WPWQ/Ir76yg/BJtWfXfJgQBZWc4h2SF/OcvJ38jd19YasTc7QmVsdoNzM3hDzdhmg7TGN1mYNcLPBjyR3wangCZS7XHMmbkL1eNv5cbDrPbcuWSBUdj3V8uVn3LVsQ85+MWCPKsWqsRBd06wBkG66DDtzldWno8ZRvR-----END RSA PRIVATE KEY-----

源码库浏览器选择:gitlab

url写http协议

版本9.1

回到jenkins主界面就可以看到刚才创建的项目---选择立即构建 ---构建比那好下点击控制台输出就可以看出详细信息

[root@localhost workspace]# pwd/var/lib/jenkins/workspace[root@localhost workspace]# lsweb-demo  web-demo@tmp[root@localhost workspace]# ls  web-demoindex.html[root@localhost workspace]# cat web-demo/index.htmlnihao

gitlab代理自动构建:

这是自己手动构建的,非常不方便,然后我么设置自动构建:

首先jenkins更换国内源:

百度搜索:清华大学jenkins地址

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json1

系统管理---插件管理—高级

系统设置----插件管理---高级---上传gitlab-oauth、gitlab-plugin、windows-slaves、rub-runtime、gitlab-hook插件

将这几个插件上传:要按顺序上传

系统管理---全局安全色湖之---授权策略---取消勾选防止跨站点请求伪造---勾选匿名用户奴有可读权限:

系统管理—系统设置---取消勾选Enable authentication for '/project' end-point

web-demo---配置---构建触发器---勾选出发远程构建---构建身份令牌(在终端执行openssl  rand  -hex  10)

[root@localhost workspace]# openssl  rand  -hex  1053a9615e532cbce5cc0c勾选Build when a change is pushed to GitLab. GitLab webhook URL: http://192.168.1.10:8081/project/web-demo

回到gitlab的web界面---点击小钳子---settings—Network—Outbound requests---勾选Allow requests  to  the  local  network 

点击projects—your project---web-demo—settings---Integrations---填写URL地址

往下拉---取消勾选Enable SSL verification

完成之后会有下面会有一个webhook点击test进行测试,出现201状态吗表示成功:

回到终端进入刚才项目的目录下上传一个文件到gitlab,测试jenkin是否会自动构建:

[root@localhost ~]# cd  web-demo/[root@localhost web-demo]# vim  python.py[root@localhost web-demo]# git add  python.py[root@localhost web-demo]# git commit  -m  "1"[master e58ce19] 11 file changed, 12 insertions(+)create mode 100644 python.py[root@localhost web-demo]# git push  origin masterCounting objects: 4, done.Compressing objects: 100% (3/3), done.Writing objects: 100% (3/3), 274 bytes | 0 bytes/s, done.Total 3 (delta 0), reused 0 (delta 0)To git@192.168.1.10:root/web-demo.git5d397e5..e58ce19  master -> master

浏览器查看:

Jenkins已经完成了构建

jenkins基础与gitlab代理自动构建相关推荐

  1. Jenkins 利用 Gitlab + Webhook 自动构建 —— Hook executed successfully but returned HTTP 403

    1.Jenkins安装插件 GitLab Plugin. 2.开启用户api认证,并记录好用户ID和生成的Token ,在Gitlab访问jenkins时URL中会用到. 此处生成的token: 3. ...

  2. Jenkins集成GitLab Webhooks自动化构建

    Jenkins+GitLab Webhooks自动构建项目 1 构建步骤 1.1 Jenkins中设置构建触发器 1.2 Build Authorization Token Root插件安装 1.3 ...

  3. 怎么把项目推到gitlab上_Gitlab利用Webhook+jenkins实现自动构建与部署

    之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台.通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布. 这种方式每次在发版的时候,需要人工去执行j ...

  4. gitlab 自动推送代码到gitee_Gitlab 利用 Webhook+jenkins 实现自动构建与部署

    之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台.通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布. 这种方式每次在发版的时候,需要人工去执行j ...

  5. gitlab hook触发jenkins自动构建

    意义,gitlab推送或合并代码后触发jenkin自动构建发布代码或者执行命令推送规则 1.安装gitlab和hook插件 有时需要重启jenkins服务,可能兼容性问题,安装完之后构建中看不到hoo ...

  6. gitlab+jenkins 利用webhook自动构建代码

    每次代码push后,还要去手动点jenkins构建,感觉这一步挺多余的,想省掉这一步.google了下,有很多种方式,这次采用gitlab的webhook来触发jenkins,实现自动构建. 版本 系 ...

  7. Gitlab+Jenkins+Artifactory, CI/CD自动构建发布环境搭建使用实践

    CI/CD自动构建发布环境搭建使用实践 通过C/C++的cmake工程示例项目,构建Gitlab+Jenkins+Artifactory自动构建发布环境.其中 Gitlab提供源码仓库功能,通过web ...

  8. jenkins与gitlab集成,分支提交代码后自动构建任务(六)

    一.在gitlab中创建token 复制token,此token只显示一次:6SB8y4jt31NnYG5-nWoi 二.在gitlab上为项目创建trunk分支 三.在jenkins中配置gitla ...

  9. 解放双手 | Jenkins + gitlab + maven 自动打包部署项目

    前言 记录 Jenkins + gitlab + maven 自动打包部署后端项目详细过程! 需求背景 不会偷懒的程序员不是好码农,传统的项目部署,有时候采用本地手动打包,再通过ssh传到服务器部署运 ...

  10. 【完整示例】采用jenkins pipeline实现自动构建并部署至k8s

    前言 在日常开发中,经常会有发布的需求,而且经常会碰到各种环境,比如:开发环境.测试环境.生产环境.虽然可以使用手动构建.上传服务器部署的方式,但在微服务架构下一个项目经常包含多个微服务的部署,如果用 ...

最新文章

  1. PAT甲级1004 Counting Leaves (30分):[C++题解]树、邻接表存储树、dfs遍历树
  2. 需求用例分析之六:业务用例之科伯恩系
  3. 你真的会用storyboard开发吗?
  4. 电子商务应用课程知识整理 第五章-搜索引擎优化(SEO)
  5. 前端学习(3248):react的生命周期getSnapBeforeUpdate举例
  6. 【Pascal's Triangle II 】cpp
  7. AI研究公司面试准备指南
  8. 用Yum安装最新的MySQL版本
  9. 包邮送50本数据分析,MySQL,Python相关书籍
  10. 短信平台API接口集成指南
  11. matlab模拟光伏发电,一种基于MATLAB的小型独立光伏发电仿真模型的制作方法
  12. KiKaFramework V1.1发布
  13. 怎么计算中国股市分红最高的股票?什么是股息率?--使用python和tushare获取分红最高的股票
  14. 破案了!不会讲笑话不会作诗的chatGPT!
  15. Java抽象类(abstract)
  16. 织梦标签全攻略[转]
  17. js正则验证身份证号码是否真实有效
  18. 英文文献翻译成中文,推荐哪个软件?
  19. 计算机网络——(3)网络体系结构和协议
  20. windbg调试驱动学习总结

热门文章

  1. fg-bg Assignment Imbalance problem
  2. nero6.0使用教程
  3. 视频流中的DTS/PTS到底是什么?
  4. 红外光电测速传感器电路设计
  5. build Variants创建不同配置的app(图文详解)
  6. 开源运维管理平台(ows) damo版本源码发布
  7. 占优策略名词解释_占优策略均衡
  8. virtual memory exhausted: Cannot allocate memory
  9. python自动化(六)持续集成:2.Jenkins技术讲解
  10. sap销售发货的流程_SAP标准业务流程-销售订单处理