当前位置: 首页 > news >正文

Jenkins服务安装配置

什么是 Jenkins

Jenkins 是一个开源的自动化服务器,主要用于持续集成(CI,Continuous Integration)和持续交付/持续部署(CD/CD,Continuous Delivery/Continuous Deployment)。它帮助开发团队自动化构建、测试、部署和交付软件的过程,从而提高软件开发的效率和质量。

Jenkins 下载安装

Jenkins启动包官网下载地址:https://www.jenkins.io/download/

下载完成后把 jenkins.war 包上传到 Linux 服务器上 (windows 或 linux 都是这个包)

注意:如果jenkins版本太高,需要使用JDK11或更高才能启动Jenkins服务。并不影响你在 Jenkins 中构建或部署使用 JDK 8 开发的代码。

Linux 环境准备

JDK17:用于启动Jenkins服务

JDK8:你的代码中使用的是JDK8的话,Jenkins使用JDK8编译打包你的代码。

Maven3.6+:Jenkins编译你的代码需要的maven版本。

Git:Jenkins拉取你的Git仓库代码。git 已经把 ssh 公钥配置到git代码仓库。
SSH:Linux服务器允许用户远程连接到系统,进行管理、维护和文件传输。

启动 Jenkins 服务,命令如下:

java -jar jenkins.war

浏览器打开 Jenkins 页面:http://127.0.0.1:8080/

安装推荐的插件,因为我们不知道要安装哪些插件,推荐的插件会把保证使用的插件安装上来

插件安装中,等待插件安装完成

插件安装完成之后,会进入到创建管理员账号密码页面


修改 admin 账号的密码

因为上面的admin账号的密码不生效,还是原来的 /root/.jenkins/secrets/initialAdminPassword 路径下的密码,所以这个要修改一下密码


Jenkins 配置环境

配置 中文插件

搜索 local和Localization: Chinese (Simplified) 插件,点击 Install after restart 安装后重启Jenkins服务

进入 Dashboard->Manage Jenkins->Appearance,配置如下


配置 Maven 插件

1. 下载 Maven 插件

搜索 Maven Integration,点击 Install after restart 安装后重启Jenkins服务

2. 配置 Maven

进入 Dashboard->Manage Jenkins->Tools


配置JDK

进入 Dashboard->Manage Jenkins->Tools


配置 Git

进入 Dashboard->Manage Jenkins->Tools

linux 使用 which git 命令查看 git可执行文件的路径

配置 Git 登录的账户密码

进入 Dashboard->Manage Jenkins->Credentials


Jenkins 配置任务

构建 maven 任务

1. 新建 maven 任务

2. 配置任务Git

保存之后构建,就可以看到 jenkins 在向 git 仓库中拉取代码了

如果还想maven构建完成之后再发布,因为主要讲的不是maven项目,所以还想maven发布的,请看这里 https://download.csdn.net/download/a1053765496/11192998


构建流水线项目 

下载 pipeline、blue ocean 插件

1. 新建流水线任务

2. 编写声明式流水线脚本

脚本结构如下:

pipeline{agent anytools {jdk 'jdk1.8'}stages{stage("拉取代码"){steps {           echo '拉取成功'}}}post{            always{echo 'always say goodbay'}}
}

脚本说明

pipeline{        // 声明这是一个 Pipeline 脚本agent any    // 表示这个 Pipeline 可以在任何可用的 Jenkins 节点(agent)上运行。// agent none   # 表示在 Pipeline 的顶层不指定任何全局的 agent,通常用于在每个 stage 中单独指定 agent。适用于需要在不同阶段使用不同环境的情况。// agent {    // 使用指定的 Docker 镜像作为运行环境。Jenkins 会启动一个 Docker 容器来运行 Pipeline//    docker {//        image 'maven:3.6.3-jdk-8'//        label 'docker'//    }// }// agent ... 还有很多写法tools {jdk 'jdk1.8'         // 指定 mvn 命令使用的jdk版本, 这里的 'jdk1.8' 是在全局工具配置中设置的 JDK 名称}stages{                  // 定义了流水线的不同阶段(stages),每个阶段包含一个或多个步骤(steps)stage("拉取代码"){    // 表示一个阶段,包含一个名称和一些步骤。steps {            // 定义了该阶段内的步骤,可以是 shell 脚本、构建命令等。echo '拉取成功'}}}post{            // 定义在流水线结束后执行的步骤,根据执行结果(成功或失败)执行不同的操作。always{echo 'always say goodbay'}}
}

打印 pipeline 工作目录,拉取下来的代码就存在工作目录中

pipeline {agent anystages {stage('打印 pipeline 工作目录') {steps {script {echo "Workspace: ${env.WORKSPACE}"}}}}
}

修改 pipeline 工作目录

pipeline{agent anystages{stage("拉取代码"){steps {dir('/app/aaa') {    # 修改工作目录,这样 git 拉取下来的代码就在修改后的目录,可以一个项目一个目录,避免多个项目在一个目录下的混乱git branch: 'test', credentialsId: 'cedc056b-9f2d-4375-be48-f0d124ca069c', url: 'git@codeup.aliyun.com:659542b3e7f9ce3ec819b592/ppl_boot.git'echo '拉取成功'}}}}
}

3. 使用 pipeline 脚本自动拉取 git 仓库的代码

pipeline{agent anystages{stage("Git拉取代码"){steps {dir('/app/aaa') {git branch: 'test', credentialsId: 'cedc056b-9f2d-4375-be48-f0d124ca069c', url: 'git@codeup.aliyun.com:659542b3e7f9ce3ec819b592/ppl_boot.git'echo '拉取成功'}}}}post{            always{echo 'always say goodbay'}}
}

4. 使用 maven 打包拉取下来的代码

pipeline{agent anytools {jdk 'jdk1.8' // 指定 mvn 命令使用的jdk, 这里的 'jdk1.8' 是在全局工具配置中设置的 JDK 名称}stages{stage("Git拉取代码"){steps {dir('/app/aaa') {    // 指定 pipeline 的工作目录git branch: 'test', credentialsId: 'cedc056b-9f2d-4375-be48-f0d124ca069c', url: 'git@codeup.aliyun.com:659542b3e7f9ce3ec819b592/ppl_boot.git'echo '拉取成功'}}}stage("Maven打包代码"){steps {dir('/app/aaa') {    // 指定 pipeline 的工作目录// shell 脚本代码, 不需要加 #!/bin/bash 因为 sh 时 Jenkins 默认会使用 Shell 来运行这些命令。 sh """执行多行shell脚本命令的语法"""sh """ mvn clean install -Dmaven.test.skip=true"""echo '构建完成'}}}}post{            always{echo 'always say goodbay'}}
}

5. 发送 jar 包到测试/生产服务器

下载 Publish Over SSH 插件

明天继续

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • QT: 将QGraphicsScene中的所有QGraphicsItem转化成Gcode
  • 【ORACLE】如何使用EXPLAIN PLAN来分析 listagg() 函数的性能瓶颈?
  • 【OpenGL】xcode+glfw画三角形
  • Oracle 同义词SYNONYM 的实战使用
  • 大模型企业应用落地系列五》基于大模型的对话式推荐系统》大模型管理层
  • 10. Java 中的 HashSet 和 HashMap 有什么区别?
  • 第四章 Java核心类库 第一节 字符串处理
  • 如何用Java SpringBoot+Vue打造高效产品订单管理系统?
  • PHP房屋出售出租多端多平台预约系统小程序源码
  • 微信小程序vue3父组件调用vue2子组件传多个参数方法
  • SQL数据完整性的守护者:主键与唯一键的精妙应用
  • springboot调用sap接口传输数据,RFC协议接口调用,包含linux,windows部署
  • 多线程资源占用问题
  • 【对商城小程序命名的一些建议】
  • SpringBoot3
  • 【5+】跨webview多页面 触发事件(二)
  • Bootstrap JS插件Alert源码分析
  • bootstrap创建登录注册页面
  • co模块的前端实现
  • JAVA_NIO系列——Channel和Buffer详解
  • mysql innodb 索引使用指南
  • webpack+react项目初体验——记录我的webpack环境配置
  • 爱情 北京女病人
  • 从0到1:PostCSS 插件开发最佳实践
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 从伪并行的 Python 多线程说起
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 跨域
  • 前端_面试
  • 使用Swoole加速Laravel(正式环境中)
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 你对linux中grep命令知道多少?
  • AI算硅基生命吗,为什么?
  • PostgreSQL之连接数修改
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​2021半年盘点,不想你错过的重磅新书
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #QT 笔记一
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (2)空速传感器
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Java数据结构)ArrayList
  • (Python) SOAP Web Service (HTTP POST)
  • (zt)最盛行的警世狂言(爆笑)
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (规划)24届春招和25届暑假实习路线准备规划
  • (七)理解angular中的module和injector,即依赖注入
  • (算法)Travel Information Center
  • (已解决)什么是vue导航守卫
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)http协议