jenkins自动化部署及三种构建部署方式

jenkins自动化部署及三种构建部署方式jenkins 介绍 jenkins 是基于 java 开发的一种持续集成工具 用于监控持续重复的工作 功能包括 1 持续的软件版本发布 测试 2 监控外部调用执行项目 Jenkins 其实很早之前就有了 最近火起来的原因是 大家都在关注 devops 关注如何来做持续集成 持续交付 如何来做 CI CD Jenkins 作为持续集成的工具 他其实只是一个平台或者是一个大的框架 它的工作完全就是依靠插件 也就是说你想使用什么功能 你就找到什么样的插件

jenkins介绍部署及三种构建方式配置

 自动化
 西门飞冰 
 1年前 (2016-11-27) 
 9638℃ 
 0评论
[隐藏]

  • 1前言
    • 1.1jenkins介绍
    • 1.2jenkins好处
    • 1.3我的jenkins实践
    • 1.4jenkins使用前提
  • 2jenkins部署
    • 2.1下面内容介绍
    • 2.2环境介绍
    • 2.3jenkins安装
  • 3插件安装
    • 3.1手动下载jenkins插件
  • 4Jenkins密钥配置
  • 5jenkins触发式构建
  • 6jenkins参数化构建
  • 7jenkins定时构建
  • 8Jenkins用户权限设置
    • 8.1新创建一个用户
    • 8.2用户权限设置

1.前言

1.1.jenkins介绍

jenkins是基于java开发的一种持续集成工具,用于监控持续重复的工作,功能包括。

1、持续的软件版本发布/测试

2、监控外部调用执行项目

Jenkins其实很早之前就有了,最近火起来的原因是,大家都在关注devops,关注如何来做持续集成,持续交付,如何来做CI/CD。Jenkins作为持续集成的工具,他其实只是一个平台或者是一个大的框架,它的工作完全就是依靠插件,也就是说你想使用什么功能,你就找到什么样的插件。

1.2.jenkins好处

1、我在工作中部署jenkins的最大好处就是每次在开发、测试环境代码,都无须运维部署,而是相关的开发人员,测试人员登录jenkins传入需要部署的tag即可,整个部署过程无须运维参与,解放运维劳动力。

2、安卓,IOS自动打包:虽然打包和运维关系不大,但是运维实现自动打包,使得产品同学,运营和测试同学可以每日验证产品开发进度以及及时反馈开发功能的方向是否正确,对公司贡献还是不小的。

1.3.我的jenkins实践

由于我们在使用jenkins之前,有自动化部署的shell脚本和上线流程,使用jenkins也就是让开发,测试人员可以通过一个web界面来执行脚本,实现部署。

我们公司一个产品线有四个环境,开发环境,测试环境,预上线环境,生产环境。除了生产环境之外都是通过jenkins来部署代码。

我们在生产实践中,jenkins使用到了下面三种部署方式:

jenkins触发式构建:用于开发环境部署开发人员push代码或者合并代码到gitlab项目的master分支,jenkins就部署代码到对应服务器。

jenkins参数化构建:用于测试环境预上线环境部署,开发push代码或者合并代码到gitlab项目的master分支之后,并不会部署代码,而是需要登录到jenkins的web界面,点击构建按钮,传入对应的参数(比如参数需要构建的tag,需要部署的分支)然后才会部署。

jenkins定时构建:用于APP自动打包,定时构建是在参数化构建的基础上添加的,开发人员可以登录jenkins手动传入tag进行打包,如果不手动打包,那么jenkins就每天凌晨从gitlab拉取最新的APP代码打包。

补充一下:jenkins不光可以用来部署代码,还可以这么玩(虽然我没有这么干过,但是你有兴趣可以试试):

1、各种服务的备份也可以放到jenkins上面,每天使用jenkins定时备份,还可以在jenkins看每天备份的输出信息。

2、各种开发需要找你的工作,比如同步生产数据库到开发环境,这个也可以放到jenkins上面,开发每次需要同步,就登录jenkins找到数据库同步的job,点击构建,就自动同步了。

1.4.jenkins使用前提

(1)得到领导的支持,我在公司推动jenkins部署APP自动打包,可以说是前段,后端,移动端,测试,产品等人员都需要沟通,这种情况下得到领导的支持在推动好处还是大大的。

(2)你们公司的代码需要一个分支管理规范,代码没有一个好的分支管理规范,自动部署是玩不了的。可以参考Git 分支管理最佳实践看看那种方式适合你们公司。

(3)使用jenkins之前,你需要有通过shell实现自动化部署代码的成功经验。

(4)持续集成最好有自动化测试,没有也行,但是最好让开发人员提供一些api的监控脚本,每次构建之后验证部署是否正常。

2.jenkins部署

2.1.下面内容介绍

(1)jenkins的安装配置

(2)jenkins插件自动/手动安装

(3)jenkins触发式构建配置

(4)jenkins参数化构建配置

(5)jenkins定时构建配置

(6)jenkins用户权限配置

2.2.环境介绍

操作系统:Centos 7.2

jenkins版本:2.33

gitlab版本:8.13.6

两台服务器:

192.168.100.10:jenkins Server

192.168.100.11 :gitlab Server

2.3.jenkins安装

(1)jenkins是java编写的,所以需要先安装jdk,这里使用yum安装。

1
yum -y 
install
java-1.8.0 java-devel-1.8.0

jenkins还需要从gitlab拉取代码,所以我们需要安装git命令行客户端

1
[root@node1 ~]
# yum -y install git

(2)安装jenkins

1
2
3
4
5
cd
/etc/yum
.repos.d/
wget http:
//pkg
.jenkins.io
/redhat/jenkins
.repo
rpm --
import
http:
//pkg
.jenkins.io
/redhat/jenkins
.io.key
yum 
install
-y jenkins
systemctl start jenkins

1
2
[root@Jenkins ~]
# cat /var/lib/jenkins/secrets/initialAdminPassword
2862d2ffc9aa40e1b80039e8ad9810ea

(4)选择安装的插件:只需要安装gitlab plugin,git plugin,还有ssh plugin插件即可,其他插件无须安装。

gitlab 和 git插件:我们的代码都放在gitlab上面,这两个插件用来做源码管理。

ssh插件:需要使用jenkins来执行shell命令。

image002

创建admin用户:按照提示填写即可

image003

密码创建完成之后就可以登录jenkins了。

3.插件安装

如果在安装jenkins的时候没有安装相关插件,可以按照如下方式安装(已经安装,则不需要)

1、安装gitlab插件,直接在系统管理>插件管理中搜索gitlab相关插件安装即可。

image004

2、shell插件:还是刚才的位置搜索ssh 选择ssh plugin插件安装即可。

image006

3.1.手动下载jenkins插件

插件下载地址:http://updates.jenkins-ci.org/download/plugins/

如果有插件一直安装失败的情况,可以从jenkins官网下载插件,然后导入到jenkins。

示例:我从官方下载gitlab-plugin插件到本地,然后导入到jenkins中。

在jenkins插件管理->高级选择上传插件进行安装。

image008

4.Jenkins密钥配置

1
2
[root@node1 ~]
# grep jenkins /etc/passwd
jenkins:x:993:990:Jenkins Continuous Integration Server:
/var/lib/jenkins
:
/bin/bash

登录到jenkins用户生成密钥

1
2
3
4
[root@node1 ~]
# su - jenkins
bash
-4.2$ 
ssh
-keygen -t rsa
bash
-4.2$ 
cat
.
ssh
/id_rsa
.pub
ssh
-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwIdUk3+V8aL2
/oMfvwCxp5AiyctL4bnYFnsKOcQz8w/MuAehy9/EEeT0HNQCSs0NQ3veFurWlKUB4tntNA7bMcZS/UWBSXh2uAJQCMcXbIWfdngaQwVVP
+s5WvDbtL5Jk6mQch22aIIw4JaJh4L8dl1oyviwoBgOnscXVC
/kDWgFM4BrHC4QNyzt6PdtuzX3RkMa4w7bqDvUWMqIyRBScW1fbfJeAwAK1tCQ7ZjfAoTcWpmoBlurH1P6SuWR3rYIPyhGDqjPQnlohqSX/vCrLWoHoYazETHfW2azzzBSGqMeCw3hlbSV/12kRQv0kGfnbhmnHZ1CBgX23N3ktqtzL

把这个密钥添加到gitlab还有jenkins服务器的root用户

1
-
bash
-4.2$ git clone git@192.168.100.11:root
/jenkins_test
.git

(2)添加公钥到jenkins服务器root用户,用来执行部署脚本

1
2
-
bash
-4.2$ 
ssh
-copy-
id
-i .
ssh
/id_rsa
.pub root@192.168.100.10
root@192.168.100.10's password:

5.jenkins触发式构建

(1)准备一个测试脚本,看开发如何提交代码就执行这个构建操作。

1
2
3
4
[root@node1 ~]
# cat /shell/deploy/test/jenkins_trigger.sh
#!/bin/bash
echo
"部署脚本被执行"
[root@node1 ~]
# chmod +x /shell/deploy/test/jenkins_trigger.sh

注意:如果是生产配置,直接把这个脚本换成对应项目的上线脚本即可,jenkins配置无须修改。

(2)创建一个触发构建的项目,选择自由软件风格即可

image010

(3)源码管理选择git,然后只需要在repository url中输入git仓库地址即可。

image011

(4)构建,选择execute shell,执行部署脚本即可

image012

(5)触发器配置:即gitlab有提交操作,则自动部署,这里只需要设置一个认证的token即可,gitlab调用触发器,需要使用 JENKINS_URL/job/new_cms/build?token=TOKEN_NAME即可

image013

(6)在系统管理–>用户管理–>查看用户id和token,需要把用户id和API Token加入触发器中,做用户验证

image014
根据触发器验证令牌和用户id+token会生成一个下面的url,只需要访问这个URL地址jenkins就会自动部署对应项目的代码。

1
http:
//admin
:984c9edf027e750f0fab0c3f9b@192.168.100.10:8080
/job/jenkins_trigger/build
?token=hehe

(7)gitlab配置webhooks,每次提交代码就访问这个url,执行构建

image015

URL这里输入上面上面用户ID+API token+job token生成的URL地址即可。触发工作选择,push event,merge request event即可。

 

image016

(8)在jenkins全局在jenkins全局安全设置中取消勾选“防止跨站点请求伪造,不然jenkins会认为gitlab的请求不合法。

image017

(9)添加完成测试:点击test模拟提交操作,看看是否会执行自动构建

image018

如果执行成功会返回如下显示,说明执行钩子成功

image019

Jenkins查看,可以看到构建也是成功的。

image020

6.jenkins参数化构建

(1)准备一个测试的脚本

1
2
3
4
5
6
#!/bin/bash
git_pro(){
  
echo
"拉取$1代码"
}
 
git_pro $1

(2)创建一个参数化构建的项目

image021

(3)选择构建的参数:这里设置一个tag参数,就是每次执行job之前都需要传入这个tag

image022

(4)设置执行部署的脚本

image023

(5)选择创建的job执行构建

image024

Tag处传入需要部署的tag即可

image025

构建完成查看构建的结果

image026

7.jenkins定时构建

定时构建一般用在安卓,ios打包,每天凌晨会拉取安卓,ios进行编译打包,并自动推送到共享。

示例:在上面的参数化构建示例上添加如下触发器,就是每天凌晨1:30分自动执行安卓或ios打包脚本,上面的参数化构建默认值是master就是每天从代码仓库的master分支拉取最新的代码打包。

image027

8.Jenkins用户权限设置

现在各种job已经设置好了,但是如果开发测试人员需要部署一个tag到服务器进行测试,那么就需要登录jenkins,这个时候就需要给开发和测试人员创建一个可以执行job的用户,方法如下。

8.1.新创建一个用户

系统管理–>用户管理–>新建用户,按照提示填入信息即可

image028

8.2.用户权限设置

系统管理–>Configure Global Security–> 给develop用户授权,主要给job build,cancel,read权限。用户登录jenkins就可以构建我们创建的job了。

 

转载请注明:西门飞冰的博客-专注于Linux运维 » jenkins介绍部署及三种构建方式配置

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209504.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午9:05
下一篇 2026年3月19日 上午9:05


相关推荐

  • 2026年OpenClaw(Clawdbot)安装接入skills保姆级教程

    2026年OpenClaw(Clawdbot)安装接入skills保姆级教程

    2026年3月13日
    2
  • 监控平台技术调研

    监控平台技术调研强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】随着业务不断迅速的扩展,我们的项目越来越多,越来越复杂;随之而来的是系统各种问题一直在困扰着我们;经过去网上调研以及之前的经验,我们决定引入监控平台;很庆幸自己能成为该技术的前期研究者;经过自己的调研以及实践,将监控平台从无到有搭建起来,目前正在各个系统中进行推广。…

    2022年5月9日
    36
  • PHP Ajax 跨域问题最佳解决方案

    PHP Ajax 跨域问题最佳解决方案

    2021年11月4日
    41
  • resnet讲解_resnet50网络结构详解

    resnet讲解_resnet50网络结构详解1、 RestNet网络1.1、 RestNet网络结构ResNet在2015年被提出,在ImageNet比赛classification任务上获得第一名,因为它“简单与实用”并存,之后很多方法都建立在ResNet50或者ResNet101的基础上完成的,检测,分割,识别等领域里得到广泛的应用。它使用了一种连接方式叫做“shortcutconnection”,顾名思义,shortcut就是“…

    2022年10月7日
    4
  • sql server 安装_安装wsl

    sql server 安装_安装wslPython2.7.7源码安装注意:1.同时安装相对应的numpy,pip,easy_install(注意不是系统自带的python2.6的pip或者easy_install)。2.原来的python不能删除,否则yum无法使用3.安装结束后测试yum能否使用教程链接:https://github.com/0xdata/h2o/wiki/Installing-p

    2025年7月17日
    7
  • Random之nextInt函数「建议收藏」

    Random之nextInt函数「建议收藏」1java中有一个类用于生成随机数字的:Random。该类的nextInt(intn)函数表示随机生成0~n之间的整数。如:intb=newRandom().nextInt(100);//0~参数之间,包括0,不包括参数本身System.out.println(b);2Random的nextInt(intn)生成的随机整数范围是0到n之间,不包括n。所以以后如果想要

    2022年7月22日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号