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

Jenkins 已成过去式!新兴替代工具GitHub Actions即将崛起

都 2025 年了,我是真的不想再用 Jenkins 了!

我们运维工程师在工作中经常会遇到:Jenkins 服务器突然宕机,Jenkins 正在构建的任务又失败了,Jenkins 刚更新完的插件又挂掉了....,等等诸如此类的问题,有时候搞的我们真的是精力憔悴,接近奔溃的边缘。

众所周知,Jenkins 应该是大中小互联网科技型企业首选的 CI/CD 工具。

但,使用至今,它真的好用吗?它真适合所有企业吗?

带着这些问题,我不得不重新审视 Jenkins 这个强大的 CI/CD 工具。

随着时间的推移,Jenkins 正在显露老态,逐渐变的力不从心。

比如:单体结构的性能与扩展瓶颈,插件生态的兼容性与维护困境,用户学习曲线陡峭与界面落后,云原生与多端部署的短板,管理与运维成本随规模扩大而显著上升。

诸如上述的种种原因,Jenkins 难以满足现代 CI/CD 对灵活性、云原生支持及高效运维的核心需求。

GitHub Actions:Jenkins 替代方案由此而生。

Jenkins 已成过去式!

新兴工具即将崛起!

GitHub Actions 简介

GitHub Actions 是 GitHub 提供的自动化工作流平台,它允许开发者通过定义工作流(Workflows)来自动化软件开发中的各种任务,例如代码构建、测试、部署、发布等。

核心优势在于与 GitHub 生态深度集成,无需额外工具即可实现从代码提交到生产环境的全流程自动化。

核心优势

无缝集成 GitHub:GitHub Actions是GitHub平台的一部分,因此它能够与GitHub的代码仓库、问题跟踪、Pull Request等功能无缝集成。这使得开发者能够在GitHub平台上完成从代码提交到部署的全过程流程自动化,无需切换工具,大大提高了开发效率。

跨平台支持:支持 Linux、Windows、macOS 虚拟机,以及容器化环境(Docker),满足多样化需求。

灵活的调度机制:支持基于事件、定时或手动触发,适应不同场景(如持续集成、夜间构建)。

强大的复用性:通过 Action 市场共享和复用模块,减少重复开发,提升效率。

免费额度:公共仓库每月提供 2000 分钟免费执行时间,私有仓库每月 3000 分钟(按使用量计费)。

核心概念

工作流(Workflow)

由 YAML 文件定义,描述自动化任务的执行流程。工作流存储在仓库的 .github/workflows/ 目录下,支持多文件配置。

事件(Event)

触发工作流运行的机制,常见事件包括:

  • 代码推送push
  • 拉取请求pull_request
  • 定时任务schedule
  • 手动触发workflow_dispatch
  • 标签创建create

任务(Job)

工作流中的独立执行单元,可并行或串行运行。每个任务在独立的虚拟机或容器中执行。

步骤(Step)

任务中的具体操作,可以是:

  • 运行命令run
  • 使用 Action(预定义或自定义的复用模块)

Action

可复用的代码模块,封装了特定功能(如安装依赖、部署到云服务)。GitHub 官方和社区提供了大量现成 Action(如 actions/checkoutactions/setup-node)。

对比其他工具

特性

GitHub Actions

Jenkins

GitLab CI

CircleCI

集成度

深度集成 GitHub

独立部署

深度集成 GitLab

独立部署

配置复杂度

低(YAML)

高(需配置服务器)

中(YAML)

中(YAML)

跨平台支持

优秀(VM/容器)

优秀

优秀

优秀

免费额度

公共仓库 2000 分钟/月

需自托管

私有项目免费

公共仓库免费

社区生态

丰富(官方+社区 Action)

插件丰富

集成 GitLab 生态

插件丰富

快速入门示例

示例 1:Node.js 项目 CI
name: Node.jsCIon:[push,pull_request]jobs:
build:runs-on:ubuntu-latest# 运行环境steps:-uses:actions/checkout@v4# 检出代码-uses:actions/setup-node@v3# 设置 Node.js 环境with:node-version:'18'-run:npminstall# 安装依赖-run:npmtest# 运行测试
示例 2:自动部署到 GitHub Pages
name: DeploytoGitHubPageson:
push:branches:[main]jobs:
deploy:runs-on:ubuntu-lateststeps:-uses:actions/checkout@v4-run:npminstall&&npmrunbuild# 构建静态文件-uses:peaceiris/actions-gh-pages@v3# 部署到 GitHub Pageswith:github_token:${{secrets.GITHUB_TOKEN}}publish_dir:./dist

从 Jenkins 迁移到 GitHub Actions

从 Jenkins 迁移到 GitHub Actions,这也是很多用户非常关心的重点问题,从实际操作过程中,我们发现远没有想象中的复杂,还是比较简单的。

Jenkins 和 GitHub Actions 两者在工作流程、Jobs、容器支持等多个方面都相似。

迁移流程梳理

首先,我们需要梳理 Jenkinsfile,记录所有 stages、steps、environment 变量和插件依赖。

然后,将 Jenkins 插件(如 maven、docker)替换为 GitHub Actions 的 Marketplace Action 或原生指令。

在语法转换方面,我们需要将 Jenkins Pipeline 转换成 GitHub Actions YAML,下面通过一个小例子来了解一下转换过程:

Jenkins Pipeline 示例

pipeline {agent anystages {stage('Checkout') {steps { git 'https://github.com/user/repo.git' }}stage('Build') {environment { NODE_ENV = 'production' }steps { sh 'npm install && npm run build' }}}
}

GitHub Actions 转换

name: CIPipeline
on:[push]
jobs:build:runs-on:ubuntu-lateststeps:-name:Checkoutcodeuses:actions/checkout@v4-name:SetupNode.jsuses:actions/setup-node@v3with:node-version:'18'-name:Buildenv:NODE_ENV:productionrun: |npm installnpm run build
关键指令对比

Jenkins 指令

GitHub Actions 替代方案

agent any

runs-on: ubuntu-latest(指定运行器)

environment { ... }

env: 或 jobs.<job_id>.env(作业级环境变量)

parallel stages

通过 jobs.<job_id>.needs 控制依赖关系

post 块(成功/失败)

jobs.<job_id>.steps 中使用 if: success()/failure()

迁移工具

我们也可以使用自动辅助工具 GitHub Actions Importer 来迁移。

#安装
gh extension install github/gh-actions-importer#试运行
gh actions-importer dry-run jenkins --source-url https://jenkins.example.com/job/my-pipeline/#迁移
gh actions-importer migrate jenkins --source-url https://jenkins.example.com/job/my-pipeline/ --target-repo user/repo

将 Jenkins 脚本(如 Groovy)拆分为多个步骤或自定义 Action,使用 GitHub Actions 的 inputs 和 outputs 传递参数。

通过以上步骤,团队可以系统化地完成迁移,同时利用 GitHub Actions 的现代特性提升开发效率。

结语

在云原生时代,开发者更倾向于使用云服务来构建和管理CI/CD管道。然而,Jenkins 的自我托管模型需要更多的手动配置,难以与云服务无缝集成。

相比之下,GitHub Actions 等云原生 CI/CD 工具则提供了更便捷、更高效的解决方案。

目前,已有大量企业和开发者从 Jenkins 迁移到 GitHub Actions。

此外,GitHub Actions 还受到了开源社区的广泛支持,拥有丰富的插件和集成选项。

云原生、低代码/无代码、AI 等技术的兴起,也在推动 CI/CD 工具向更高效、更智能的方向发展。GitHub Actions 等云原生 CI/CD 工具正是这一趋势的产物。

感兴趣的读者朋友们可以试一试!也期待更多在用的伙伴们分享你们的使用心得与踩坑经验,留言区等你们!


http://www.dtcms.com/a/540059.html

相关文章:

  • 数组-环形数组【arr2】
  • 打开AI黑箱:SHAP让医疗AI决策更清晰的编程路径
  • 营销型商务网站wordpress html5 主题
  • 知识掘金者:API+Dify工作流,开启「深度思考」的搜索革命
  • 《道德经》第三十八章
  • 企业网站管理系统湖南岚鸿搜狗网站入口
  • 汕头网站推广制作怎么做济南源聚网络公司
  • webrtc代码走读(十)-QOS-Sender Side BWE原理
  • 102-Spring AI Alibaba RAG Pgvector 示例
  • 【刷机分享】解决K20Pro刷入PixelOS后“网络连接”受限问题(附详细ADB命令)
  • Rust 语言入门基础教程:从环境搭建到 Cargo 工具链
  • 【Linux】HTTPS协议
  • node.js 和npm 搭建项目基本流程
  • 【STM32】PWR电源控制
  • 做网页局域网站点配置wordpress仿简书主题
  • 《Linux篇》进程控制——进程创建(写时拷贝)、进程终止(退出码,exit,_exit)
  • 【MATLAB 数据分析学习指南】
  • Android PDF 操作 - AndroidPdfViewer 显示 PDF 异常清单(数据为 null、数据为空、PDF 文件损坏、非 PDF 文件)
  • 界面控件DevExpress WPF v25.2预览 - 模板工具包全新升级
  • 【音视频】H264中的SPS和PPS
  • ThinkPHP6 集成TCP长连接 GatewayWorker
  • TMap的查询
  • SpringCloud--Sleuth 解析
  • 【C++:继承和多态】多态加餐:面试常考——多态的常见问题11问
  • 零基础新手小白快速了解掌握服务集群与自动化运维(十五)Redis模块-哨兵集群
  • 今日Cortex-M3/M4研究总结
  • 2014吉林省赛题解 | CCUT应用OJ题解——Sign in
  • 涿州网站建设推广浙江建筑信息网站
  • 前端性能优化实战指南:从首屏加载到用户体验的全面提升
  • 【OPENGL ES 3.0 学习笔记】第十一天:glDrawArrays和glDrawElements