jenkins基础与gitlab代理自动构建

持续集成之 Jenkins+Gitlab 简介:

持续集成概念:

持续集成 Continuous Integration

持续交付 Continuous Delivery

持续部署 Continuous Deployment

 

什么是持续集成:

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

 

什么是持续交付:

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

 

持续部署:

扫描二维码关注公众号,回复: 8680629 查看本文章

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

 

部署代码上线流程:

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.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzi9enzO1wD4l3429Qk7sSpkJE2oacjdpmDaThf5UniqPua6p0DF/VJ/p0l0uSdf2ZPpraoe+JaaJTTy05+AqdSl+zsn4hvzZuy7Kxu9/W+HUaiS87WPw8nYA5xVElMnupNUAeJPQ4GvLsEJ2CLFCS0FA8QBt8Sx/TLnjp6MCkEb/FRXotRUHplRXQcMcVikLL9xRPVARvn1ac3sxiYahcQNiq/qo8sztQ0AyeLNiGo6iiRsXbuPMSV5wvqiR3eYXv9Ou9Ttch2tqyMH8X6nf2MYhVIsXMBvpNTBAKpGjhhItAt/MqHVJ288kyDvL1Wo89wsRDn3Cu/YeaejHyAYhp [email protected]

将新建的项目克隆下来:

[root@localhost ~]# git config --global user.name "Administrator"

[root@localhost ~]# git config --global user.email [email protected]

[root@localhost ~]# git clone [email protected]:root/web-demo.git

[root@localhost ~]# cd  web-demo/

 

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

[root@localhost ~]# vim  index.html

nihao

[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/jenkins

JENKINS_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  8081

tcp6       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/initialAdminPassword

aa3e329424494a93bd9b0450f92c2e73

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

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

 

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+vh50wxO

z7G6/vO0sNODOaZfJv1N60VYhvW4kw+gKRPpCpwEFLg5DI/i8KwhlZz+lye2RTg9

zGkk1OcZWNw0T4dXCv563kRk97XNZtmwQIaryBG50r58k6zR1jFgLZJr1NRbhyxk

qiC1THVY9BVj2mSgsf7CoCJ1ylayvcfZdirj8X9GxUYGiwBhp6zVXJgj/g6ukkiv

mBZo0Eqwyrcn+FneaD89/oIVOhXFcdmMqLK8yqjtr/fQdOCaq5TZ3oLv1VhaRu6g

NxzzifzVdYn/sxkNRlWX2oQCB+8x5VJHiJzMdQIDAQABAoIBAQCiokDKPpkc88D4

E3EJoWX8ZKByvs1xw/GVcO/ftOIHgpNiV6hA7AkePNeON470Orv51qBdHT9LO8KD

mgpzW+EGWvAxzoklN9jkxxpWfvf12aLxUHBgz27QTSWuyPRrOXM5zem3T8Pudzq9

q1AihX4WjXlP/KLzANlbnu31yUoFtNXmxG8UdFGkUXK0m8v6FrTeVUlSEo5Fsb1u

vP84VKlgqLTkf3xs8yDtsT9uvlXOuMs5dPvFOW9Va4Lo6z9fMdE/N8UZ3S14SKAD

Ht1BlzYv+tUStBbXgw+X3TmQkIvk/gn2MDZB3Gj7U42+1qLklhehtcHomVJ5o4cu

tJIUwxdhAoGBAPurvxoOXzRQKZZ1bTBEJ3w3z3tbsT84mwTnD9zyA3cJIQRzNsJQ

xohjC+3YGf6VOpU25jFC3W7oXZWLRvzbYtChCn66FD05vm823Zhky2MUEf5+RE0d

WdYb52f3F/Jl9Neaj0DskuuVT4ImfI7eCUxbK8oDFTF5m8m988LaZf4ZAoGBAPJ8

43yz7tyquND2kohCMwxjotpSunz57bnwp0plEHkRMRGpp4MjdSN8MHgHDPPQQN6m

fK5tYMFAWqu4jtDy2guLgSYFqDWPzAqROBU4NBk09G2o0pmrJQBmiik021p6z9E6

ZA2jGZGM9ZmbMK2RnQQNmF5mpcH3mn9ng+QRcFS9AoGALI6ct+1Bd86Vfljt6vS2

FO0Ao/N47xuDfpu2GEUUzfdkzBfl4wNQEweOLh7rg0JCa/abTK9s6tzi7L4K5Gun

FA7e/87MFIbrq18IXpnB1JnSEb+jMg/3PswT7Tk3GShp794ibLk1zdXSjNVpihXP

iaA+oXZoQyknptElniLymckCgYA00VUvvXWi5SDai0rBmUHLSgyX53sta7cHUE7w

GnFrHX6FrWGKY/fI4e0gx9BfbxYiKTtxNuvjTCQz0UBybONnrlxULtlDyW2VQ6pm

nNZkQy+WjzZIOIoXuz4O2a+J1sRbe499lPAlzwFUEwSYWeZMkrWEonEqfcdORvro

e4/vNQKBgG1lLcT32WPWQ/Ir76yg/BJtWfXfJgQBZWc4h2SF/OcvJ38jd19YasTc

7QmVsdoNzM3hDzdhmg7TGN1mYNcLPBjyR3wangCZS7XHMmbkL1eNv5cbDrPbcuWS

BUdj3V8uVn3LVsQ85+MWCPKsWqsRBd06wBkG66DDtzldWno8ZRvR

-----END RSA PRIVATE KEY-----

源码库浏览器选择:gitlab

url写http协议

版本9.1

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

[root@localhost workspace]# pwd

/var/lib/jenkins/workspace

[root@localhost workspace]# ls

web-demo  web-demo@tmp

[root@localhost workspace]# ls  web-demo

index.html

[root@localhost workspace]# cat web-demo/index.html

nihao

 

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  10

53a9615e532cbce5cc0c

勾选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] 1

 1 file changed, 12 insertions(+)

 create mode 100644 python.py

[root@localhost web-demo]# git push  origin master

Counting 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 [email protected]:root/web-demo.git

   5d397e5..e58ce19  master -> master

浏览器查看:

Jenkins已经完成了构建

发布了27 篇原创文章 · 获赞 14 · 访问量 572

猜你喜欢

转载自blog.csdn.net/weixin_45636702/article/details/103097104