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

@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.dtcms.com/a/355915.html

相关文章:

  • 深入 OpenHarmony 内核:设备待机管理模块的休眠调度与资源节能技术
  • AT_abc407_f [ABC407F] Sums of Sliding Window Maximum
  • 告别低效!三坐标测量机提高油缸导向套检测效率
  • 拷贝构造和赋值重载有什么区别
  • 转发、重定向
  • 什么是强化学习? ——— 帮助新手了解
  • 基于51单片机的远程wifi浇花系统设计
  • Snagit 2025.3.0 截图贴图录像编辑
  • Android Keystore签名文件详解与安全防护
  • shell编程学习
  • 基于深度学习的档案级图像修复:Coderformer AI技术解析与应用实践
  • 一、晶振与布局布线处理
  • Python Imaging Library (PIL) 全面指南:Python Imaging Library (PIL)基础图像处理入门
  • 呼叫中心录音加密与数据隔离技术方案全解析
  • Wagtail 扩展 HomePage 模型(一个简单的 例子)
  • 人工智能-python-深度学习-过拟合与欠拟合:概念、判断与解决方法
  • 鸿蒙Harmony-从零开始构建类似于安卓GreenDao的ORM数据库(三)
  • 详解多智能体架构:以 Open Deep Research 项目为例
  • Android中设置RecyclerView滑动到指定条目位置
  • container向harbor推送镜像报错 x509: certificate signed by unknown authority
  • redis添加超时设置
  • SONiC 之 Testbed(2)Ansible
  • Ansible 角色与 Galaxy 生态:角色复用、集合安装与系统角色配置详解
  • 半导体全自动化无人工厂应用
  • Zigbee与LoRaWAN物联网协议深度对比与技术选型指南
  • 激活函数学习
  • FIO的使用教程
  • 数据结构---链表操作技巧
  • 关于PCB面试问题
  • 01.<<基础入门:了解网络的基本概念>>