jenkins基础与gitlab代理自动构建
持续集成之 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代理自动构建相关推荐
- Jenkins 利用 Gitlab + Webhook 自动构建 —— Hook executed successfully but returned HTTP 403
1.Jenkins安装插件 GitLab Plugin. 2.开启用户api认证,并记录好用户ID和生成的Token ,在Gitlab访问jenkins时URL中会用到. 此处生成的token: 3. ...
- Jenkins集成GitLab Webhooks自动化构建
Jenkins+GitLab Webhooks自动构建项目 1 构建步骤 1.1 Jenkins中设置构建触发器 1.2 Build Authorization Token Root插件安装 1.3 ...
- 怎么把项目推到gitlab上_Gitlab利用Webhook+jenkins实现自动构建与部署
之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台.通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布. 这种方式每次在发版的时候,需要人工去执行j ...
- gitlab 自动推送代码到gitee_Gitlab 利用 Webhook+jenkins 实现自动构建与部署
之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台.通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布. 这种方式每次在发版的时候,需要人工去执行j ...
- gitlab hook触发jenkins自动构建
意义,gitlab推送或合并代码后触发jenkin自动构建发布代码或者执行命令推送规则 1.安装gitlab和hook插件 有时需要重启jenkins服务,可能兼容性问题,安装完之后构建中看不到hoo ...
- gitlab+jenkins 利用webhook自动构建代码
每次代码push后,还要去手动点jenkins构建,感觉这一步挺多余的,想省掉这一步.google了下,有很多种方式,这次采用gitlab的webhook来触发jenkins,实现自动构建. 版本 系 ...
- Gitlab+Jenkins+Artifactory, CI/CD自动构建发布环境搭建使用实践
CI/CD自动构建发布环境搭建使用实践 通过C/C++的cmake工程示例项目,构建Gitlab+Jenkins+Artifactory自动构建发布环境.其中 Gitlab提供源码仓库功能,通过web ...
- jenkins与gitlab集成,分支提交代码后自动构建任务(六)
一.在gitlab中创建token 复制token,此token只显示一次:6SB8y4jt31NnYG5-nWoi 二.在gitlab上为项目创建trunk分支 三.在jenkins中配置gitla ...
- 解放双手 | Jenkins + gitlab + maven 自动打包部署项目
前言 记录 Jenkins + gitlab + maven 自动打包部署后端项目详细过程! 需求背景 不会偷懒的程序员不是好码农,传统的项目部署,有时候采用本地手动打包,再通过ssh传到服务器部署运 ...
- 【完整示例】采用jenkins pipeline实现自动构建并部署至k8s
前言 在日常开发中,经常会有发布的需求,而且经常会碰到各种环境,比如:开发环境.测试环境.生产环境.虽然可以使用手动构建.上传服务器部署的方式,但在微服务架构下一个项目经常包含多个微服务的部署,如果用 ...
最新文章
- PAT甲级1004 Counting Leaves (30分):[C++题解]树、邻接表存储树、dfs遍历树
- 需求用例分析之六:业务用例之科伯恩系
- 你真的会用storyboard开发吗?
- 电子商务应用课程知识整理 第五章-搜索引擎优化(SEO)
- 前端学习(3248):react的生命周期getSnapBeforeUpdate举例
- 【Pascal's Triangle II 】cpp
- AI研究公司面试准备指南
- 用Yum安装最新的MySQL版本
- 包邮送50本数据分析,MySQL,Python相关书籍
- 短信平台API接口集成指南
- matlab模拟光伏发电,一种基于MATLAB的小型独立光伏发电仿真模型的制作方法
- KiKaFramework V1.1发布
- 怎么计算中国股市分红最高的股票?什么是股息率?--使用python和tushare获取分红最高的股票
- 破案了!不会讲笑话不会作诗的chatGPT!
- Java抽象类(abstract)
- 织梦标签全攻略[转]
- js正则验证身份证号码是否真实有效
- 英文文献翻译成中文,推荐哪个软件?
- 计算机网络——(3)网络体系结构和协议
- windbg调试驱动学习总结
热门文章
- fg-bg Assignment Imbalance problem
- nero6.0使用教程
- 视频流中的DTS/PTS到底是什么?
- 红外光电测速传感器电路设计
- build Variants创建不同配置的app(图文详解)
- 开源运维管理平台(ows) damo版本源码发布
- 占优策略名词解释_占优策略均衡
- virtual memory exhausted: Cannot allocate memory
- python自动化(六)持续集成:2.Jenkins技术讲解
- sap销售发货的流程_SAP标准业务流程-销售订单处理