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

@Jenkins 介绍、部署与使用标准作业程序

文章目录

        • **1. 介绍与核心概念**
        • **2. 部署**
        • **3. 使用指南 (SOP)**
        • **4. 常见问题 (FAQ)**
        • 5.**Jenkins 官方资源链接**
          • **1>. 项目首页与文档**
          • **2>. 下载与安装**
          • **3>. 插件中心**
          • **4>. 问题追踪与社区支持**
        • **6. 总结**

1. 介绍与核心概念

1.1 什么是 Jenkins?
Jenkins 是一个开源的、可扩展的持续集成、持续交付和持续部署 (CI/CD) 自动化服务器。它用于自动化软件开发过程中各种重复性技术任务,例如构建、测试和部署应用程序,从而加快开发周期并提高软件质量。

1.2 核心概念

  • 持续集成 (CI): 开发人员频繁地将代码变更合并到共享主干中。每次合并都会触发一个自动化流程(构建、测试),以尽早发现集成错误。
  • 持续交付/部署 (CD): 自动化流程将集成后的代码可靠地交付到测试、预发布和生产环境。
  • 流水线 (Pipeline): 一套插件,支持将整个交付流程建模为一套代码(Jenkinsfile),定义了从构建到部署的所有阶段。
  • 节点 (Node/Agent): 执行 Jenkins 任务的机器。主节点(Master)协调任务,代理节点(Agent)执行任务。
  • 任务 (Job): 由一个配置脚本或插件定义的一个自动化流程,例如构建一个项目。

1.3 为什么选择 Jenkins?

  • 开源且活跃的社区: 拥有庞大的用户群和丰富的插件生态。
  • 高度可扩展: 通过超过 1800 个插件与几乎所有现代开发工具链集成。
  • 易于安装和配置: 基于 Java,可以运行在任何主流操作系统上。
  • 强大的流水线即代码 (Pipeline as Code): 使用 Groovy 语法将整个 CI/CD 流程版本化和管理。

2. 部署

本文提供两种主流的部署方式:使用 Docker(推荐用于快速学习和测试)和使用原生 War 包(推荐用于生产或稳定环境)。

环境准备:

  • 一台运行 Linux 的服务器(例如 Ubuntu 22.04 LTS 或 CentOS 7/8)。
  • 确保服务器具有互联网连接以下载软件包。
  • 具备 sudo 权限的用户。

2.1 方式一:使用 Docker 部署 (推荐用于测试)

步骤 1: 安装 Docker

# 更新包索引
sudo apt-get update# 安装必要的依赖
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 设置稳定版仓库
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 安装 Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io# 将当前用户加入 docker 组,避免每次使用 sudo
sudo usermod -aG docker $USER
# 退出终端重新登录使组更改生效

步骤 2: 运行 Jenkins Docker 容器

# 创建本地卷用于持久化 Jenkins 数据(防止容器删除后数据丢失)
mkdir ~/jenkins_home# 运行容器
docker run -d \--name jenkins \-p 8080:8080 -p 50000:50000 \-v ~/jenkins_home:/var/jenkins_home \-v /var/run/docker.sock:/var/run/docker.sock \  # 允许在容器内运行 Docker 命令(Docker in Docker)--restart unless-stopped \jenkins/jenkins:lts-jdk17
  • -d: 后台运行。
  • --name: 容器名称。
  • -p: 端口映射。8080 是 Web 界面端口,50000 用于代理节点通信。
  • -v: 卷映射,将容器内的数据目录映射到宿主机。
  • --restart: 设置容器随 Docker 服务自动重启。

步骤 3: 查看初始管理员密码

docker logs jenkins
# 在日志中寻找如下一行,复制密码:
# *************************************************************
# *************************************************************
# *************************************************************
# Jenkins initial setup is required. An admin user has been created and a password generated.
# Please use the following password to proceed to installation:
#
# your_initial_admin_password_here
#
# This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
# *************************************************************

2.2 方式二:使用 War 包部署 (推荐用于生产)

步骤 1: 安装 Java (Jenkins 依赖)

# Ubuntu/Debian
sudo apt update
sudo apt install openjdk-17-jdk# CentOS/RHEL
sudo yum install java-17-openjdk-devel# 验证安装
java -version

步骤 2: 安装 Jenkins

# 1. 添加 Jenkins 仓库密钥和源
curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null# 2. 更新并安装
sudo apt-get update
sudo apt-get install jenkins# 对于 CentOS/RHEL,请参考官方文档:https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos

步骤 3: 启动并设置开机自启

sudo systemctl start jenkins
sudo systemctl enable jenkins # 设置开机自启
sudo systemctl status jenkins # 检查状态

步骤 4: 防火墙放行端口

# 如果使用了防火墙
sudo ufw allow 8080
sudo ufw allow 50000
sudo ufw enable
sudo ufw status

2.3 初始设置 (两种方式通用)

  1. 在浏览器中访问 http://<你的服务器IP>:8080
  2. 输入从日志或文件中获取的初始管理员密码
    • (对于 War 包部署)密码位于:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  3. 安装推荐插件:选择“Install suggested plugins”,等待插件安装完成。
  4. 创建第一个管理员用户:填写信息,创建新的管理员账户(务必记住密码)。
  5. 实例配置:保持默认 URL http://<你的服务器IP>:8080/ 即可。
  6. 开始使用 Jenkins:点击“Save and Finish” -> “Start using Jenkins”。

3. 使用指南 (SOP)

3.1 创建一个简单的自由风格任务 (Freestyle Project)

  1. 点击 Jenkins 首页的 “新建任务”
  2. 输入任务名称(例如 my-first-job),选择 “自由风格项目”,点击 “确定”
  3. 配置页面:
    • 源码管理: 如果使用 Git,选择 “Git”,填入 Repository URL 和凭证(需要提前在“Manage Jenkins” -> “Manage Credentials”中添加)。
    • 构建触发器: 例如,设置“轮询 SCM”(H/5 * * * * 表示每 5 分钟检查一次代码变更)。
    • 构建环境: 按需选择。
    • 构建: 点击“增加构建步骤”,选择“Execute shell”(Linux)或“Execute Windows batch command”(Windows)。
      # 示例:简单的 Shell 构建步骤
      echo "Hello, World! Starting Build..."
      mvn clean package  # 如果是 Maven 项目
      # 或者
      # npm install && npm run build  # 如果是 Node.js 项目
      
    • 构建后操作: 例如,“Archive the artifacts” 归档构建产物(如 target/*.jar)。
  4. 点击 “保存”

3.2 立即构建
在任务页面,点击左侧的 “立即构建”。构建历史中会出现一个球体,点击它并选择 “控制台输出” 来查看实时构建日志。

3.3 创建流水线任务 (Pipeline as Code - 推荐方式)
流水线是更强大、更灵活的现代方式。

  1. 新建任务 -> 输入名称 -> 选择 “流水线” -> “确定”
  2. 在配置页面向下滚动到 “Pipeline” 部分。
  3. 定义: 选择 “Pipeline script from SCM”。
  4. SCM: 选择 “Git”。
  5. 填入你的 Git 仓库地址和凭证,该仓库根目录需要包含一个 Jenkinsfile
  6. 指定脚本路径(默认为 Jenkinsfile)。
  7. 点击 “保存”

3.4 编写一个简单的 Jenkinsfile
在你的项目根目录创建一个名为 Jenkinsfile 的文件(无后缀)。

pipeline {agent any // 在任何可用代理上运行stages {stage('Build') {steps {echo 'Building...'// 例如: sh 'mvn clean package'}}stage('Test') {steps {echo 'Testing...'// 例如: sh 'mvn test'}}stage('Deploy') {steps {echo 'Deploying...'// 例如: sh 'scp target/*.jar user@server:/path/to/deploy/'}}}post {always {echo 'This will always run at the end, success or failure.'}success {echo 'I will only run if the pipeline was successful!'// 例如: mail to: 'team@example.com', subject: 'Pipeline Succeeded!', body: 'Great!'}failure {echo 'I will only run if the pipeline had a failure :('}}
}

提交并推送 Jenkinsfile 到 Git 仓库。下次代码变更或轮询时,Jenkins 会自动拉取代码并执行 Jenkinsfile 中定义的流水线。


4. 常见问题 (FAQ)

Q1: 忘记管理员密码怎么办?
A: 如果未创建其他管理员账户:

  1. 找到 Jenkins 的 config.xml 文件(Docker 在 ~/jenkins_home,War 包在 /var/lib/jenkins)。
  2. 备份后,编辑 config.xml
  3. 找到 useSecurityauthorizationStrategy 相关标签,全部删除
  4. 重启 Jenkins 服务 (sudo systemctl restart jenkinsdocker restart jenkins)。
  5. 再次访问 Web 界面,此时无需密码。请立即在 “Manage Jenkins” -> “Security” 中重新配置用户身份验证。

Q2: 插件安装失败或速度慢?
A: 这是由于默认插件中心服务器在国外。

  1. 进入 “Manage Jenkins” -> “Manage Plugins” -> “Advanced”。
  2. 在 “Update Site” 中,将 URL 替换为清华大学镜像源:
    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  3. 点击 “Submit”,然后重启 Jenkins。

Q3: 构建时提示 “npm: not found” 或 “mvn: not found”?
A: Jenkins 容器或节点上没有安装这些工具。

  • 对于 Docker 部署: 你需要一个包含这些工具的定制镜像,或者在 Shell 步骤中动态安装它们(不推荐,每次都会下载)。
  • 对于 War 包部署: 需要在 Jenkins 主机构造这些工具,并告诉 Jenkins 路径。
    • 进入 “Manage Jenkins” -> “Tools”。
    • 添加 JDK、Maven、NodeJS 等的安装路径和自动安装配置。
    • 在任务配置中,选择对应的工具版本。

Q4: “No such file or directory” 或权限被拒绝?
A: 路径错误或 Jenkins 用户(通常是 jenkins)没有执行权限。

  • 检查文件路径是否正确。
  • 对于 War 包部署,检查 /var/lib/jenkins 目录的权限:sudo chown -R jenkins:jenkins /var/lib/jenkins

Q5: 如何备份和迁移 Jenkins?
A: 最安全的方式是备份整个 JENKINS_HOME 目录(对于 Docker 是 ~/jenkins_home,对于 War 包是 /var/lib/jenkins)。这个目录包含了所有配置、任务历史和插件数据。只需将此目录复制到新服务器并重新安装 Jenkins,然后指向这个目录即可。

5.Jenkins 官方资源链接
1>. 项目首页与文档
  • Jenkins 官方网站
    • 链接: https://www.jenkins.io/
    • 说明: 这是 Jenkins 项目的门户网站。所有最重要的信息和链接都可以从这里找到。
  • Jenkins 官方文档 (极度重要)
    • 链接: https://www.jenkins.io/doc/
    • 说明: 这是最全面、最权威的使用手册。包含入门指南、用户手册、插件开发指南等。遇到任何问题,都应首先从这里开始查找。
2>. 下载与安装
  • 官方下载页面
    • 链接: https://www.jenkins.io/download/
    • 说明: 提供所有版本的下载,包括 Generic Java package (.war)、原生系统包(Docker, Windows, macOS, Linux/Unix)等。
  • Docker Hub 官方镜像
    • 链接: https://hub.docker.com/r/jenkins/jenkins/
    • 说明: 获取官方 Docker 镜像及其不同标签(如 lts, lts-jdk17, latest)的详细说明。
3>. 插件中心
  • Jenkins 插件索引
    • 链接: https://plugins.jenkins.io/
    • 说明: 官方插件库。你可以在这里搜索、浏览所有可用插件,查看其文档、版本历史和兼容性。
4>. 问题追踪与社区支持
  • GitHub Issues (Bug 报告与功能请求)
    • 链接: https://github.com/jenkinsci/jenkins/issues
    • 说明: 如果你认为发现了一个 Jenkins 核心本身的 Bug,或者有新的功能需求,可以在这里搜索或提交 Issue。
6. 总结

本文档涵盖了从 Jenkins 的核心概念到两种主流部署方式(Docker 和 War 包),再到基本和高级(流水线)的使用方法,并提供了常见问题的解决方案。遵循此文档,您应该能够成功地搭建起一个功能完整的 Jenkins CI/CD 服务器,并开始自动化您的软件交付流程。

下一步建议:

  • 探索 Blue Ocean 插件,它提供了一个更直观、可视化的流水线界面。
  • 学习如何设置 分布式构建代理(节点) 以分担主节点压力。
  • 深入研究 Jenkinsfile 语法,实现更复杂的交付流程。
  • 集成 SonarQube(代码质量检测)、Nexus(制品库)等工具,完善你的 DevOps 工具链。
http://www.xdnf.cn/news/18897.html

相关文章:

  • Gin Validator 错误信息翻译与自定义校验规则详解
  • VS2022+QT6.7+Multimedia(捕获Windows音频数据,生成实时频谱)
  • 浅谈JMeter Listener
  • 安宝特方案丨AR异地专家远程支持平台,适合:机电运维、应急处置、监造验收
  • esp32c2 at 请问通过HTTPS进行OTA升级的AT命令流程有吗?
  • ERNIE 学习
  • Linux中Java后端调用外部进程 未处理后台输出流 导致io阻塞问题解决方法
  • Mac训练大模型:MLX-LM框架LoRA训练Qwen3并集成SwanLab进行可视化
  • VMware + Ubuntu 桥接模式不能联网 的常见原因、排查思路和解决步骤
  • leetcode 3446. 按对角线进行矩阵排序 中等
  • 与trae携手,构建owtb一体化物流平台之--需求文档V0.3
  • 第五章:Go运行时、内存管理与性能优化之Go垃圾回收机制 (GC) 深入
  • UDS NRC24
  • AI智能农业监测系统深度解读:从大田作物管理到病虫害预警,破解传统农业增产难题
  • 终极实战 - 全链路排查一次“502 Bad Gateway”
  • 从用户视角出发:如何提升B端产品的操作效率?
  • 【第四章】BS 架构测试全解析:从功能验证到问题定位​
  • 使用 logging 模块生成 .log 文件
  • SMU算法与人工智能创新实践班SMU2025 Summer 7th 参考题解
  • npm install 安装离线包的方法
  • 光谱相机在雾霾监测中有何优势?
  • ABeam中国 | 中国汽车市场(5)——软件定义汽车(SDV)的智能化应用场景
  • MATLAB中的蛙跳算法实现
  • Android Glide插件化开发实战:模块化加载与自定义扩展
  • 从0开始搭建一个前端项目(vue + vite + typescript)
  • AI驱动企业数字化转型:解码未来三年的智能化变革密码
  • 深度学习④【经典卷积神经网络演进:从LeNet到ResNet(重要意义)的架构革命】
  • 【目标检测】论文阅读6
  • nvme ,文件系统、namespace、LBA,文件名的浅浅理解
  • 解决Visual Studio中UWP设计器无法显示的问题:需升级至Windows 11 24H2