GitHub Actions 核心概念与自动化工作流实战
本文介绍 GitHub Actions 的核心概念如工作流、事件、任务及运行器,演示了通过 UI 和本地 IDE 创建工作流的方法,详解 YAML 语法,并提供 Node.js、Deno 环境配置、文件压缩及静态网站部署等实用示例,帮助开发者实现开发流程自动化。

本文介绍 GitHub Actions 的核心概念如工作流、事件、任务及运行器,演示了通过 UI 和本地 IDE 创建工作流的方法,详解 YAML 语法,并提供 Node.js、Deno 环境配置、文件压缩及静态网站部署等实用示例,帮助开发者实现开发流程自动化。

GitHub Actions 是 GitHub 提供的强大自动化工具,允许开发者在代码仓库中直接定义、构建和执行工作流程。本文将深入介绍其核心概念,包括工作流(Workflows)、事件(Events)、任务(Jobs)和运行器(Runners),并通过详细步骤指导如何在仓库中创建和配置 GitHub Actions。
理解核心概念是设计和实现自动化工作流程的基础。

工作流是 GitHub Actions 的核心,是一个可配置的自动化过程,用于运行一个或多个任务(Jobs)。工作流通过 YAML 文件定义,并在特定事件触发时运行。你可以在仓库的 .github/workflows 目录下创建多个工作流文件,每个文件对应不同的任务,如构建和测试拉取请求、部署应用到云端等。
事件是触发工作流的特定活动。例如,代码推送、问题创建或拉取请求提交都会触发相应的事件。通过指定事件类型,你可以精确控制工作流的触发条件,避免不必要的资源消耗。
任务是工作流中的基本执行单元,可以并行或顺序运行。每个任务包含一系列步骤,用于执行命令或操作。通过设置任务依赖关系,你可以确保某些任务在其他任务完成后才开始执行。
运行器是执行工作流的服务器,每次只能处理一个任务。GitHub 提供了多种运行器环境,包括 Ubuntu Linux、Microsoft Windows 和 macOS,以满足不同开发需求。
创建 GitHub Actions 有两种主要方式:通过 GitHub 用户界面(UI)或使用本地 IDE。
.github/workflows 目录。.github/workflows 文件夹,并新建一个 YAML 文件(如 demo.yml)。理解 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: false
type: string
permissions:
actions: read | write | none
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: NPM Install Package
run: npm install
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
first_name: Github
last_name: Action
- if: ${{ github.event_name == 'pull_request' && github.event.action == 'unassigned' }}
shell: zsh
entrypoint: /bin/echo
pull_request 或 schedule。通过实际示例,我们可以更直观地理解 GitHub Actions 的应用场景。
name: Setup Node.js Env
on:
push:
branches: ["main"]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: 21
cache: 'npm'
- run: npm ci
- run: npm run build --if-present
- run: npm test
此工作流在代码推送到 main 分支时触发,自动设置 Node.js 环境并运行测试。
name: Deno
on:
push:
branches: ["main"]
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Setup repo
uses: actions/checkout@v4
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.1.5
- name: Run linter
run: deno lint
- name: Run tests
run: deno test -A
此工作流用于设置 Deno 环境并运行代码检查和测试。
name: Zip Files
on:
release:
types: [published]
jobs:
zip-files:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: vimtor/[email protected]
with:
files: dist/
manifest.json
dest: build.zip
- uses: actions/upload-artifact@v4
with:
name: zip file
path: ${{ github.workspace }}/build.zip
此工作流在发布新版本时,将指定文件压缩为 ZIP 格式并保存为工件。
name: Deploy static content to Pages
on:
push:
branches: ["main"]
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: '.'
- name:
此工作流在代码推送到 main 分支时,自动部署静态网站到 GitHub Pages。
GitHub Actions 是一个功能强大且灵活的自动化工具,能够帮助开发者简化开发流程、提高效率。通过本文的介绍,你已经了解了 GitHub Actions 的核心概念、创建方法、语法详解以及实用示例。无论是设置开发环境、运行测试,还是部署应用,GitHub Actions 都能为你提供强大的支持。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online