共 11 节,按顺序
- 120 分钟
什么是 Jenkins
随便打开一家银行、电信运营商、医院信息科,或者一家做了十年以上软件的游戏工作室的招聘页面,你都能找到提到 Jenkins 的岗位。乍看之下这挺奇怪。Jenkins 老了。界面看着过时,因为它确实过时。更漂亮、更贴合云环境的竞争者,比如 GitLab CI 和 GitHub...
History and Hudson forkWhy Jenkins is still everywhereController and agentsPlugin ecosystemJenkins vs GitLab CI vs GitHub Actions - 225 分钟
你的第一个 Freestyle Job
关于 Jenkins 是什么、它为什么能一直留存下来,你已经读过了。但这些在你亲眼看到 Jenkins 克隆一个仓库、运行一条命令、并告诉你成没成之前,都还不算数。这一课带你走到那一步,走的是多数人当年第一次认识 Jenkins...
New ItemFreestyle projectSource Code ManagementExecute shell build stepBuild NowConsole output - 330 分钟
您的第一个声明式 Pipeline
回到上一课你建的那个自由风格作业,想象半年过去了。那段 shell 脚本从三行长到了八十行。同事上周改了构建顺序,谁也没发现,直到一次部署出事,因为那次改动是浏览器里点了几下,不是差异里的一行。没人能告诉你这个作业一个月前长什么样,因为它的任何部分都从来没被提交到任何地方。基于文本、纳入版本管理的构...
Pipeline job typeJenkinsfileAgent anyStages and stepsDeclarative vs scripted - 430 分钟
阶段、步骤与 Post 块
你的第一条流水线只有一行 sh,而且跑通了。真实的流水线是签出代码、构建、测试、打包,一旦这四步连成一串,新的问题就来了:某一步失败了,而控制台日志是九百行没有任何路标的 shell 输出。更糟的是,测试步骤失败时流水线当场停住,本来能告诉你*哪个*测试失败的那份测试报告根本没机会发布。
Multiple stagesSh and echoArchiveArtifactsJunit stepPost alwaysPost success and failure - 525 分钟
工件 (Artifacts) 与测试结果
凌晨两点构建变红了,总得有人查清楚为什么。他打开这个作业,页面上只有一个控制台日志的链接:一万一千行编译器噪声、测试运行器的絮叨和 shell 的执行跟踪。那个坏掉的测试的名字就埋在里面某个地方。这就是一条只会显示绿或红、别的什么都不告诉你的流水线。
ArchiveArtifactsJunit stepPublishHTMLTest trend graphFingerprinting - 630 分钟
环境与凭据
你的流水线要把镜像推到镜像仓库,而镜像仓库要一个密码。最快能跑通的做法是把密码直接粘进 Jenkinsfile,而 Jenkinsfile 就躺在仓库里,于是这个密码永远留在了 git...
Environment blockCredentials() helperJenkins credentials storeUsername with passwordSecret textSSH key+1 - 730 分钟
并行构建与矩阵构建
五个阶段,每个三分钟,流水线就要跑十五分钟。这个数字不只是让人烦,它会改变大家的行为:没人再等 CI 跑完,推完代码就走人,构建挂了红着一个小时也没人看。而办法往往就摆在眼前,因为静态检查、单元测试和类型检查之间根本不需要彼此的输出。它们之所以一个接一个跑,只是因为你把它们写成了一串。
Parallel inside a stageFan-out fan-inMatrix blockAxes and axisExcludes - 830 分钟
Agents 与 Docker
周二构建通过了,周三就失败了,代码一行没动。后来发现,周二的构建落在了有人装过 Node 20 的那台代理节点上,而周三落在了还跑着 Node 16 的那台。这就是"在我机器上是好的",只不过现在这台机器是构建服务器,而且没人说得清到底是哪一台跑了你的作业。
Agent any vs agent noneAgent labelsAgent dockerAgent kubernetesPer-stage agents - 925 分钟
触发器 (Triggers) 与计划
一条只有人点了"立即构建"才会跑的流水线,算不上持续集成,它只是一个按钮。持续集成的价值来自那些没人主动要求的构建:合并出问题后四分钟就把它抓出来的那一次,或者夜里发现某个依赖发布了一个坏版本的那一次。这一切的前提是流水线自己会启动。
Triggers blockCron syntax with HPollSCMMultibranch PipelineGitHub and GitLab webhooks - 1030 分钟
共享库 (Shared Libraries)
在你们组织里随便打开三个 Jenkinsfile,会发现同样的十五行 Groovy 三个文件里都有。Slack 通知那一段。“构建并推送 Docker 镜像”那一段。知道你们 Kubernetes...
Vars folderSrc folder@Library annotationCustom stepsGlobal utilities - 1145 分钟
顶点项目:为 Node.js 应用构建代码化 Pipeline
该把学过的东西全部接起来了。你要写一个 Jenkinsfile,把一个小型 Node.js 项目的活儿从头干到尾:拉取代码、安装依赖、并行跑代码检查和测试、构建 Docker 镜像、只在构建 main 分支时才推送到镜像仓库、发布 JUnit...
Full JenkinsfileCheckoutParallel lint and testDocker build and pushCredentialsJunit results+1
用你的语言学习 Jenkins
每一节课、测验和导师回复都以你的语言显示。AI 导师会用你提问的语言来回答。
Roles that use Jenkins
See how hiring teams interview engineers on Jenkins, in production-like environments.
CI/CD Engineer
Hire CI/CD engineers who keep your release train on time. Interview them in real GitHub Actions, GitLab CI and Jenkins workspaces with builds that fail the way they do in production.
See the interviewRelease/Build Engineer
Hire release and build engineers who make shipping boring. Real repos, real artifact stores, real signing flows. We record every step they take.
See the interviewDevOps Engineer
Hire DevOps engineers who actually ship. Run live or take-home interviews in production-like Linux environments with Docker, Kubernetes, Terraform and CI/CD. See how they debug, automate, and work alongside AI.
See the interview