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

以上的简单实验操作为了对上述三种常用的构建方式多熟悉!!!以上的知识点学习都是来自 ”黑马程序员“

Jenkins项目常用三种构建类型风格详解相关推荐

  1. Plotly中4种文本类型设置详解

    作者:Lemon 来源:Python数据之道 Plotly中4种文本类型设置详解 大家好,我是 Lemon . 在过去的一段时间里,我写了几篇用 Python 的交互式可视化工具 Plotly 来演示 ...

  2. (03)_k8s之flannel三种模型安装部署详解

    flannel三种模型安装部署详解 yht_1990关注[2020-10-04 12:13:47](javascript:

  3. 【虚幻引擎UE】UE5 三种模式调用API详解(案例基于免费Varest插件)

    [虚幻引擎UE]UE5 三种模式调用API详解(案例基于免费Varest插件) 想通过UE5 调用API实现GET和POST, 可以通过自己编写C++方法, 或基于相关HTTP请求插件, 如Vares ...

  4. SPI、I2C、UART(即串口)三种串行总线详解

    以下内容均来源于网络资源的学习与整理,如有侵权请告知删除. 参考博客 几个串口协议学习整理 UART IIC SPI_mainn的博客-CSDN博客 SPI.I2C.UART三种串行总线的原理.区别及 ...

  5. 晶体管单管放大电路的三种基本接法详解

    晶体管组成的基本放大电路有共射.共集.共基三种基本接法,即除了共射放大电路外,还有以集电极为公共端的公集放大电路和以基极为公共端的共基放大电路.它们的组成原则和分析方法完全相同,但是动态参数不同,需要 ...

  6. Docker学习:外部浏览器访问容器 | 容器访问容器 | 访问容器的常用5种方式 | -p -P 详解

    前言 本讲是从Docker系列讲解课程,单独抽离出来的一个小节,主要介绍容器间内部相互访问和外部访问容器的一些方法,它和前面两篇:容器五种(3+2)网络模式.容器之间单/双向通信 |--link /自 ...

  7. Vmware虚拟机三种网络模式配图详解

    目录 Vmware虚拟机三种网络模式详解 Vmware虚拟机三种网络模式详解 具体的文字描述参见博文:https://www.cnblogs.com/linjiaxin/p/6476480.html ...

  8. 电信设置的nat 虚拟服务器192.168.1.3 是什么,VMware WorkStation的三种网络连接方式详解...

    一. 首先贴出本人在网络上找到与VMware网络连接相关的知识 安装完虚拟机后,默认安装了两个虚拟网卡,VMnet1和VMnet8,其他的未安装(当然也可以手动安装其他的).其中VMnet1是host ...

  9. STM32三种BOOT启动模式详解(全网最全)

    一.三种boot启动模式 一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存.用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式. ...

最新文章

  1. /xiaolei.php|martin_十步解决Php Utf-8编码(转贴)
  2. STM8单片机GPIO口的驱动深度解析
  3. 什么是面向对象(OOP)
  4. retain和copy还有assign的区别
  5. SpringMVC框架的详细操作步骤和注解的用法
  6. AM-GM均值不等式的一种简证
  7. 为mysql cluster添加sql节点
  8. 服务器好玩的项目_GitHub 上有什么好玩的项目?(附地址)
  9. java作图如何来回移动_如何在java中连续左右移动球?
  10. 7-3 sdut-求两个整数之和(I)
  11. cookie 操作详解 (asp.net javascript)
  12. 当前仍在编辑文章 - Java Excel处理 - 实操案例与方法手册
  13. c语言资产管理系统,c语言图书资产管理系统.doc
  14. PHP视频教程下载(PHP100系列视频教程)
  15. PHP+txt聊天室
  16. 2016美国计算机研究生,2016年美国计算机工程专业研究生排名(转载)
  17. centos查看CPU温度
  18. 使用stp制造广播风暴!
  19. Android面试题4
  20. Excel笔记(3)常用函数11-20

热门文章

  1. 阿里巴巴温少再度出山重构fastjson推出fastjson2
  2. 如何获取常见位置的经纬度
  3. mysql求及格百分率_关于mysql进行名次的排名和计算及格率的分享
  4. 在线FLV播放器实现
  5. 美团基础研发部门一面、二面、三面
  6. Filter过滤器用法与说明
  7. JavaScript中的execCommand
  8. 天地图瓦片之中国区域下载
  9. 部署Ambari 2.7.5 + HDP3.1.5
  10. Django报错之django.db.utils.InternalError: (1366, Incorrect string value: '\\xE7\\x94\\xA8