Jenkins服务安装配置

目录

Jenkins 配置环境

配置 中文插件

配置 Maven 插件

配置 JDK

配置 Git

配置 SSH 远程服务器

Jenkins 配置项目

构建 maven 项目

构建 pipeline 流水线项目 


什么是 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 配置环境

配置 中文插件

搜索 localLocalization: Chinese 插件,点击 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


配置 SSH 远程服务器

下载 Publish Over SSH 插件,下载完成之后重启 jenkins 服务。

配置 远程服务器

进入 Dashboard->Manage Jenkins->System


Jenkins 配置项目

构建 maven 项目

1. 新建 maven 项目

2. 配置任务Git

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

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


构建 pipeline 流水线项目 

下载 pipelineblue ocean 插件,下载完成之后重启 jenkins 服务。

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{            // post 可选的块,位于 Pipeline 的最后,用于定义构建结束后无论成功或失败都要执行的动作。你可以根据不同的构建状态(如成功、失败等)来设置相应的操作。always {echo 'This always runs, no matter what the build result is.'// 无论构建状态如何,这个步骤都会执行。}success {echo 'Build was successful!'// 可以在这里添加成功时需要执行的步骤,例如通知或归档工件}failure {echo 'Build failed!'// 在构建失败时执行的操作,例如发送失败通知}unstable {echo 'Build is unstable.'// 在构建状态为不稳定时执行的操作}aborted {echo 'Build was aborted!'// 在构建被手动中止时执行的操作}changed {echo 'Build status has changed!'// 在构建状态发生变化时执行的操作}}
}

打印 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/demo.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/demo.git'echo '拉取成功'}}}}
}

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/demo.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 '构建完成'}}}}
}

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

编写  pipeline 脚本

pipeline{agent anytools {jdk 'jdk1.8' // 指定 mvn 命令使用的jdk, 这里的 'jdk1.8' 是在全局工具配置中设置的 JDK 名称}stages{stage("Git拉取代码"){steps {dir('/app/aaa') {git branch: 'test', credentialsId: 'cedc056b-9f2d-4375-be48-f0d124ca069c', url: 'git@codeup.aliyun.com:659542b3e7f9ce3ec819b592/demo.git'echo '拉取成功'}}}stage("Maven构建代码"){steps {dir('/app/aaa') {// shell 脚本代码, 不需要加 #!/bin/bash 因为 sh 时 Jenkins 默认会使用 Shell 来运行这些命令。 sh """执行多行shell脚本命令的语法"""sh """ mvn clean install -Dmaven.test.skip=true"""echo '构建完成'}}}stage("推送到测试服务器"){steps {dir('/app/aaa') {sshPublisher(publishers: [sshPublisherDesc(configName: '24服务器', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'nohup java -jar /app/bbb/demo.jar > /dev/null 2>&1 & ', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/app/bbb', remoteDirectorySDF: false, removePrefix: 'java_project/target/', sourceFiles: 'java_project/target/*.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}}}
}

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

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

相关文章

代码随想录刷题day15丨110.平衡二叉树,257. 二叉树的所有路径, 404.左叶子之和 ,222.完全二叉树的节点个数

代码随想录刷题day15丨110.平衡二叉树,257. 二叉树的所有路径, 404.左叶子之和 ,222.完全二叉树的节点个数 1.题目 1.1平衡二叉树(优先掌握递归) 题目链接:110. 平衡二叉树 - 力扣(LeetCode&a…

以小搏大:Salesforce 十亿参数模型表现超过ChatGPT

小模型的强势崛:轻量化AI如何以高效表现撼动大型模型的统治! ©作者|DWT 来源|神州问学 导读 近年来,人工智能领域的迅猛发展使得大型语言模型(LLM)成为了焦点。这些模型,如OpenAI的GPT-4和Google的…

讲透一个强大的算法模型,Transformer

Transformer 模型是一种基于注意力机制的深度学习模型,广泛应用于自然语言处理(NLP)任务,如机器翻译、文本生成和语义理解。 它最初由 Vaswani 等人在2017年的论文《Attention is All You Need》中提出。它突破了传统序列模型&am…

CSRF 概念及防护机制

概述 CSRF(Cross-Site Request Forgery),即跨站请求伪造,是一种网络攻击方式。在这种攻击中,恶意用户诱导受害者在不知情的情况下执行某些操作,通常是利用受害者已经登录的身份,向受害者信任的…

微纳芯:如何利用CRM实现渠道分销管理的数字化转型

MINCHIP由联想控股投资,是一家专注于快速体外诊断产品的研发、生产、销售、服务的高科技企业,拥有多项自主知识产权及技术专利。致力于用专业的微流控临床检验产品,为全球大众提供触手可及、负担得起的健康服务。其系列全自动生化分析仪持续为医师、兽医师的机构运营提供解决方…

C++对C的扩充(8.28)

1.使用C手动封装一个顺序表&#xff0c;包括成员数组1个&#xff0c;成员变量n个 代码&#xff1a; #include <iostream>using namespace std;//类型重命名 using datatype int; #define MAX 30struct seqList { private: //私有权限datatype *data; //相当于 …

Java中的java.lang.ArithmeticException: null问题详解与解决方案

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

fixed、absolute 和 relative 布局

https://andi.cn/page/621716.html

0.0 C语言被我遗忘的知识点

文章目录 位移运算(>>和<<)函数指针函数指针的应用场景 strcmp的返回值合法的c语言实数表示sizeof 数组字符串的储存 —— 字符数组与字符指针字符串可能缺少 \0 的情况 用二维数组储存字符串数组其他储存字符串数组的方法 位移运算(>>和<<) 右移(>…

什么是智能体(agent)

智能体&#xff08;Agent&#xff09;是人工智能领域中的一个核心概念。在最基本的层面上&#xff0c;智能体可以被定义为一个实体&#xff0c;它能够在其所处的环境中自主地感知信息&#xff0c;并根据这些信息做出决策&#xff0c;以实现特定的目标或任务。智能体的关键特性包…

ONNX加载和保存模型

ONNX ONNX&#xff08;Open Neural Network Exchange&#xff09;是一个开放的格式&#xff0c;用于表示机器学习模型。它使得不同框架之间的模型可以互操作&#xff0c;方便模型的迁移和部署。以下是一些关于 ONNX 的基本介绍和使用方法。 模型转换&#xff1a;ONNX 允许你将…

罐装食品检测检测系统源码分享 # [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

罐装食品检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

【Java】—— Java面向对象基础:Java中类的构造器与属性初始化,Student类的实例

目录 定义Student类 在main方法中创建Student对象 结论 在Java中&#xff0c;类的构造器&#xff08;Constructor&#xff09;是一个特殊的方法&#xff0c;用于在创建对象时初始化对象的属性。今天&#xff0c;我们将通过一个简单的Student类实例&#xff0c;来探讨如何在J…

给自己复盘用的tjxt笔记day12第一部分

优惠券使用 优惠券规则定义 对优惠券的下列需求: 判断一个优惠券是否可用,也就是检查订单金额是否达到优惠券使用门槛 按照优惠规则计算优惠金额,能够计算才能比较并找出最优方案 生成优惠券规则描述,目的是在页面直观的展示各种方案,供用户选择 因此,任何一张优惠券都…

Linux基础1-基本指令5(more,less,head,tail, | ,find)

本章继续整理其他linux基本指令 一.本章重点 1.more和less命令查看大文本 2.head和tail命令查看小文本和日志 3.使用管道多次处理信息 4.find指令 二.more和less more命令和less命令常用来查看大文本&#xff0c;其中less可以使用上下键快速浏览文本 使用方式 more文件 …

2024年6月GSEP(python)一级认证真题讲解

注意&#xff01;做题时长为2小时&#xff0c;孩子做完题目后对照讲解视频和讲解分析&#xff0c;针对薄弱点&#xff0c;进行有效的专项提高。 &#x1f451;讲解视频 2024.6GESPpython真题讲解 &#x1f451;讲解分析 1 单选题&#xff08;每题 2 分&#xff0c;共 30 分&a…

第15届蓝桥杯青少组Scratch初级组省赛真题试卷

第十五届蓝桥杯青少组省赛Scratch初级组真题试卷 题目总数&#xff1a;10 总分数&#xff1a;360 选择题 第 1 题 单选题 Scratch运行以下程序&#xff0c;角色会说( )? A.29 B.31 C.33 D.35 第 2 题 单选题 scratch运行下列哪个程序后&#xff0c;宇航…

在国产芯片上实现YOLOv5/v8图像AI识别-【4.1】RK3588训练数据时进行图像增强更多内容见视频

本专栏主要是提供一种国产化图像识别的解决方案&#xff0c;专栏中实现了YOLOv5/v8在国产化芯片上的使用部署&#xff0c;并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。 B站配套视频&#xff1a;https://www.bilibili.com/video/BV1or421T74f 图像…

【蓝桥杯集训100题】scratch绘制扇子 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第28题

scratch绘制扇子 蓝桥杯集训100题第28题模拟练习解析 此题曾经作为第十届省赛的真题考过 一、题目要求 以坐标(0,0)点为中心绘制一把扇子;扇面和扇把都是三分之一圆,扇面的半径 为 100 左右,扇把的半径为 20 左右。 编程实现 每次点击绿旗后,舞台背景为白色,…

CUDA-BEVFusion(1): 环境安装

文章目录 1. 查看ubantu配置2. 环境安装2.1 安装包下载2.1.1 tensorRT 下载2.1.2 CUDA 下载2.1.3 cuDNN 下载2.2 安装2.2.1 cuda 安装2.2.2 cuDNN 安装2.2.3 tensorRT安装3. 安装包下载1. 查看ubantu配置 查看GPU的版本sudo apt-get install pciutilslspci | grep VGA查看linux…