Jenkins

官网 jenkins.io
Jenkins是一个开源软件项目,提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
下载 jenkins:https://pkg.jenkins.io/redhat-stable/
下载JDK环境:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
安装JDK运行环境和jenkins服务上传JDK和jenkins rpm安装包,使用rpm ‐ivh进行安装,安装完JDK运维java测试是否安装成功

1 配置jenkins

[root@jenkins ~]#: vim /etc/sysconfig/jenkins
29 JENKINS_USER="jenkins
改为
29 JENKINS_USER="root"

启动jenkins

[root@jenkins ~]#: systemctl start jenkins

访问10.0.0.21:8080

1.1 正常情况下启动

image.png

image.png

这里也可以自己安装想要的插件


image.png

1.2 非正常情况启动(卡在了初始画面)

拔网线执行以下步骤:


image.png

image.png

1.3 重新设置密码

image.png

2 jenkins 家目录及文件说明

[root@jenkins ~]#: cd /var/lib/jenkins/
-rw-r--r-- 1 root root 1644 Apr 25 20:25 config.xml            配置文件
-rw-r--r-- 1 root root  156 Apr 25 20:14 hudson.model.UpdateCenter.xml     jinkens前身就是hudson
-rw------- 1 root root 1712 Apr 25 20:14 identity.key.enc
-rw-r--r-- 1 root root   94 Apr 25 20:14 jenkins.CLI.xml
-rw-r--r-- 1 root root    7 Apr 25 20:25 jenkins.install.InstallUtil.lastExecVersion
-rw-r--r-- 1 root root    7 Apr 25 20:25 jenkins.install.UpgradeWizard.state
-rw-r--r-- 1 root root  171 Apr 25 20:14 jenkins.telemetry.Correlator.xml
drwxr-xr-x 2 root root    6 Apr 25 20:14 jobs
drwxr-xr-x 3 root root   19 Apr 25 20:14 logs
-rw-r--r-- 1 root root  907 Apr 25 20:14 nodeMonitors.xml
drwxr-xr-x 2 root root    6 Apr 25 20:14 nodes
drwxr-xr-x 2 root root    6 Apr 25 20:14 plugins
-rw-r--r-- 1 root root   64 Apr 25 20:14 secret.key
-rw-r--r-- 1 root root    0 Apr 25 20:14 secret.key.not-so-secret
drwx------ 4 root root  265 Apr 25 20:14 secrets
drwxr-xr-x 2 root root   24 Apr 25 20:14 userContent
drwxr-xr-x 3 root root   56 Apr 25 20:14 users               用户的信息
drwxr-xr-x 2 root root    6 Apr 25 20:50 workflow-libs
drwxr-xr-x 3 root root   18 Apr 26 09:23 workspace      构建项目的信息

2.1 忘记密码暴力修改

[root@jenkins admin_2107860204952557741]#: vim /var/lib/jenkins/users/admin_2107860204952557741/config.xml 
 33       <passwordHash>#jbcrypt:$2a$10$1y6UxV7tbrHAGcCSR67UpeYHckLjukRdmY5iae25mHsj/zcnDDpMe</passwordHash>
把哈希值替换成你知道的密码的哈希值
<passwordHash>#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS</passwordHash>这个是密码位111111的Hash

解压缩文件包到plugins,在重启服务

[root@jenkins plugins]#: systemctl restart jenkins

3 构建jenkins项目

3.1 构架一个测试的项目

image.png

image.png

去gitlab管理端把之前的测试项目,拉取到jenkins下


image.png

来到jenkins端(需要提前做好免密钥并测试)
image.png

image.png

image.png

在去jenkins的家目录下面看看有没有数据

[root@jenkins jenkins]#: cd workspace/test/
[root@jenkins test]#: cat test.txt 
第二次合并

4 代码上线

4.1 从码云上拉取一个真实的环境

码云就相当于国内的gitlab。
https://gitee.com/kangjie1209/monitor在这里拉取代码,
介绍:监控系统完整html页面,适合用来做监控类型.基于Bootstrap的完美后台管理框架,开箱即用

4.2 在准备一台新机器,简单配置nginx

[root@nginx01 html]# vim /etc/nginx/conf.d/test.conf 
server{
    listen 80;
    server_name 10.0.0.7;
    location / {
       root /html/test;
       index   index.html;
 }
}
[root@nginx01 html]# vim /html/test/index.html 
111
[root@nginx01 html]# curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Fri, 26 Apr 2019 01:52:35 GMT
Content-Type: text/html; charset=utf-8,gbk
Content-Length: 4
Last-Modified: Fri, 26 Apr 2019 01:49:59 GMT
Connection: keep-alive
ETag: "5cc263c7-4"
Accept-Ranges: bytes
[root@nginx01 html]# mv /html/test/index.html /tmp/

4.3 拉取代码

image.png
[root@nginx01 test]# git clone https://gitee.com/kangjie1209/monitor.git
Cloning into 'monitor'...
remote: Enumerating objects: 435, done.
remote: Counting objects: 100% (435/435), done.
remote: Compressing objects: 100% (381/381), done.
remote: Total 435 (delta 54), reused 390 (delta 44)
Receiving objects: 100% (435/435), 8.78 MiB | 574.00 KiB/s, done.
Resolving deltas: 100% (54/54), done.
[root@nginx01 test]# mv monitor/* .

这样就完成里一次代码上线


image.png

我们把源码从码云上拉取到gitlab上托管起来,然后jenkins在去gitlab上获取代码,再使用jenkins推送到站点目录下面,完成自动化上线。

4.4

复制刚才的连接,去gitlab上面新建一个项目


image.png

image.png

4.5 jenkins命令行测试

[root@jenkins tmp]#: git clone git@10.0.0.20:test/monitor.git
Cloning into 'monitor'...
remote: Enumerating objects: 435, done.
remote: Counting objects: 100% (435/435), done.
remote: Compressing objects: 100% (372/372), done.
remote: Total 435 (delta 53), reused 435 (delta 53)
Receiving objects: 100% (435/435), 8.78 MiB | 3.87 MiB/s, done.
Resolving deltas: 100% (53/53), done.

4.5 jenkins构建monitor项目

image.png

image.png

image.png

4.6 自动上线

发送公钥到nginx服务器

[root@jenkins ~]#: ssh-copy-id -i .ssh/id_rsa.pub 10.0.0.7

编写脚本

#!/bin/bash
CODE_DIR="/var/lib/jenkins/workspace/monitor"
TIME=`date +%F-%H-%M-%S`
WEB1=10.0.0.7

CODE_TAR(){
cd $CODE_DIR
tar zcf /opt/web-${TIME}.tar.gz ./*
}
CODE_CP(){
scp /opt/web-${TIME}.tar.gz $WEB1:/html/
}
CODE_XF(){
ssh $WEB1 " cd /html/ && mkdir web-$TIME"
ssh $WEB1 " cd /html/ && tar xf web-${TIME}.tar.gz -C web-$TIME "
}
CODE_LN(){
ssh $WEB1 "cd /html/ && rm -rf web-${TIME}.tar.gz"
ssh $WEB1 "cd /html/ && rm -rf www && ln -s web-$TIME www"
}
main(){
        CODE_TAR
        CODE_CP
        CODE_XF
        CODE_LN
}
main

手动测试成功后配置jenkins


image.png

5 代码半自动上线

jenkins修改代码推送到gitlab

[root@jenkins monitor]#: vim /tmp/monitor/index.html 
  10         <title>测试测试</title>
  43             <a class="logo pull-left" href="index.html" style="width: 233px">测试测试</a>
[root@jenkins monitor]#: git commit -am 'index'
[root@jenkins monitor]#: git push -u origin master

推送前删除分支保护


image.png

6 代码自动上线

Jenkins构建触发器


image.png

Gitlab添加钩子信息


image.png

image.png

报错的解决办法
image.png

image.png

结果检查


image.png

继续修改index.html文件模拟测试,
[root@jenkins monitor]#: vim /tmp/monitor/index.html 
  43             <a class="logo pull-left" href="index.html" style="width: 233px">脚本自动化上线测试</a>
[root@jenkins monitor]#: git commit -am 'index3'
[root@jenkins monitor]#: git push -u origin master
image.png

7 构建后的操作

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335