【转】Jenkins项目常用三种构建类型风格详解

转自:Jenkins项目常用三种构建类型风格详解_ぃ小小宇宙的博客-CSDN博客_jenkins项目类型

Jenkins构建的项目类型介绍

jenkins 的安装配置请参考:《jenkins war包安装部署,tomcat+JDK+maven》

Jenkins中自动构建项目的类型有很多,常用的有以下三种:

自由风格软件项目( FreeStyle Project)
Maven 项目(Maven Project)
流水线项目( Pipeline Project)
在这里插入图片描述
每种类型的构建其实都可以完成一样的构建过程与结果,只是在操作方式、灵活度等方面有所区别,在实际开发中可以根据自己的需求和习惯来选择。(PS: 个人推荐使用流水线类型,因为灵活度非常高

实验用的是简单的 maven 打包的项目,需要的小伙伴可以到我的GitHub拉取:GIthub实验构建项目。项目构建会部署到远程 Tomcat 的服务器上

在这里插入图片描述

先配置 Tomcat 服务器:

1、wget 安装tomcat9的版本 :

wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gz
tar -xf apache-tomcat-9.0.34.tar.gz && mv apache-tomcat-9.0.34 /usr/local/tomcat
chmod +710 /usr/local/tomcat/bin/*.sh

2、用户配置,设置登录的用户密码都是: tomcat

[root@jenkins conf]# vim /usr/local/tomcat/conf/tomcat-users.xml.....<role rolename="tomcat"/><role rolename="role1"/><role rolename="manager-script"/><role rolename="manager-gui"/><role rolename="manager-status"/><role rolename="admin-gui"/><role rolename="admin-script"/><user username="tomcat" password="tomcat" roles="tomcat,manager-script,manager-gui,manager-status,admin-gui,admin-script"/>
</tomcat-users>为了配的用户能登录到,还需要对一下进行修改
[root@enkins META-INF]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml<!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
停止tomcat并重新启动即可

3、通过远程的 Tomcat 地址登录即可:http://loschost:8080/manager/html

在这里插入图片描述

项目构建环境需要安装插件:Deploy to container(部署到远程Tomcat插件) 和 Maven Integration(maven项目类型)、Pipeline(流水线项目类型)

项目类型一、自由风格项目构建

项目构建流程:拉取代码->编译->打包->部署

1、创建新的自由风格的项目,配置拉取的地址

在这里插入图片描述

2、编译打包

构建->添加构建步骤->Executor Shell

echo "start:编译和打包"
mvn clean package
echo "end:编译和打包"

构建->构建后操作->Deploy war/ear to a container (前面一定要安装Deploy to container插件)
构建->构建后操作->Deploy war/ear to a container -> Containers 选择对应的tomcat版本,这里用的是 Tomcat 9.x Remote
没有凭证可以先添加凭证,凭证就是远程Tomcat登录的账号密码:http://loschost:8080/manager/html

在这里插入图片描述

3、构建测试:

在这里插入图片描述
打包完成后到Tomcat Web应用程序管理者点击打开:http://loschost:8080/manager/html
在这里插入图片描述
在这里插入图片描述
如果显示此页面则表示部署成功

项目类型二、Maven 项目

1、创建项目,配置项目

创建项目时候选择 “构建一个 mvaen 项目”,拉取代码和远程部署的过程和自由风格项目一样,只是"构建"部分不同(前面需要安装 Maven Integration 插件)

Root POM:pom.xml	对应GitHub上面的xml文件名
Goals and options:clean package


配置完成构建出来的结果和自由风格的一样

项目类型三、Pipeline 流水线项目(Pipeline Script 或 Pipeline Script from SCM)

Pipeline Script 1、简介

stages :代表整个流水线的所有执行阶段。通常stages只有1个,里面包含多个stage
stage :代表流水线中的某个阶段,可能出现n个。一般分为拉取代码,编译构建,部署等阶段。
steps:代表一个阶段内需要执行的逻辑。steps里面是shell脚本,git拉取代码,ssh远程发布等任意内
容。
1 )概念
Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点
的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。2)使用 Pipeline 有以下好处(来自翻译自官方文档):
代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流
程。 持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。 可停止:Pipeline可接
收交互式输入,以确定是否继续执行Pipeline。 多功能:Pipeline支持现实世界中复杂的持续交付要
求。它支持fork/join、循环执行,并行执行任务的功能。 可扩展:Pipeline插件支持其DSL的自定义扩
展 ,以及与其他插件集成的多个选项。3)如何创建和使用 Jenkins Pipeline
Pipeline  支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法
Pipeline  也有两种创建方法:可以直接在 Jenkins 的 Web UI 界面中输入脚本;也可以通过创建一
个 Jenkinsfile 脚本文件放入项目源码库中

2、创建新的自由风格项目(两个代码类型二选一即可)

代码类型一:流水线 -> 选择HelloWorld模板

在这里插入图片描述

pipeline {agent anystages {stage('pull code') {steps {echo '拉取代码'}}stage('Build projeck') {steps {echo '编译构建'}}stage('push code') {steps {echo '项目部署'}}}
}stages :代表整个流水线的所有执行阶段。通常stages只有1个,里面包含多个stage
stage :代表流水线中的某个阶段,可能出现n个。一般分为拉取代码,编译构建,部署等阶段。
steps:代表一个阶段内需要执行的逻辑。steps里面是shell脚本,git拉取代码,ssh远程发布等任意内容。

编写一个简单声明式 Pipeline:

代码类型二:流水线 -> 选择Scripted Pipeline

node {def mvnHomestage('pull code') {echo '拉取代码'}stage('Build projeck') {echo '编译构建'}stage('push code') {echo '项目部署'        }   
}Node :节点,一个 Node 就是一个 Jenkins 节点,Master 或者 Agent,是执行 Step 的具体运行
环境,Jenkins的Master-Slave架构的时候用到。
Stage :阶段,一个 Pipeline 可以划分为若干个 Stage,每个 Stage 代表一组操作,比如:
Build、Test、Deploy,Stage 是一个逻辑分组的概念。
Step :步骤,Step 是最基本的操作单元,可以是打印一句话,也可以是构建一个 Docker 镜像,
由各类 Jenkins 插件提供,比如命令:sh ‘make’,就相当于我们平时 shell 终端中执行 make 命令
一样。

编写一个简单的脚本式 Pipeline:
在这里插入图片描述
构建测试观察效果:
在这里插入图片描述

构建得出的结果都一样

3、配置一个完整的 pipeline 脚本(这里用的是:代码类型一,声明式脚本)

在对应项目下 “流水线语法” 可以编写完成的 pipeline 脚本
在这里插入图片描述
通过生成器生成对应的 pipeline 脚本代码
在这里插入图片描述
代码拉取选择:checkout:Check out from version control
构建选择:sh:Shell Script
推送发布选择:deploy:Deploy war/ear to a container

pipeline {agent anystages {stage('pull code') {steps {checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'a20e4f7f-6d66-4055-9cbc-115cc9827664', url: 'https://github.com/arosendeng/rosen-jenkins.git']]])}}stage('Build projeck') {steps {sh label: '', script: 'mvn clean package'}}stage('push code') {steps {deploy adapters: [tomcat9(credentialsId: 'b1ca6678-8339-43bb-a0da-c3935c509dc2', path: '', url: 'http://192.168.66.102:8080/')], contextPath: null, war: 'target/*.war'}}}
}

构建测试,发现可以构建成功

Pipeline Script from SCM

刚才都是直接在 Jenkins 的 UI 界面编写 Pipeline 代码,这样不方便脚本维护,建议把 Pipeline 脚本放在项目中(一起进行版本控制)

1、在项目根目录建立 Jenkinsfile 文件,把内容复制到该文件中

文件放到项目的:src 目录下,命名 Jenkinsfile
在这里插入图片描述
把 Jenkinsfile 上传到 GitHab

2、引用文件

注意路径:Jenkinsfile 在 src下,路径为 src/Jenkinsfile
在这里插入图片描述
以上的简单实验操作为了对上述三种常用的构建方式多熟悉!!!以上的知识点学习都是来自 ”黑马程序员“

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARM中断分析之二:裸机下面的中断处理

EINT4中断的裸机处理 这是基于S3C2410的EINT4中断的裸机处理&#xff0c;当中断发生时就把LED灯取反显示。下面是电路图。 上面是外部KEY连接到CPU的EINT4引脚上面&#xff0c;即&#xff1a;按下键就会产生一个中断。 按照先前介绍的&#xff0c;中断处理流程来介绍&#xff0…

【转】Jenkins 构建触发器操作详解

转自&#xff1a;Jenkins 构建触发器操作详解 - 习久性成 - 博客园 前言 触发远程构建 【https://www.cnblogs.com/Rocky_/p/8297260.html】 例如&#xff0c;使用脚本&#xff1a;通过一个网址的访问来触发构建&#xff0c;这样就不需要登录jenkins系统也能触发构建了。 示…

ARM中断分析之三:WinCE驱动的中断分析

现在有许多高端的ARM芯片&#xff0c;像苹果、三星、华为都采用ARM芯片做为智能手机芯片。 这篇文章介绍基于ARM的WinCE操作系统的驱动的中断分析。WinCE驱动分为两类&#xff0c;这里介绍流驱动&#xff0c;流驱动比较简单。 关于流驱动&#xff0c;下面是一张框图&#xff0c…

【转】密码破解全能工具:Hashcat密码破解攻略

转自&#xff1a;密码破解全能工具&#xff1a;Hashcat密码破解攻略 - FreeBuf网络安全行业门户 Hashcat密码破解 hashcat号称世界上最快的密码破解&#xff0c;世界上第一个和唯一的基于GPGPU规则引擎&#xff0c;免费多GPU&#xff08;高达128个GPU&#xff09;&#xff0c…

基于Visual Studio2010讲解LINQ读出数据库数据生成XML

LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口&#xff0c;使用它&#xff0c;可以在 .NET Framework 编程语言中处理 XML。 LINQ to XML 最重要的优势是它与 Language-Integrated Query (LINQ) 的集成。 由于实现了这一集成&#xff0c;因此&#xff0c;可以对内存 XML…

【转】详解JS的四种异步解决方案:回调函数、Promise、Generator、async/await

转自&#xff1a;详解JS的四种异步解决方案&#xff1a;回调函数、Promise、Generator、async/await 同步&异步的概念 在讲这四种异步方案之前&#xff0c;我们先来明确一下同步和异步的概念&#xff1a; 所谓同步(synchronization)&#xff0c;简单来说&#xff0c;就是…

wince6.0 s5pv210 中断

1. 在smdkv210\src\oal\oallib\ksarm.h头文件里可以看到wince的中断定义。 设备中断的起始编号即wince预定义的设备中断ID的基值 SYSINTR_DEVICES EQU 8 一共支持64个设备中断 SYSINTR_MAX_DEVICES EQU 64 可用的设备…

【转】vsftp配置实例-虚拟用户锁定目录

转自&#xff1a; vsftp配置实例-虚拟用户锁定目录_jasonyang69的博客-CSDN博客_vsftpd锁定用户目录 快速解决 vsftpd nologin 虚拟用户 拒绝访问 无法登录_小飞飞飞鱼的博客-CSDN博客_vsftpd 拒绝访问 一、实验步骤 0、启用 nologin shell #vim /etc/shells /bin/sh /bi…

【转】高端球管使用了哪些高科技?

转自&#xff1a;高端球管使用了哪些高科技&#xff1f; 本文来源&#xff1a;第三方维修平台 本文作者&#xff1a;RepairCT 随着人类发现X射线&#xff0c;这项技术不断应用到医学领域&#xff0c;比如X光机、DR、CT、乳腺钼靶等医疗设备&#xff0c;它们的主要核心均是利用…

关于代码组织的一些看法(上)

今天看了一个篇关于架构的文章&#xff0c;略有所感&#xff0c;记录一下。 软件的架构基本是从一个原始需求出发&#xff0c;逐步构建可维护、更灵活的开发框架的过程&#xff0c;在这个构建过程中可能会逐渐的增加代码的复杂度来满足灵活性的要求&#xff0c;从这个层面来讲&…

CE下基于Zylonite硬件平台的SD卡驱动开发

摘要&#xff1a;本文结合实际项目&#xff08;一款以WINCE为操作系统内核的GSM/PHS双模智能手机&#xff09;对嵌入式系统Windows CE5.0的底层驱动&#xff08;SD卡&#xff09;的架构进行了分析和研究&#xff0c;以MARVELL公司提供的基于INTEL Zylonite硬件平台的BSP为基础&…

pthread-win32在VC2005下的使用

pthread-win32是一个在Win32环境下的Unix POSIX线程库的移植. 有了它, 可以比较方便的移植Unix/Linux多线程程序到Windows下. 在VC2005下使用也很简单: 下载, 地址是 http://sourceware.org/pthreads-win32 里面include目录中是头文件, lib目录中是.lib和.dll文件. 在VC项目的属…

【转】apt命令

转自&#xff1a;apt命令详解 - 简书 apt命令可以说是Ubuntu系统下最为重要的命令&#xff0c;安装、更新、卸载软件&#xff0c;升级系统内核都离不开apt命令。 一、apt的简介 apt的全称是Advanced Packaging Tool是Linux系统下的一款安装包管理工具。 最初的时候&#xff…

maple 2018 窗口关闭提示乱码_如果解决SOLIDWORKS工程图转CAD字体出现乱码的问题_SolidWorks生信科技...

操作SOLIDWORKS工程图转CAD时&#xff0c;由于SOLIDWORKS使用的是Windows字体&#xff0c;而CAD使用的是线性字体&#xff0c;字体就容易出现乱码的苦恼。一般出现乱码是因为字体映射里面没有中文&#xff0c;所以会导致乱码。遇到这种情况&#xff0c;只需找到字体映射文件&am…

【转】apt 和 apt-get的区别

转自&#xff1a;https://www.sysgeek.cn/apt-vs-apt-get/ Ubuntu 16.04 发布时&#xff0c;一个引人注目的新特性便是 apt 命令的引入。其实早在 2014 年&#xff0c;apt 命令就已经发布了第一个稳定版&#xff0c;只是直到 2016 年的 Ubuntu 16.04 系统发布时才开始引人关注…

准确检测图像的轮廓 opencv_图像处理案例实战

1. 切边源图像&#xff1a; 需求&#xff1a;扫描仪扫描到的法律文件&#xff0c;需要切边&#xff0c;去掉边缘空白&#xff0c;这样看上去才真实&#xff0c;人工操作成本与时间花费高&#xff0c;希望程序自动实现&#xff0c;高效、准确。 实现思路&#xff1a;边缘检测 轮…

pp助手苹果版_再见!PP助手iOS端即将下线 曾是中国最大的苹果助手

苹果PP助手即将下线 在今日PP助手官方发布公告&#xff1a;尊敬的PP助手iOS版用户&#xff1a;衷心感谢您多年以来对我们的支持及厚爱。因业务调整&#xff0c;PP助手将于2020年2月28日正式下线iOS版产品&#xff0c;包括PP助手iOS版、PP助手iOS PC版等。 对您造成的不便还望理…

oppo手机工程模式清除数据需要密码_手机隐藏的快捷键都有哪些?

手机从开发出来到现在&#xff0c;已经换了很多代了&#xff0c;从大哥大&#xff0c;小灵通&#xff0c;到诺基亚到山寨机到苹果到华为&#xff0c;几十年过去了。手机从奢侈品一下飞去每个人手里&#xff0c;反正我手机有手机已经快10年了&#xff0c;所以我相信每个人对自己…

关于竖表转横表的问题

本文作者&#xff1a;dinya内容摘要&#xff1a;在开发过程&#xff0c;经常遇到一些将表的显示方式进行转换的需求&#xff0c;我们习惯性称之为竖表到横表的转换&#xff0c;本文通过一个例子来简要说明常见的两种竖表转横表的问题。本文适宜读者范围&#xff1a;oracle初级&…

全系光谱完整版

宇宙射线也叫电磁波&#xff0c;其中包含γ射线、X射线、紫外线、可见光、红外线、近红外、远红外&#xff0c;还有无线电和超声波。 无线电波是振荡电路中自由电子作周期性的运动产生的&#xff0e; 红外线、可见光、紫外线是原子外层电子受激发产生的&#xff0e; X射线是原…