使用Jenkins自动化构建工具进行敏捷开发

目录
  • 一、序言
  • 二、安装与使用
    • (一)安装
      • 1、查看初始密码
      • 2、修改默认工作空间
    • (二)使用
      • 1、构建配置
      • 2、添加项目
    • (三)免密登录
  • 三、触发策略
    • (一)定时触发
    • (二)URL 触发
    • (三)钩子触发
  • 附录、工具使用
    • 1、语言设置
    • 2、构建环境清单
    • 3、环境配置
    • 4、任务配置

一、序言

Jenkins 是一款自动化构建工具,能够基于 Maven 构建后端 Java 项目,也能够基于 nodejs 构建前端 vue 项目,并且有可视化 web 界面。

所谓自动化构建是按照一定的策略执行打包脚本,相对于普通脚本构建,Jenkins 有如下优势:

  • 构建队列中能够同时构建多个项目,包含前端和后端项目;
  • 定时构建;
  • 代码仓库触发构建(普通脚本无法实现);

Jenkins 体现一种项目管理思维:开发人员的贴心助理,集中精力专注于业务开发;尽早的实现代码集成(包含前后端)以便尽早发现问题;构建环境与开发环境隔离,为向生产环境迁移做好充足的准备。

构建过程全程自动化进行,无人工参与,配合 Docker 容易实现高效的项目部署与迁移。

二、安装与使用

Jenkins 是一个工具,既然是一个工具,便有相应的替代方案,因此不需要花工作的时间琢磨这个工具是如何工作的,将精力放在如何利用 Jenkins 提高敏捷开发效率上更有意义。

实践过程中,将项目的脚本化构建用 shell 编写成命令脚本,并附加在项目中,即使不使用 Jenkins,通过执行 shell 脚本也能够实现项目的自动化构建。这么做主要有如下考虑:

增强拓展性

即使没有 Jenkins,项目也能完成构建,增加构建的拓展性

减少对 Jenkins 的依赖

让 Jenkins 承担实践调度的角色,具体构建过程由标准化的脚本来完成。

既然 shell 脚本能够完成自动化构建,那么还需要用到 Jenkins 吗,是否冲突?答案是不冲突。shell 脚本配合 Jenkins 使用有两大方面优势:

使用 shell 脚本必须登录目标服务器,拥有相应的权限后,方能执行 shell 脚本,Jenkins 能够实现在不登录目标服务器的基础上,使用一对账号和密码,管理可视化的 Web 操作界面触发构建事件。

按需构建,开发者在提交完代码后,向 Jenkins 服务器发送一个信号,便可触发构建。

(一)安装

使用传送门快捷安装,启动后使用安装推荐插件,内置国内插件源,安装速度较快。

1、查看初始密码

cat ~/.jenkins/secrets/initialAdminPassword

2、修改默认工作空间

默认工作空间路径为~/.jnkins,运行 Jenkins 程序的用户空间下,构建完成后的项目,如果要放在第三方容器中运行时,有可能会出现找不到路径的情况,修改默认工作空间或者给予资源目录可执行权限都能解决此问题。

安装完成之后,暂时启动程序,先确认是否需要修改Jenkins_HOME变量,后续初始化以及插件的安装与此路径有关。此变量修改方式有多种,颗粒度较大的是配置在 PATH 环境变量中,颗粒度较小的是配置在运行 Jenkins 项目的容器中。

修改 Tomcat 的配置文件 context.xml,增加一行配置

<!-- 创建一个jenkins,并将其用户空间设置为JENKINS_HOME -->
<Environment name="JENKINS_HOME" value="/home/jenkins" type=java.lang.String/>

注意:JENKINS_HOME默认值为启动进程用户对应的用户空间,在启动前修改后即变成新的路径。

(二)使用

如果在配置远程 APiToken 触发不生效,请阅读免密登录章节。

1、构建配置

用脚本的方式构建 Jenkins 项目配置非常简单,尽管内置了很多花里胡哨的配置,这里用不到,不需要关心。

只需要在构建中添加执行 shell 脚本命令即可。附录中列举的环境配置统一在宿主机上完成,不在 Jenkins 服务内部配置,使用默认值即可。

2、添加项目

在宿主机上将待构建项目的源代码克隆到本地,执行 shell 脚本完成手动构建。在 Jenkins 管理工作台新建一个同名的空项目,将克隆的源代码整体复制到 Jenkins 的工作空间下,默认位置为/root/.jenkins/workspace,委托给 Jenkins 代为自动管理该项目。

(三)免密登录

使用 URL 触发构建事件,需要配置免密登录,即在不需要输入用户名和密码的情况下,通过远程调用 shell 脚本触发构建事件,此 shell 脚本本质上是 GET 的方式请求某个指定的路径。操作过程如下:

(1)安装插件

安装Build Authorization Token Root Plugin插件,如果已经存在,则忽略此步骤。此插件的作用是给当前登录的用户生成 Token,方便后续认证使用,一个用户可以配置多个 token。

(2)项目配置

在指定的项目中添加 token 配置,项目可以复用一个 token 或者每个项目单独设置一个 token,依据需要选择。只有添加此配置之后,使用 token 触发方能生效。

(3)客户端使用

编写脚本,将脚本分发给开发者,自动化构建便可以愉快的开始了。使用curl多参数时,&符号需要转义。

curl {Jenkins URL}/buildByToken/build?job={项目名}\&token={token}

至此,CI/CD敏捷开发配置完毕。

三、触发策略

构建事件可以按照不同的策略来定义,定时属于被动触发;URL 和钩子程序属于主动触发。

(一)定时触发

定时触发有多种实现方案,使用 CentOS 服务器内置的定时调度器是较为轻量的解决方式,实现原理是在指定的时间节点运行 shell 脚本,其中 shell 脚本便是项目构建的载体。如果单纯希望定时构建项目,推荐使用此种解决方式,Jenkins 略显笨重。

(二)URL 触发

用脚本模拟或者在浏览器访问 URL 触发构建事件。此种方式是开发中用的比较多的方式,按需构建的代表。软件开发者在提交完代码后,主动触发构建事件,这种方式构建效率较高。

Build Triggers

构建触发器是指 Jenkins 收到某一信号之后,立即开始构建指定的任务。

勾选【Trigger builds remotely】并设置【Authentication Token】

# 【服务前缀】/job/【任务名】/build?token=【token】
JENKINS_URL/job/job-vue/build?token=TOKEN_NAME

通过使用 curl 脚本即可触发构建信号。

(三)钩子触发

在代码仓库完成钩子程序配置,并且允许代码仓库服务器访问 Jenkins 服务器,钩子程序会在开发者提交代码时触发构建事件。

钩子触发看上去比较美,实际操作中有一定的前置条件:一是项目的构建时间不能过长;二是提交代码不能过于频繁。

附录、工具使用

1、语言设置

在【系统管理】>【插件管理】中添加【locale】插件。在【系统管理】>【全局配置】中 locale 栏目下添加【en_US】,并勾选对所有用户生效选项。

建议统一使用英文界面(可以修改为中文),在中英文混合下操作比较别扭。

2、构建环境清单

序号 环境名 作用及要求 参考资料
1 Java Java 程序基础运行环境,使用 jdk 不能使用 jre(需要编译 Java 源码)  
2 maven 构建 Java 项目,为提高构建速度需要配置国内仓库源 [Maven 使用手册]
3 NodeJS 构建前端项目  
4 git 拉取远程仓库代码  
5 ssh 免密登录 授权拉取远程仓库代码;授权登录远程服务器(构建完成后部署) [SSH 使用手册]

3、环境配置

1、Maven Configuration

配置项 配置内容
Default settings provider /usr/local/maven/conf/settings.xml
Default global settings provider /usr/local/maven/conf/settings.xml

2、JDK

配置项 配置内容
JAVA_HOME /usr/local/java

3、Git

配置项 配置内容
Path to Git executable /usr/local/git/bin/git

4、Maven

配置项 配置内容
MAVEN_HOME /usr/local/maven

5、NodeJS

配置项 配置内容
Installation directory /usr/local/nodejs/bin

4、任务配置

1、Source Code Management

源代码管理是 Jenkins 工作的前提,即能够获取到任务源代码,它是后续代码自动构建的前提。

源代码托管在 GitHub,并且是私有仓库,Jenkins 正确访问 git 仓库需要进行授权。

# 基于http用户名和密码授权
https://gitee.com/decsa/ucode-cms-vue.git
# 基于公钥和私钥匙授权
git@gitee.com:decsa/ucode-cms-vue.git

为了提高工作效率,促进团队协作,这里选用 ssh 认证。

ssh-keygen -t rsa -C "982361244@qq.com"

将文件【~/.ssh/id_rsa.pub】内字符串拷贝至 GitHub 设置中,配置后即可免密拉取 GitHub 私有仓库代码。

更多内容请查看 [SSH 使用手册]

2、Build Triggers

构建触发器是指 Jenkins 收到某一信号之后,立即开始构建指定的任务。

勾选【Trigger builds remotely】并设置【Authentication Token】

# 【服务前缀】/job/【任务名】/build?token=【token】
JENKINS_URL/job/ruoyi-vue/build?token=TOKEN_NAME

通过在任一登陆的服务器的浏览器或者使用 curl 脚本即可出发任务的立即构建。

3、Build

后端项目通常使用 Maven 来构建,在下拉框中选择【Invoke top-level Maven targets】,然后在 Goals 栏目中配置如下命令

clean install

经过此步骤,能够在工作空间找到构建后的项目发布包。

4、Post-build Actions

在任务构建完成之后出发此操作。通常使用 Docker 将项目发布包构建成镜像,然后发布到镜像仓库中。可执行的镜像发布到镜像仓库之后,有两种比较常用的后续方案与应用服务器交互。

Jenkins 通过授权认证,登陆到目标应用服务器,将对应的镜像拉下来,然后使用脚本启动。

通过使用 k8s 容器服务,自动化管理任务镜像发布工作。

以上就是使用Jenkins自动化构建工具进行敏捷开发 的详细内容,更多关于Jenkins自动化构建工具的资料请关注我们其它相关文章!

(0)

相关推荐

  • 解决Jenkins集成SonarQube遇到的报错问题

    Jenkins集成Sonar过程中遇到的报错 1.jenkins中无法添加sonarqube的token凭证 因为添加的凭证类型错误,所以无法添加token,类型应该选择"Secret text",而不是"username with password". 2.启动sonarqube报错 #完整报错: ERROR: [1] bootstrap checks failed. You must address the points described in the fol

  • 使用jenkins将项目部署到另一台主机的过程

    环境 主机名 ip地址 服务 jenkins 192.168.216.200 tomcat.jenkins server 192.168.216.215 tomcat //关闭防火墙selinux //安装打包命令,git [root@jenkins ~]# yum -y install maven [root@jenkins ~]# yum -y install git //配置免密登录 [root@localhost ~]# ssh-keygen Generating public/priv

  • jenkins 实现shell脚本化定时执行任务的方法

    1.开发需求socket连接的auction拍卖jar包服务更新重启前半小时切走nginx的访问请求. socket发起请求之后不需要nginx执行交互可以断开了,但是socket这个任务在auction拍卖任务没结束前重启auction就会出问题. 解决访问是jenkins构建好之后将jar远程推送到生产服务器,提前退出后台执行服务器远程脚本,脚本通过ngnx提前切走nginx代理auction sleep 1800s,半小时后执行更新重启. 指定构建目录获取同级依赖 #!/bin/bash

  • 为Jenkins添加SSH全局凭证

    目录 一.什么是凭证 1.凭据简介 2.凭据分类 3.凭据安全 二.添加凭据 1.创建的时候添加 2.在凭证里面添加 一.什么是凭证 1.凭据简介 有许多第三方网站和应用程序可以与Jenkins进行交互,例如代码仓库GitHub等. 此类应用程序的系统管理员可以在应用程序中配置凭证以专供Jenkins使用.通常通过将访问控制应用于这些凭证来完成这项工作,以“锁定Jenkins可用的应用程序功能区域”.一旦Jenkins管理员在Jenkins中添加/配置这些凭证,Jenkins项目就可以使用凭证与

  • 为Jenkins创建定时构建任务

    目录 一.前言 二.创建定义任务 1.新建任务 2.General 3.源码管理 4.构建触发器 5.构建环境 6.构建 7.构建后操作 三.总结 一.前言 在前面的文章中,我们添加SSH凭据,添加了凭据以后就可以利用Jenkins创建构建任务了.我们这里利用Jenkins创建一个定时构建任务. 二.创建定义任务 1.新建任务 在Jenkins首页选择新建item或者点击创建一个新任务: 输入任务名称,选择自由风格的任务(Freestyle project): 2.General 在Genera

  • Jenkins配置maven项目之打包、部署、发布的全过程

    Jenkins和项目在两台服务器上 Jenkins的下载安装部署省略,可自行上官网. 1.安装maven插件 完成后,会出现“success”,并且勾选“安装完成后重启Jenkins(空闲时)” 2.部署有Jenkins的服务器上,下载maven,配置环境变量,我在opt/目录下放着. 执行命令: 下载: wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.g

  • 使用Jenkins自动化构建工具进行敏捷开发

    目录 一.序言 二.安装与使用 (一)安装 1.查看初始密码 2.修改默认工作空间 (二)使用 1.构建配置 2.添加项目 (三)免密登录 三.触发策略 (一)定时触发 (二)URL 触发 (三)钩子触发 附录.工具使用 1.语言设置 2.构建环境清单 3.环境配置 4.任务配置 一.序言 Jenkins 是一款自动化构建工具,能够基于 Maven 构建后端 Java 项目,也能够基于 nodejs 构建前端 vue 项目,并且有可视化 web 界面. 所谓自动化构建是按照一定的策略执行打包脚本

  • Linux下使用Jenkins自动化构建.NET Core应用

    目录 部署 Jenkins 安装插件 拉取镜像 制作 Jenkinsfile 脚本 构建流水线 观察 部署 Jenkins 请提前在 Linux 上安装 Docker,在 Linux 中,我们使用 Docker 启动 Jenkins,这样可以避免手动安装大量依赖以及污染本地环境,也便于快速启动和故障恢复. 安装 Docker 完毕后,使用 docker version 检查 Docker 版本,Docker 版本不能为 1.x.3.x 这种版本,请升级到 18.x 以上版本.一般在 Ubuntu

  • 在Mac OS上安装使用Node.js的项目自动化构建工具Gulp

    安装 node.js 首先需要安装 node.js, 通常情况下,只需要到 Node.js 官网下载安装包安装就可以了.不过我可耻的失败了,弹出了如下错误: 于是我换成了 brew 大法: brew install nodejs 安装 Gulp gulp 使用 Node.js 的 npm 命令安装: npm install --global gulp 然后在项目目录中还要安装一遍: npm install --save-dev gulp 我对这步的操作比较费解.以我多年码农经验,即然全局安装过了

  • Python自动化构建工具scons使用入门笔记

    这段时间用到了scons,这里总结下,也方便我以后查阅. 一.安装scons Linux环境(以CentOS为例) 1.yum安装 yum install scons 2.源码安装 下载scons:http://http://jaist.dl.sourceforge.net/project/scons/scons/2.3.0/scons-2.3.0.zip 安装scons:python setup.py install 二.scons常用命令 scons -c : 可以清除生成的临时文件和目标文

  • Angular.js项目中使用gulp实现自动化构建以及压缩打包详解

    gulp介绍 基于流的前端自动化构建工具,利用gulp可以提高前端开发效率,特别是在前后端分离的项目中.使用gulp能完成以下任务: 压缩html.css和js 编译less或sass等 压缩图片 启动本地静态服务器 其他 目标 一键安装项目所有的依赖模块 一键安装项目所有的依赖库 代码检查确保严格语法正确 能将angularjs的html装换成js模块并且压缩到js文件中 将所有css文件合并压缩 将所有的js文件合并压缩 动态引入资源文件 拥有开发环境和生产环境两种打包方式 工具 npm基于

  • 浅谈Webpack自动化构建实践指南

    由于现在的博客是使用wordpress搭建,自己得经常修改过一些代码,但是修改第三方源码真的比较痛苦,于是决定计划开始使用React + Node.js / Python开发新博客项目,最终替换当前博客代码,方便以后博客的维护和更新,也能实现自我开发技术,架构设计,解决问题能力的提升,同时记录下整个开发历程,总结,分享,希望能与读者们一起进步.本篇介绍如何使用Webpack和Babel,Eslint,documentation.js等搭建项目开发环境和生产环境,也算项目的准备工作,下一期计划介绍

  • Java Maven构建工具中mvnd和Gradle谁更快

    目录 1.mvnd 简介 2.Gradle 简介 2.1 Gradle 优点简述 3.Gradle 使用 3.1 更换 Gradle 为国内源 3.2 项目依赖文件对比 3.3 settings.gradle VS build.gradle 3.4 打包项目 4.mvnd 5.性能对比 5.1 Maven 打包性能 5.2 mvnd 打包性能 5.3 Gradle 打包性能 6.扩展:Gradle 打包文件存放目录 总结 前言; Maven 作为经典的项目构建工具相信很多人已经用很久了,但如果体

  • JavaScript前端构建工具原理的理解

    目录 前言 构建工具的前世今生 YUI Tool + Ant Grunt / Gulp Webpack / Rollup / Parcel Vite / Esbuild js 模块化的发展史和构建工具的变化 青铜时代 白银时代 黄金时代 结束语 前言 最近有幸在前端团队里面做了一次关于 webpack 的技术分享.在分享的准备过程中,为了能让大家更好的理解 webpack,特意对市面上以前和现在流行的构建工具做了一个梳理总结.在整理和分享的过程中,获益匪浅,对前端构建工具有了新的认识.在这里,将

  • 使用docker搭建jenkins自动化工具的实现

    目录 一.jenkins 二.基于docker 搭建 jenkins 三.jenkins 自动发布 SpringBoot 镜像 一.jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成. 大家在工作中,应该都有使用过jenkins 自动化打包或发布,就比如我经常用到的就是将开发的项目自动化打包成docker镜像,实现一键打包,大大减少了我们的工作量,下面就一起学习下,jenkin

  • jenkins部署.net平台自动化构建的方法步骤

    在引入自动化部署工具的时候,我们对比了jenkins和gitlab CI,jenkins有非常丰富的插件,配置起来方便.gitlab CI更倾向于脚本配置,当然jenkins也可以使用pipeline实现全脚本化配置(everything is code,哈哈).我们这里主要讲述jenkins的自动化部署. 基本组合是jenkins+git+msbuild+python,实现从代码仓库拉取.编译.打包.部署.自动化测试.(.net core和framework4.6.1可以不依赖msbuild构

随机推荐