Jenkins安装部署完全指南 - Docker/系统安装一网打尽

Jenkins安装部署

一、前言

在上一篇文章中,我们了解了Jenkins是什么以及CI/CD的基本概念。现在,让我们动手把Jenkins安装起来!本文将介绍三种主流的安装方式,从最推荐的Docker方式到传统的系统安装,手把手带你完成Jenkins的部署。

二、Docker方式安装Jenkins(推荐)

为什么推荐Docker?因为它最简单、最干净、最不容易出问题。一条命令就能跑起来,不用操心依赖冲突和环境配置。

2.1 使用docker run启动

最简单的方式,一条命令搞定:

docker run -d \
  --name jenkins \
  -p 8080:8080 \
  -p 50000:50000 \
  -v jenkins_home:/var/jenkins_home \
  --restart=on-failure \
  jenkins/jenkins:lts

参数说明:

  • -d:后台运行容器
  • --name jenkins:给容器起个名字叫jenkins
  • -p 8080:8080:将容器内8080端口映射到主机8080端口(Web界面访问端口)
  • -p 50000:50000:Agent通信端口(JNLP连接用)
  • -v jenkins_home:/var/jenkins_home:数据持久化,把Jenkins数据存在Docker卷中
  • --restart=on-failure:容器异常退出时自动重启
  • jenkins/jenkins:lts:使用长期支持版镜像(推荐生产环境用LTS)

如果你想使用最新版(包含最新功能但可能不太稳定):

docker run -d \
  --name jenkins \
  -p 8080:8080 \
  -p 50000:50000 \
  -v jenkins_home:/var/jenkins_home \
  jenkins/jenkins:latest

2.2 使用docker-compose启动

如果你更喜欢配置文件的方式(管理更方便),可以用docker-compose。创建 docker-compose.yml 文件:

version: '3.8'

services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins
    privileged: true
    user: root
    ports:
      - "8080:8080"
      - "50000:50000"
    volumes:
      - jenkins_home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped

volumes:
  jenkins_home:

然后执行:

# 启动
docker-compose up -d

# 查看日志
docker-compose logs -f jenkins

# 停止
docker-compose down

小贴士:这里映射了Docker socket(/var/run/docker.sock),这样Jenkins就可以在容器内调用宿主机的Docker,方便后续做Docker构建和部署。

2.3 查看初始密码

Jenkins首次启动后会生成一个初始管理员密码,你需要用它来解锁Jenkins:

# 方式1:从容器日志获取
docker logs jenkins

# 方式2:从容器内文件获取
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

你会看到类似这样的输出:

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

把这个密码复制下来,后面要用!

三、Linux系统直接安装

如果你不想用Docker,也可以直接在Linux系统上安装Jenkins。

3.1 CentOS/RHEL安装

第一步:安装Java环境(Jenkins需要JDK 11或17):

# 安装OpenJDK 17
sudo yum install -y java-17-openjdk java-17-openjdk-devel

# 验证安装
java -version

第二步:添加Jenkins仓库并安装:

# 添加Jenkins仓库
sudo wget -O /etc/yum.repos.d/jenkins.repo \
  https://pkg.jenkins.io/redhat-stable/jenkins.repo

# 导入GPG密钥
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

# 安装Jenkins
sudo yum install -y jenkins

第三步:启动Jenkins:

# 启动Jenkins服务
sudo systemctl start jenkins

# 设置开机自启
sudo systemctl enable jenkins

# 查看服务状态
sudo systemctl status jenkins

第四步:获取初始密码:

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

3.2 Ubuntu/Debian安装

# 安装JDK 17
sudo apt update
sudo apt install -y openjdk-17-jdk

# 添加Jenkins仓库密钥
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | \
  sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null

# 添加Jenkins仓库
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
  https://pkg.jenkins.io/debian-stable binary/ | \
  sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null

# 安装Jenkins
sudo apt update
sudo apt install -y jenkins

# 启动
sudo systemctl start jenkins
sudo systemctl enable jenkins

3.3 防火墙配置

如果无法访问Jenkins页面,可能是防火墙的问题:

# CentOS/RHEL - firewalld
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

# Ubuntu - ufw
sudo ufw allow 8080/tcp
sudo ufw reload

四、首次启动与初始化配置

安装完成后,打开浏览器访问 http://你的服务器IP:8080,你会看到Jenkins的解锁页面。

4.1 解锁Jenkins

在解锁页面粘贴刚才获取的初始密码,点击"继续"。

4.2 安装插件

接下来会看到插件安装页面,有两个选择:

  • 安装推荐的插件:新手请选这个!它会自动安装最常用的插件
  • 选择插件来安装:老手可以自定义选择

强烈建议新手选择"安装推荐的插件",等待安装完成即可(通常需要2-5分钟)。

推荐安装的插件包括:

  • Git Plugin - 代码仓库集成
  • Pipeline - 流水线支持
  • Docker Plugin - Docker集成
  • Credentials Binding - 凭据管理
  • Mailer - 邮件通知

4.3 创建管理员账户

插件安装完成后,会要求你创建第一个管理员账户:

  • 用户名:建议用admin或你的名字
  • 密码:设置一个你记得住的密码
  • 全名:显示名称
  • 邮箱:用于接收通知

填写完毕后点击"保存并完成"。

4.4 配置Jenkins URL

确认Jenkins的访问地址,默认是 http://服务器IP:8080/,如果你有域名可以改成域名。点击"保存并完成"。

看到"Jenkins已就绪!"的提示,恭喜你,安装完成了!

五、插件管理详解

Jenkins的强大很大程度上来自它的插件生态。学会管理插件非常重要。

5.1 进入插件管理

点击左侧菜单 Manage Jenkins(管理Jenkins)Plugins(插件)

这里有四个标签页:

  • Updates(更新):有新版本的插件
  • Available(可选):可以安装的新插件
  • Installed(已安装):当前已安装的插件
  • Advanced(高级):高级设置,如更新站点配置

5.2 常用必装插件推荐

以下插件建议全部安装:

# 版本控制
Git Plugin           # Git仓库支持
GitLab Plugin        # GitLab集成
GitHub Plugin        # GitHub集成

# 构建工具
Maven Integration    # Maven项目支持
Gradle Plugin        # Gradle项目支持
NodeJS Plugin        # Node.js项目支持

# 流水线
Pipeline             # Pipeline核心
Pipeline Stage View  # Pipeline可视化视图
Multibranch Pipeline # 多分支Pipeline

# 部署
Docker Pipeline      # Docker Pipeline支持
SSH Plugin           # 远程SSH部署
Publish Over SSH     # SSH发布插件

# 通知
Email Extension      # 增强邮件通知
DingTalk             # 钉钉通知

# 代码质量
SonarQube Scanner    # 代码质量检查
Checkstyle           # 代码规范检查

# 其他实用
Credentials          # 凭据管理
Role-based Strategy  # 角色权限管理
ThinBackup           # 备份恢复

5.3 安装插件

在"Available plugins"标签页,搜索你要安装的插件名称,勾选后点击"Install without restart"(不重启安装)或"Download now and install after restart"(重启后安装)。

六、全局工具配置

安装完Jenkins后,需要配置一些全局工具,让Jenkins知道它们在哪里。

进入 Manage Jenkins → Tools(旧版本叫Global Tool Configuration)。

6.1 配置JDK

  • 点击"Add JDK"
  • 取消勾选"Install automatically"(如果是Docker方式,JDK已经在容器里了)
  • Name:填 JDK17
  • JAVA_HOME:填JDK安装路径,Docker方式通常是 /opt/java/openjdk

如何找到JAVA_HOME?

# Docker方式
docker exec jenkins echo $JAVA_HOME

# 系统安装方式
readlink -f $(which java) | sed 's:/bin/java::'

6.2 配置Maven

  • 点击"Add Maven"
  • 可以勾选"Install automatically",选择Maven版本
  • Name:填 Maven3

6.3 配置Git

  • 通常Jenkins会自动检测到系统中的Git
  • Name:填 Default
  • Path to Git executable:填 git 或完整路径
# 查看git路径
which git

七、常见安装问题与解决方案

7.1 端口被占用

# 查看端口占用
netstat -tlnp | grep 8080

# 杀掉占用进程
kill -9 进程号

# 或者改用其他端口
docker run -d -p 9090:8080 --name jenkins jenkins/jenkins:lts

7.2 权限不足

# Docker方式 - 确保卷权限
docker exec -u root jenkins chown -R jenkins:jenkins /var/jenkins_home

# 系统安装方式
sudo chown -R jenkins:jenkins /var/lib/jenkins

7.3 插件安装失败

插件安装失败通常是网络问题,解决方案:

  • 更换更新站点为国内镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.json
  • 手动下载插件的.hpi文件,在Advanced标签页上传安装
  • 检查代理设置(如果在公司内网)

7.4 忘记管理员密码

# 1. 停止Jenkins
docker stop jenkins  # 或 systemctl stop jenkins

# 2. 编辑配置文件,暂时关闭安全
# Docker方式
docker exec jenkins sed -i 's/<useSecurity>true</useSecurity>/<useSecurity>false</useSecurity>/' /var/jenkins_home/config.xml

# 系统安装方式
sudo sed -i 's/<useSecurity>true</useSecurity>/<useSecurity>false</useSecurity>/' /var/lib/jenkins/config.xml

# 3. 重启Jenkins
docker start jenkins  # 或 systemctl start jenkins

# 4. 访问Jenkins,进入管理页面重置密码

# 5. 重新开启安全

7.5 Jenkins启动缓慢

Jenkins默认使用128MB堆内存,可能不够用。修改内存配置:

# Docker方式
docker run -d \
  --name jenkins \
  -e JAVA_OPTS="-Xmx2048m -Xms512m" \
  -p 8080:8080 \
  -v jenkins_home:/var/jenkins_home \
  jenkins/jenkins:lts

# 系统安装方式 - 编辑 /etc/sysconfig/jenkins(CentOS)
# 或 /etc/default/jenkins(Ubuntu)
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx2048m -Xms512m"

八、总结

本文详细介绍了Jenkins的三种安装方式:

  • Docker安装:最推荐,简单快速,环境隔离
  • CentOS/RHEL安装:传统方式,适合已有服务器
  • Ubuntu/Debian安装:类似CentOS,包管理器不同

同时讲解了首次启动的初始化配置、插件管理和全局工具配置。下一篇我们将深入Jenkins的界面,了解各个功能区域的使用方法。

发表回复

后才能评论