在WSL上的部署Jenkins

目录

一、Jenkins介绍

二、Jenkins和Ansible的区别

三、安装WSL

[1. 安装WSL时默认安装Ubuntu](#1. 安装WSL时默认安装Ubuntu)

[2. 安装WSL时选择其他的版本(如centos)](#2. 安装WSL时选择其他的版本(如centos))

[(1)安装 WSL(管理员 PowerShell)](#(1)安装 WSL(管理员 PowerShell))

[(2)准备 CentOS 镜像](#(2)准备 CentOS 镜像)

[3. 首次使用](#3. 首次使用)

[4. 日常怎么用](#4. 日常怎么用)

[5. 文件互访](#5. 文件互访)

四、在WSL上部署Jenkins的部署步骤

1、部署步骤

(1)更新系统并安装依赖

[(2)安装 Java 21(Jenkins LTS 要求)](#(2)安装 Java 21(Jenkins LTS 要求))

[(3)添加 Jenkins 官方仓库并安装](#(3)添加 Jenkins 官方仓库并安装)

(4)启动并设置开机自启

(5)获取初始管理员密码

[(6)在 Windows 浏览器访问](#(6)在 Windows 浏览器访问)

(7)常用管理命令

[2、WSL 使用注意](#2、WSL 使用注意)

[3、可选:以后用 Docker 部署](#3、可选:以后用 Docker 部署)

附加:常见的CI工具

[云托管 / SaaS](#云托管 / SaaS)

[自建 / 开源](#自建 / 开源)

云厂商自带


一、Jenkins介绍

Jenkins 是一款开源的持续集成 / 持续交付(CI/CD)自动化服务器

简单说:你把代码推到仓库后,Jenkins 可以按规则自动跑构建、测试、打包、部署,减少手工操作。

常见用途:

  • 代码提交后自动编译、跑测试
  • 生成安装包或 Docker 镜像
  • 自动部署到测试 / 生产环境
  • 用流水线(Pipeline)把多步流程串起来

特点:

  • 插件生态很大,能对接 Git、Docker、Kubernetes、各类云和构建工具
  • 用 Jenkinsfile(通常写在项目里)定义流水线,便于版本管理
  • 免费开源,社区成熟,很多公司仍在用

二、Jenkins和Ansible的区别

两者都常出现在运维/自动化里,但职责不同:

Jenkins Ansible
定位 CI/CD 编排平台 配置管理 / 批量运维工具
主要做什么 触发并编排流水线:拉代码 → 构建 → 测试 → 发布 在服务器上执行任务:装软件、改配置、启停服务、部署应用
工作方式 调度"流程怎么跑" 用 Playbook 描述"机器上要变成什么样 / 要执行什么"
典型场景 代码提交后自动构建测试并触发部署 一次性或重复地配置 100 台机器、部署应用、补丁更新
核心产物 Pipeline / Job Playbook / Role

关系可以这样理解:

  • Jenkins:管"什么时候、按什么顺序做整条流水线"
  • Ansible:管"具体怎么改服务器、怎么部署"

很多团队会把它们一起用:Jenkins 跑 CI,到部署阶段再调用 Ansible 去目标机器执行。

Jenkins 更偏流水线调度,Ansible 更偏远程执行与配置落地。

三、安装WSL

WSL(Windows Subsystem for Linux) 是微软在 Windows 上提供的功能,让你在 Windows 里直接跑一套 Linux 环境,而不用再开一台完整虚拟机或双系统。

简单说:Windows 和 Linux 可以同时用------浏览器、Office 在 Windows;bashapt/yum、开发工具在 Linux。

作用:

  • 用 Linux 命令行和常见工具(sshgitpythondocker 等)
  • 装 Ubuntu、Debian、CentOS(导入)等发行版
  • 和 Windows 共享文件(如访问 C: 盘)
  • 适合做 Linux 开发、运维练习、跑服务端脚本

1. 安装WSL时默认安装Ubuntu

管理员身份打开 PowerShell 或终端,执行:

bash 复制代码
wsl --install

默认会安装 WSL2,并带上 Ubuntu。装完后重启电脑。

只想装 Ubuntu,或指定发行版:

bash 复制代码
wsl --list --online # 查看可用发行版

wsl --install -d Ubuntu # 安装 Ubuntu

2. 安装WSL时选择其他的版本(如centos)

(1)安装 WSL(管理员 PowerShell)

bash 复制代码
wsl --install --no-distribution

重启电脑。确认 WSL2:

bash 复制代码
wsl --set-default-version 2

(2)准备 CentOS 镜像

首选:官方 CentOS Stream WSL 镜像(推荐)

格式是 .wsl(专给 WSL 用,不必再找 .tar)。

安装方式(二选一):

  1. 下载后 双击 .wsl 文件
  2. 或在管理员 PowerShell 里:
bash 复制代码
wsl --install --from-file .wsl的完整路径 --name CentOS的名字#(路径和文件名改成实际下载的。)

3. 首次使用

重启后打开终端(开始菜单搜)运行:

bash 复制代码
wsl

第一次会让设置 Linux 用户名和密码(密码输入时不显示,属正常)。

4. 日常怎么用

场景 做法
进入 Linux wsl,或开始菜单点 Ubuntu
退出 输入 exit
在 Windows 里跑一条 Linux 命令 wsl ls /home
看已安装发行版 wsl -l -v
关机(释放内存) wsl --shutdown

5. 文件互访

  • Windows 文件在 Linux 里:/mnt/c/Users/用户名/
  • Linux 文件在 Windows 里:资源管理器地址栏输入 \\wsl$\Ubuntu\

项目代码建议放在 Linux 家目录(如 ~/projects),比放在 /mnt/c/... 性能更好。

四、在WSL上部署Jenkins的部署步骤

我在本地上使用的是发行版 CentOS Stream 9,暂未安装Docker/Podman和Java,因此我采用CentOS Stream 9 原生安装 Jenkins LTS

提示:发行版本可以根据自己的环境进行安装,Docker和Podman暂时先不用安装,等到后期有需要时可以再安装。

1、部署步骤

在 PowerShell 或 Windows Terminal 里进入 WSL:

bash 复制代码
wsl -d CentOS-Stream9

(1)更新系统并安装依赖

bash 复制代码
sudo dnf -y update

sudo dnf -y install fontconfig git wget curl

Jenkins 需要字体相关依赖,否则 UI 可能异常。

如果在下载数据,dnf 卡在拉仓库元数据(或卡在某个镜像的连接/握手)阶段时,有可能是镜像源选择慢 / 首个镜像不通或很慢,导致元数据还没开始下载,所以进度条停在 0。

这种情况下,有时多等一会儿会自己跳到下一个镜像;有时会卡很久。

针对这种问题的解决方案是:

  1. Ctrl+C 停掉当前 dnf
  2. 换成国内镜像(推荐),再更新

国内镜像如清华镜像源(CentOS Stream 9):

bash 复制代码
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.stream.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream|g' \
-i.bak /etc/yum.repos.d/centos*.repo /etc/yum.repos.d/centos-addons.repo

sudo dnf clean all

sudo dnf -y makecache

sudo dnf -y update

不同版本 repo 写法不同,所以再改镜像源之前先检查机器上的 repo 文件

(2)安装 Java 21(Jenkins LTS 要求)

bash 复制代码
sudo dnf -y install java-21-openjdk java-21-openjdk-devel

java -version

应看到类似 openjdk version "21.x.x"

(3)添加 Jenkins 官方仓库并安装

bash 复制代码
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

sudo dnf -y install jenkins

(4)启动并设置开机自启

bash 复制代码
sudo systemctl daemon-reload

sudo systemctl enable --now jenkins

sudo systemctl status jenkins

状态应为 active (running)

(5)获取初始管理员密码

bash 复制代码
sudo cat /var/lib/jenkins/secrets/initialAdminPassword

复制输出的一长串密码。

(6)在 Windows 浏览器访问

打开:http://localhost:8080

按向导操作:

  1. 粘贴初始密码
  2. 选 Install suggested plugins
  3. 创建管理员账号
  4. 实例 URL 可保持默认 http://localhost:8080/

(7)常用管理命令

bash 复制代码
sudo systemctl start jenkins

sudo systemctl stop jenkins

sudo systemctl restart jenkins

sudo systemctl status jenkins

# 日志
sudo journalctl -u jenkins -f

数据目录:/var/lib/jenkins

配置文件:/etc/sysconfig/jenkins(部分版本)

/usr/lib/systemd/system/jenkins.service


2、WSL 使用注意

(1)关掉电脑前:先执行停止jenkins

bash 复制代码
sudo systemctl stop jenkins

目的:减少异常退出。

(2)WSL 被关掉后:下次 wsl 启动后若 Jenkins 没起来,执行:

bash 复制代码
sudo systemctl start jenkins

(3)改端口(若 8080 被占用):

bash 复制代码
sudo systemctl edit jenkins

写入例如:

bash 复制代码
[Service]

Environment="JENKINS_PORT=8081"

然后:

bash 复制代码
sudo systemctl daemon-reload

sudo systemctl restart jenkins

(4)只本机访问即可:WSL2 下 localhost:8080 一般已够用;若局域网其他机器要访问,再考虑 Windows 防火墙与端口转发。

3、可选:以后用 Docker 部署

当前本地没有 Docker。若以后要容器化,可先装 Docker Desktop(勾选 WSL2 集成),再用官方镜像:

bash 复制代码
docker run -d --name jenkins \
-p 8080:8080 -p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts-jdk17

附加:常见的CI工具

常见的 CI(持续集成)工具大致分几类:

云托管 / SaaS

  • GitHub Actions --- 和 GitHub 深度集成,用得最多
  • GitLab CI/CD --- 和 GitLab 一体,Pipeline 写在 .gitlab-ci.yml
  • Azure DevOps Pipelines --- 微软体系,企业常见
  • CircleCI --- 云原生,配置灵活
  • Bitbucket Pipelines --- Atlassian / Bitbucket 用户常用
  • Travis CI --- 早期很流行,现在相对少用

自建 / 开源

  • Jenkins --- 插件最多、可完全自托管的老牌方案
  • TeamCity --- JetBrains 出品,Java/.NET 团队不少
  • Buildkite --- 控制面在云端,构建机可自建
  • Drone --- 轻量、容器友好
  • Woodpecker CI --- Drone 社区分支,偏自托管

云厂商自带

  • AWS CodeBuild / CodePipeline
  • Google Cloud Build
  • 阿里云效 Flow / 腾讯 CODING

目前最主流的起步选择一般是:GitHub Actions、GitLab CI、Jenkins

相关推荐
叮咚侠5 小时前
docker安装的kibana+elasticsearch,突然kibana界面打不开了
运维·jenkins
fengyehongWorld1 天前
Jenkins 安装与简单配置
运维·jenkins
weixin_307779132 天前
Linux下Jenkins数据故障的系统化排查Shell脚本
linux·运维·服务器·jenkins
海兰5 天前
【Elasticsearch】工作流自动化评估
elasticsearch·自动化·jenkins
tianyuanwo5 天前
深入掌握 java -jar 命令:从基础到 Jenkins Agent 实战
java·jenkins·jar
这个需求做不了6 天前
Jenkins自动化构建与CI/CD流水线,并配置GitLab
java·ci/cd·自动化·gitlab·jenkins
007张三丰8 天前
软件测试专栏(15/20):REST Assured接口自动化框架实战
运维·自动化·jenkins·接口自动化·rest·assured
qq_452396239 天前
第二篇:《Jenkins 从零搭建:安装、配置与第一个 Pipeline》
java·运维·jenkins
用户6757049885029 天前
手摸手教你玩 Jenkins,一次搞懂 CI/CD!(第三章:发布之nodeAgent)
后端·jenkins