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

GitHub Actions 入门指南:从零开始自动化你的开发流程

GitHub Actions 是 GitHub 提供的强大自动化工具,它允许开发者在代码仓库中直接定义、构建和执行工作流程。本文将带你深入了解 GitHub Actions 的核心概念,包括工作流(Workflows)、事件(Events)、任务(Jobs)和运行器(Runners),并通过详细的步骤指导你如何在仓库中创建和配置 GitHub Actions。我们还将通过四个实用的示例——Node.js 环境设置、Deno 环境设置、文件压缩和静态网站部署——来展示 GitHub Actions 的实际应用。无论你是初学者还是有一定经验的开发者,本文都将为你提供清晰的指导和启发,帮助你更高效地管理开发流程。

一、GitHub Actions 的核心概念

在开始使用 GitHub Actions 之前,理解其核心概念至关重要。这些概念构成了 GitHub Actions 的基础,帮助你更好地设计和实现自动化工作流程。
在这里插入图片描述

1. 工作流(Workflows)

工作流是 GitHub Actions 的核心,它是一个可配置的自动化过程,用于运行一个或多个任务(Jobs)。工作流通过 YAML 文件定义,并在特定事件触发时运行。你可以在仓库的 .github/workflows 目录下创建多个工作流文件,每个文件对应不同的任务,如构建和测试拉取请求、部署应用到云端等。

2. 事件(Events)

事件是触发工作流的特定活动。例如,代码推送、问题创建或拉取请求提交都会触发相应的事件。通过指定事件类型,你可以精确控制工作流的触发条件,避免不必要的资源消耗。

3. 任务(Jobs)

任务是工作流中的基本执行单元,可以并行或顺序运行。每个任务包含一系列步骤,用于执行命令或操作。通过设置任务依赖关系,你可以确保某些任务在其他任务完成后才开始执行。

4. 运行器(Runners)

运行器是执行工作流的服务器,每次只能处理一个任务。GitHub 提供了多种运行器环境,包括 Ubuntu Linux、Microsoft Windows 和 macOS,以满足不同开发需求。

二、如何在仓库中创建 GitHub Actions

创建 GitHub Actions 有两种主要方式:通过 GitHub 用户界面(UI)或使用本地 IDE。下面我们将详细介绍这两种方法。

1. 使用 GitHub UI 创建 GitHub Actions
  1. 进入你的 GitHub 仓库,点击“Actions”标签。
  2. 选择 GitHub 建议的工作流模板,或根据项目需求自定义。
  3. 在编辑页面中配置工作流,完成后点击“Commit changes”保存。

这种方式适合快速创建简单的工作流,无需手动管理 .github/workflows 目录。

2. 使用本地 IDE 创建 GitHub Actions
  1. 在你的 IDE(如 VS Code)中打开项目。
  2. 在项目根目录下创建 .github/workflows 文件夹,并新建一个 YAML 文件(如 demo.yml)。
  3. 编写工作流配置,保存后推送到 GitHub 仓库。

这种方法适合需要复杂配置或版本控制的工作流。

三、GitHub Actions 语法详解

理解 GitHub Actions 的语法是编写高效工作流的关键。以下是一个示例工作流及其语法解析:

name: Github Action Template
on:pull_request:branches: [ "main" ]schedule:- cron: '30 5,17 * * *'workflow_call:inputs:username:description: 'A username passed from the caller workflow'default: 'john-doe'required: falsetype: string
permissions:actions: read | write | none
jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- name: NPM Install Packagerun: npm installwith:GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}first_name: Githublast_name: Actionif: ${{ github.event_name == 'pull_request' && github.event.action == 'unassigned' }}shell: zshentrypoint: /bin/echo
  • name: 工作流名称,显示在 GitHub UI 中。
  • on: 定义触发工作流的事件,如 pull_requestschedule
  • jobs: 包含一个或多个任务,每个任务定义了运行的环境和步骤。
  • steps: 任务的执行步骤,包括检查代码、运行命令或调用其他操作。

四、GitHub Actions 实用示例

通过实际示例,我们可以更直观地理解 GitHub Actions 的应用场景。

1. Node.js 环境设置
name: Setup Node.js Env
on:push:branches: [ "main" ]
jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- name: Use Node.js ${{ matrix.node-version }}uses: actions/setup-node@v4with:node-version: 21cache: 'npm'- run: npm ci- run: npm run build --if-present- run: npm test

此工作流在代码推送到 main 分支时触发,自动设置 Node.js 环境并运行测试。

2. Deno 环境设置
name: Deno
on:push:branches: [ "main" ]
permissions:contents: read
jobs:test:runs-on: ubuntu-lateststeps:- name: Setup repouses: actions/checkout@v4- name: Setup Denouses: denoland/setup-deno@v2with:deno-version: v2.1.5- name: Run linterrun: deno lint- name: Run testsrun: deno test -A

此工作流用于设置 Deno 环境并运行代码检查和测试。

3. 文件压缩
name: Zip Files
on:release:types: [ published ]
jobs:zip-files:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- uses: vimtor/action-zip@v1.2with:files: dist/ manifest.jsondest: build.zip- uses: actions/upload-artifact@v4with:name: zip filepath: ${{ github.workspace }}/build.zip

此工作流在发布新版本时,将指定文件压缩为 ZIP 格式并保存为工件。

4. 部署静态网站到 GitHub Pages
name: Deploy static content to Pages
on:push:branches: [ "main" ]
permissions:contents: readpages: writeid-token: write
concurrency:group: "pages"cancel-in-progress: false
jobs:deploy:environment:name: github-pagesurl: ${{ steps.deployment.outputs.page_url }}runs-on: ubuntu-lateststeps:- name: Checkoutuses: actions/checkout@v4- name: Setup Pagesuses: actions/configure-pages@v5- name: Upload artifactuses: actions/upload-pages-artifact@v3with:path: '.'- name: Deploy to GitHub Pagesid: deploymentuses: actions/deploy-pages@v4

此工作流在代码推送到 main 分支时,自动部署静态网站到 GitHub Pages。

五、总结

GitHub Actions 是一个功能强大且灵活的自动化工具,能够帮助开发者简化开发流程、提高效率。通过本文的介绍,你已经了解了 GitHub Actions 的核心概念、创建方法、语法详解以及实用示例。无论是设置开发环境、运行测试,还是部署应用,GitHub Actions 都能为你提供强大的支持。

开始尝试在你的项目中集成 GitHub Actions 吧!从简单的任务入手,逐步探索更复杂的应用场景。随着经验的积累,你会发现 GitHub Actions 是提升开发效率的得力助手。如果你有任何问题或需要进一步的指导,欢迎查阅 GitHub 官方文档或社区资源。祝你编程愉快!

http://www.lryc.cn/news/577287.html

相关文章:

  • 手机屏暗点缺陷修复及相关液晶线路激光修复原理
  • 超大js文件多层级引用缓存在网络较差的时候无法调用使用问题
  • BERT 模型详解:结构、原理解析
  • RWKV-8 系列之 DeepEmbedAttention:精简 KV 缓存,尤其适合混合模型(RWKV-7s)
  • MySQL 慢查询日志详解
  • 小白excel中使用VBA
  • [国家电网备考]操作系统
  • 飞算JavaAI 2.0.0深度测评:自然语言编程如何重构开发生产力?
  • 《微信生态裂变增长利器:推客小程序架构设计与商业落地》
  • 【Python使用】嘿马云课堂web完整实战项目第2篇:CMS页面管理需求,后端工程搭建【附代码文档】
  • SpringCloud系列(42)--搭建SpringCloud Config分布式配置总控中心(服务端)
  • 鸿蒙5:组件状态共享
  • STM32-第一节-新建工程,GPIO,点亮LED,蜂鸣器
  • 七天学会SpringCloud分布式微服务——05——OpenFeign
  • Hadoop WordCount 程序实现与执行指南
  • 大数据(3)-Hive
  • 【时时三省】vectorcast使用教程
  • 烘焙工业4.0:自动化升级与制造执行MES系统的深度赋能
  • 【软考中级·软件评测师】下午题·面向对象测试之架构考点全析:分层、分布式、微内核与事件驱动
  • 【原创】【5】【视频二创工具发布】基于视觉模型+FFmpeg+MoviePy实现短视频自动化二次编辑+多赛道
  • 国产车哪款有远程代驾功能?远程代驾+自动驾驶
  • 【Wireshark】高级过滤技巧精讲
  • APP 内存测试--Android Profiler实操(入门版)
  • Unity编辑器扩展之扫描项目中所有图片资源,并找出引用这些图片的预制体及其引用路径,最终导出为CSV报告
  • Monorepo+Pnpm+Turborepo
  • Windows 安装 nodejs npm
  • 网络拓扑图绘制全流程:从架构解析到工具实战
  • Jenkins Pipeline 实战指南
  • Java基础(六):数组全面解析
  • python+uniapp基于微信小程序的生鲜订购系统nodejs+java