文章目录
一、Jenkins项目构建类型
-
Jenkins中自动构建项目的类型有很多,常用的有以下三种:
自由风格软件项目(FreeStyle Project)
Maven项目(Maven Project)
流水线项目(Pipeline Project)
-
每种类型的构建其实都可以完成一样的构建过程与结果,只是在操作方式、灵活度等方面有所区别,在实际开发中可以根据自己的需求和习惯来选择。(PS:个人推荐使用流水线类型,因为灵活度非常高)
二、自由风格项目构建
下面演示创建一个自由风格项目来完成项目的集成过程: 拉取代码->编译->打包->部署
1. 创建项目
配置源码管理,使用ssh方式从gitlab拉取代码,配置完成后,点击应用并保存
2. 编译打包
构建->添加构建步骤->Executor Shell,设置完成后,点击应用并保存
echo "开始编译和打包"
mvn clean package
echo "编译和打包结束"
再次构建,可以看到结果成功
可以在target目录中查看到产生的war包
3. 部署
我们需要把项目部署到远程的Tomcat里面,需要安装 Deploy to container插件,因为 Jenkins 本身无法实现远程部署到Tomcat的功能,需要安装此插件来实现
- 增加构建后操作
先添加Tomcat用户凭证
然后添加构建后操作
开始构建
4. 演示改动代码后的持续集成
在 IDEA 中源码修改并提交到 gitlab
在gitlab上查看是否提交成功
访问Tomcat中项目,可以看到成功发布出去了
三、Maven项目构建
1. 安装 Maven Integration 插件
2. 创建Maven项目
3. 配置项目
拉取代码和远程部署的过程和自由风格项目一样,只是"构建"部分不同
4. 在 IDEA 中源码修改并提交到 gitlab
5. 构建并发布
四、Pipeline流水线项目构建
1.Pipeline简介
概念:
Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。
2.使用Pipeline的好处
3. 创建Pipeline项目方式
Pipeline 脚本是由 Groovy 语言实现的
- Groovy Pipeline 支持两种语法:
Declarative(声明式)
Scripted Pipeline(脚本式)
- Pipeline 也有两种创建方法:
① 直接在 Jenkins 的 Web UI 界面中输入脚本
② 通过创建一个 Jenkinsfile 脚本文件放入项目源码库中
一般我们都推荐在 Jenkins 中直接从源代码控制(SCM) 中直接载入 Jenkinsfile Pipeline 这种方法
4.安装Pipeline插件
Manage Jenkins->Manage Plugins->可选插件
5. Declarative声明式
创建项目
流水线->选择HelloWorld模板
编写一个简单声明式 Pipeline
node {
def mvnHome
stage('pull code') {
echo 'pull code'
}
stage('Build project') {
echo 'built project'
}
stage('publish project') {
echo 'publish project'
}
}
拉取代码——编译构建——项目部署
6. 使用声明式构建
拉取代码示例:
pipeline {
agent any
stages {
stage('pull code') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '1569d1b5-7568-4b58-abbf-63b70b624ada', url: 'git@192.168.8.20:gmy/web_demo.git']]])
}
}
}
}
整个过程的代码如下
pipeline {
agent any
stages {
stage('pull code') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'afaf7e66-9230-475a-a7fb-f33a2283067e', url: 'git@192.168.8.20:gmy/web_demo.git']]])
}
}
stage('built project') {
steps {
sh 'mvn clean package'
}
}
stage('publish') {
steps {
deploy adapters: [tomcat8(credentialsId: '2a09c577-79ca-4b5a-ad19-44c6708e42b9', path: '', url: 'http://192.168.8.18:8080/')], contextPath: '/', war: 'target/*.war'
}
}
}
}
7. Pipeline Script from SCM
由于在Jenkins的UI界面编写Pipeline代码不方便脚本维护,并且脚本容易丢失,所以可以把Pipeline脚本放在项目中(一起进行版本控制)
在项目根目录建立Jenkinsfile文件,把内容复制到该文件中
重新配置web_demo_pipeline项目
在 IDEA 中源码修改并提交到 gitlab
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8" %>