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

Jenkins 使用教程:从入门到精通

在软件开发的复杂流程中,持续集成与持续交付(CI/CD)是提升开发效率和保障软件质量的核心实践。Jenkins 作为一款备受欢迎的开源自动化服务器,在 CI/CD 流程中发挥着举足轻重的作用。本文将深入、详细地介绍 Jenkins 的使用方法,帮助你迅速上手并熟练掌握其关键要点。

一、Jenkins 的安装

1. 环境准备

Jenkins 基于 Java 开发,因此安装前确保服务器已正确安装 Java 环境。通过在命令行输入java -version即可检查 Java 版本,若未安装或版本不符合要求,请先完成 Java 的安装与升级。

2. 下载安装包

根据服务器的操作系统类型,从 Jenkins 官方网站获取对应的安装包。以 Ubuntu 系统为例,可使用以下命令进行下载与安装:

 

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -

sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

sudo apt-get update

sudo apt-get install jenkins

关键要点:安装前务必确认 Java 环境无误,不同操作系统的安装命令和步骤存在差异,需严格按照官方文档进行操作,避免因环境和安装步骤错误导致后续问题。

二、Jenkins 的初始配置

1. 启动 Jenkins

完成安装后,在命令行输入sudo systemctl start jenkins即可启动服务。默认情况下,Jenkins 运行在http://localhost:8080 。若启动失败,需检查系统日志以排查端口冲突、权限不足等问题。

2. 解锁 Jenkins

首次访问 Jenkins 时,需要输入初始密码进行解锁。该密码存储在/var/lib/jenkins/secrets/initialAdminPassword文件中,通过以下命令可查看:

 

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

请妥善保管此密码,避免泄露造成安全风险。

3. 安装插件

解锁后进入插件安装界面,建议优先选择 “安装推荐的插件”。这些插件涵盖了如 Git 插件、Maven 插件等常用功能,能够满足大多数项目的基本需求,为后续使用提供便利。若有特殊需求,也可在后续根据项目实际情况手动安装其他插件。

关键要点:妥善保存初始密码,防止密码丢失或泄露。插件安装可先以推荐插件为主,后续再根据实际需求灵活调整,以提高配置效率并满足项目要求。

三、创建第一个 Jenkins 任务并部署 Go 项目到 Windows 服务器

1. 新建任务

在 Jenkins 主界面,点击 “新建 Item”,为任务命名并选择 “Freestyle project”(自由风格项目),然后点击 “确定”。任务名称应简洁明了且能体现项目特征,方便后续管理与识别。

2. 配置任务

  • 源码管理:若项目托管在 Git 仓库,在此步骤配置仓库地址及相关凭证信息。例如,项目在 GitHub 上,需准确填入仓库 URL,并添加有效的 GitHub 凭证,确保 Jenkins 能够顺利拉取代码。若凭证错误或权限不足,将无法获取最新代码。
  • 构建触发器:构建触发器可选择定时构建,如 “*/5 * * * *” 表示每 5 分钟构建一次;也可配置为代码提交时自动触发构建。根据项目需求和团队协作模式选择合适的触发方式,以平衡资源利用和代码更新的及时性。
  • 构建环境:根据项目类型配置相应的环境变量。对于 Go 项目,需配置GOROOT、GOPATH等关键环境变量。假设 Go 安装目录为C:\Go,可在 “构建环境” 的 “环境变量” 中添加GOROOT=C:\Go,GOPATH=C:\Users\YourUsername\go(请根据实际情况修改)。环境变量配置错误可能导致依赖无法安装或项目无法正常构建。
  • 构建步骤
    • 添加 “Execute Windows batch command” 步骤,首先执行go get -v命令安装项目依赖,该命令会详细列出下载和安装的每一个依赖包,便于排查依赖问题。
    • 执行go build -o your_project_name.exe命令进行项目构建,your_project_name.exe为自定义的可执行文件名,可根据项目需求和规范进行命名。
    • 构建完成后,进行部署操作。若部署到同一服务器,使用move your_project_name.exe C:\Program Files\YourProject\命令将文件移动到指定运行目录;若部署到远程 Windows 服务器,可借助 PsExec、WinRM 等工具。以 PsExec 为例,假设远程服务器 IP 为192.168.1.100,共享目录为C$,用户名和密码分别为admin和password,则添加 “Execute Windows batch command” 步骤,输入psexec \\192.168.1.100 -u admin -p password copy your_project_name.exe C$\Program Files\YourProject\命令完成部署。

关键要点:任务配置的每一项都需精准无误,源码管理决定能否获取正确代码,环境变量影响构建过程,构建步骤直接关系到项目能否成功构建与部署。任何一个环节出错都可能导致任务失败,因此需仔细核对每一项配置。

四、构建与查看结果

配置完成后,点击任务界面的 “立即构建”,Jenkins 开始执行构建任务。构建完成后,在任务的 “控制台输出” 中可查看详细的构建日志,通过日志判断构建是否成功。若构建失败,需依据日志提示排查问题,如依赖缺失、语法错误、环境变量配置错误等。日志中会详细记录错误发生的位置和原因,是解决问题的关键线索。

关键要点:养成仔细查看构建日志的习惯,构建日志是排查问题的重要依据,通过分析日志能够快速定位和解决构建过程中出现的各种问题。

五、持续集成与持续交付(CI/CD)实践

通过 Jenkins 与 Docker、Kubernetes 等工具相结合,可实现完整的 CI/CD 流程。例如,构建成功后,自动将构建产物打包成 Docker 镜像,然后推送到镜像仓库,最后部署到 Kubernetes 集群中。这一过程涉及到多个工具的复杂配置与集成,需要深入学习相关知识,掌握各工具的工作原理和协同方式。

关键要点:实现 CI/CD 需全面掌握多种工具的协同工作,Jenkins 在其中扮演流程编排的核心角色。通过合理配置和使用这些工具,能够实现代码的快速迭代和高效交付,提升软件开发的整体效率和质量。

通过以上步骤,你已初步掌握 Jenkins 的使用方法以及如何利用它将 Go 项目部署到 Windows 服务器。在实际应用中,随着项目复杂度和需求的变化,不断探索 Jenkins 的更多高级功能,将为软件开发过程提供更强大的支持。

相关文章:

Jenkins 使用教程:从入门到精通

在软件开发的复杂流程中,持续集成与持续交付(CI/CD)是提升开发效率和保障软件质量的核心实践。Jenkins 作为一款备受欢迎的开源自动化服务器,在 CI/CD 流程中发挥着举足轻重的作用。本文将深入、详细地介绍 Jenkins 的使用方法&am…...

DeepSeek大模型的微调流程

DeepSeek大模型的微调流程通常包括以下几个步骤: 1. 环境准备 硬件:确保有足够的GPU资源,通常需要高性能GPU(如NVIDIA A100、V100等)。软件:安装必要的深度学习框架(如PyTorch、TensorFlow&am…...

关于“i18n“在vue中的使用

关于"i18n"在vue中的使用 <!-- vue2中 --> <template><div>{{ $t("This campaign has expired.") }}}}</div> </template> <script> export default {created() {this.onLoading();},methods: {onLoading () {this.$…...

Android图片加载框架Coil,Kotlin

Android图片加载框架Coil&#xff0c;Kotlin implementation("io.coil-kt:coil:1.4.0") import android.os.Bundle import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope import coil.Coil i…...

从二叉树遍历深入理解BFS和DFS

1. 介绍 1.1 基础 BFS&#xff08;Breadth-First Search&#xff0c;广度优先搜索&#xff09;和 DFS&#xff08;Depth-First Search&#xff0c;深度优先搜索&#xff09;是两种常见的图和树的遍历算法。 BFS&#xff1a;从根节点&#xff08;或起始节点&#xff09;开始&am…...

强化学习之 PPO 算法:原理、实现与案例深度剖析

目录 一、引言二、PPO 算法原理2.1 策略梯度2.2 PPO 核心思想 三、PPO 算法公式推导3.1 重要性采样3.2 优势函数估计 四、PPO 算法代码实现&#xff08;以 Python 和 PyTorch 为例&#xff09;五、PPO 算法案例应用5.1 机器人控制5.2 自动驾驶 六、总结 一、引言 强化学习作为…...

Docker 部署 MongoDB | 国内阿里镜像

一、简易单机版 1、镜像拉取 docker pull registry.cn-hangzhou.aliyuncs.com/farerboy/mongo:8.0.5-rc1 2、运行镜像 docker run -it --name mongodb \ -e MONGO_INITDB_ROOT_USERNAMEmongoroot \ -e MONGO_INITDB_ROOT_PASSWORDmongoroot \ -v /wwwroot/opt/docker/mong…...

1.1 Spring Security 概述

Spring Security 概述 1. 什么是 Spring Security&#xff1f; Spring Security 是 Spring 生态中专注于应用安全的核心框架&#xff0c;为 Java 企业应用提供认证&#xff08;Authentication&#xff09;、授权&#xff08;Authorization&#xff09;以及安全攻击防护&#x…...

Kotlin协程详解——协程上下文

目录 一、上下文结构 get()获取元素 minusKey()删除元素 fold()元素遍历 plus()添加元素 CombinedContext Key 二、协程名称CoroutineName 三、上下文组合 四、协程作用域CoroutineScope 五、典型用例 协程的上下文&#xff0c;它包含用户定义的一些数据集合&#x…...

手写一个C++ Android Binder服务及源码分析

手写一个C Android Binder服务及源码分析 前言一、 基于C语言编写Android Binder跨进程通信Demo总结及改进二、C语言编写自己的Binder服务Demo1. binder服务demo功能介绍2. binder服务demo代码结构图3. binder服务demo代码实现3.1 IHelloService.h代码实现3.2 BnHelloService.c…...

今日AI和商界事件(2025-02-10)

今日AI领域的相关事件包括&#xff1a; 一、技术与应用进展 全球首例AI驱动供应链攻击曝光&#xff1a; 网络安全机构披露一起新型供应链攻击事件&#xff0c;攻击者利用AI技术生成高度仿真的供应商邮件&#xff0c;诱骗目标企业员工下载恶意软件&#xff0c;进而渗透至大众汽…...

全面理解-c++中的异常处理机制

C 的异常处理机制是一种用于处理程序运行时错误的结构化方法&#xff0c;通过分离正常逻辑与错误处理代码&#xff0c;提高代码的可读性和可维护性。以下是其核心组成部分和工作原理的详细说明&#xff1a; 1. 异常处理的三大关键字 1.1 try 块 作用&#xff1a;包裹可能抛出异…...

Deep Dive into LLMs like ChatGPT - by Andrej Karpathy

https://www.youtube.com/watch?v7xTGNNLPyMIhttps://www.youtube.com/watch?v7xTGNNLPyMIDeep Dive into LLMs like ChatGPT - by Andrej Karpathy_哔哩哔哩_bilibilihttps://www.youtube.com/watch?v7xTGNNLPyMI转载自Andrej Karpathy Youtube ChannelThis is a general a…...

react实例与总结(一)

目录 一、简单认识 1.1、特点 1.2、JSX语法规则 1.3、函数组件和类式组件 1.4、类组件三大属性state、props、refs 1.4.1、state 1.4.2、props 1.4.3、refs 1.5、事件处理 1.6、收集表单数据—非受控组件和受控组件 1.7、高阶函数—函数柯里化 1.8、生命周期—新旧…...

51单片机(国信长天)矩阵键盘的基本操作

在CT107D单片机综合训练平台上&#xff0c;首先将J5处的跳帽接到1~2引脚&#xff0c;使按键S4~S19按键组成4X4的矩阵键盘。在扫描按键的过程中&#xff0c;发现有按键触发信号后(不做去抖动)&#xff0c;待按键松开后&#xff0c;在数码管的第一位显示相应的数字:从左至右&…...

在cursor/vscode中使用godot C#进行游戏开发

要在 Visual Studio Code(VS Code)中启动 C#Godot 项目&#xff0c;可以按照以下步骤进行配置&#xff1a; 1.安装必要的工具 • 安装 Visual Studio Code&#xff1a;确保你已经安装了最新版本的 VS Code。 • 安装.NET SDK&#xff1a;下载并安装.NET 7.x SDK&#xff08;…...

机器学习怎么学习,还有算法基本的源代码

1.scikit-learn官方文档&#xff0c;中文版/英文版 中文社区&#xff1a;https://scikit-learn.org.cn/ 中文官方文档&#xff1a;https://scikitlearn.com.cn/ 英文版&#xff1a;https://scikit-learn.org/stable/&#xff08;翻墙&#xff09; 2.菜鸟教程&#xff1a;AI&a…...

STM32 RTC亚秒

rtc时钟功能实现&#xff1a;rtc模块在stm32内部&#xff0c;由电池或者主电源供电。如下图&#xff0c;需注意实现时仅需设置一次初始化。 1、stm32cubemx 代码生成界面设置&#xff0c;仅需开启时钟源和激活日历功能。 2、生成的代码,需要对时钟进行初始化&#xff0c;仅需…...

【Linux】深入理解linux权限

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;Linux 目录 前言 一、权限是什么 二、用户和身份角色 三、文件属性 1. 文件属性表示 2. 文件类型 3. 文件的权限属性 四、修改文件的权限属性和角色 1. …...

json格式,curl命令,及轻量化处理工具

一. JSON格式 JSON&#xff08;JavaScript Object Notation&#xff09; 是一种轻量级的数据交换格式。它基于一个子集的JavaScript编程语言&#xff0c;使用人类易于阅读的文本格式来存储和表示数据。尽管名字中有“JavaScript”&#xff0c;但JSON是语言无关的&#xff0c;几…...

DeepSeek模拟阿里面试——java面向对象

作为一位阿里高级Java程序员面试官&#xff0c;我会围绕Java面向对象编程的核心概念、实际应用以及设计原则设计问题&#xff0c;以全面评估候选人的理解和应用能力。以下是可能的面试问题&#xff1a; 基本概念与实现方式 请解释Java中封装、继承、多态的基本概念及其在Java中…...

web直播弹幕抓取分析 signature

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言 最近遇到太多难点了卡了很久&am…...

【04】RUST特性

文章目录 隐藏shadowing所有权ownership堆区&栈区所有权规则变量&数据Copy Trait与Drop TraitCopy TraitDrop Trait移动克隆函数参数与返回值的所有权参数引用可变引用悬垂引用slice生命周期隐藏shadowing 有点像同名覆盖 let mut guess = String::new();let guess: u3…...

PL/SQL块结构

目录 一、声明部分&#xff08;declare&#xff09; 二、执行部分&#xff08;begin end&#xff09; 三、异常处理部分 &#xff08;Exception end&#xff09; 四、代码示例 PL/SQL&#xff08;Procedural Language/Structured Query Language&#xff09;是Oracle数据库…...

基于 FFmpeg 和 OpenGLES 的 iOS 视频预览和录制技术方案设计

基于 FFmpeg 和 OpenGLES 的 iOS 视频预览和录制技术方案设计 在 iOS 上实现一个基于 FFmpeg 和 OpenGLES 的视频预览和录制功能,需要结合 FFmpeg 的强大音视频处理能力和 OpenGLES 的高效图形渲染能力。以下是一个完整的技术方案设计,包含项目的架构设计、模块划分、技术选…...

【LeetCode 刷题】贪心算法(4)-区间问题

此博客为《代码随想录》贪心算法章节的学习笔记&#xff0c;主要内容为贪心算法区间问题的相关题目解析。 文章目录 55. 跳跃游戏45. 跳跃游戏 II452. 用最少数量的箭引爆气球435. 无重叠区间763. 划分字母区间56. 合并区间 55. 跳跃游戏 题目链接 class Solution:def canJu…...

提示工程 | 目的 | 常用技巧

什么是提示工程 提示工程也叫指令工程&#xff0c;Prompt就是你发给大模型的指令&#xff0c;比如&#xff1a;画幅画&#xff0c;写首诗等。貌似简单&#xff0c;但意义非凡&#xff0c;Prompt是AGI时代的编程语言&#xff0c;Prompt工程是AGI时代的软件工程&#xff0c;提示…...

ABP框架9——自定义拦截器的实现与使用

一、AOP编程 AOP定义:面向切片编程&#xff0c;着重强调功能&#xff0c;将功能从业务逻辑分离出来。AOP使用场景&#xff1a;处理通用的、与业务逻辑无关的功能&#xff08;如日志记录、性能监控、事务管理等&#xff09;拦截器:拦截方法调用并添加额外的行为&#xff0c;比如…...

Generate html

"Generate HTML"&#xff08;生成 HTML&#xff09;指的是通过程序或工具自动创建 HTML 代码的过程。HTML&#xff08;超文本标记语言&#xff09;是用于创建网页内容和结构的标准语言。生成 HTML 通常意味着通过某些方式自动化地构建或生成网页的结构和元素&#xf…...

CUDA 计算平台 CUDA 兼容性【笔记】

在 b 站看过的两个关于 CUDA 的技术分享&#xff0c;整理分享下对自己有用的课件。 20231130 2023第9期 聊一聊常见的AI计算平台库_哔哩哔哩_bilibili20230831 2023第6期 聊一聊CUDA兼容性_哔哩哔哩_bilibili 文章目录 CUDA 计算平台CUDA 函数库介绍英伟达三大护城河&#xff1…...