欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > GitHub Actions 工作流编写指南

GitHub Actions 工作流编写指南

2025/1/6 9:51:43 来源:https://blog.csdn.net/i89211/article/details/144881603  浏览:    关键词:GitHub Actions 工作流编写指南

1. 基本概念

什么是工作流文件?

  • 文件必须保存在仓库的 .github/workflows 目录中
  • 文件格式为 YAML,后缀为 .yml.yaml
  • 一个仓库可以有多个工作流文件

YAML 语法基础

key: value          # 基本的键值对
parent:             # 缩进表示层级关系child: value
array:              # 列表使用 - 表示- item1- item2

2. 工作流文件结构

2.1 名称定义(name)

name: My Workflow   # 工作流的名称,会显示在 Actions 页面

2.2 触发条件(on)

on:push:                    # 推送时触发branches:- main              # 只在 main 分支触发pull_request:           # PR 时触发branches: - mainschedule:               # 定时触发- cron: '0 0 * * *'   # 每天零点触发

常用的 cron 表达式:

  • * * * * * 分别代表:分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期几(0-6)
  • 0 0 * * * = 每天午夜
  • 0 */4 * * * = 每4小时
  • 0 9 * * 1-5 = 工作日早上9点

2.3 工作定义(jobs)

jobs:build:                  # 工作IDruns-on: ubuntu-latest    # 运行环境steps:                # 步骤定义- name: Step 1        # 步骤名称uses: actions/checkout@v2    # 使用现成的 action- name: Step 2run: echo "Hello"   # 运行命令

2.4 常用环境变量

env:GLOBAL_VAR: value      # 全局环境变量jobs:job1:env:JOB_VAR: value     # 作业级环境变量steps:- env:STEP_VAR: value  # 步骤级环境变量

3. 实用示例

3.1 自动提交代码

name: Auto Commiton:push:branches: [ main ]jobs:commit:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- name: Commit filesrun: |git config --local user.email "action@github.com"git config --local user.name "GitHub Action"git add .git commit -m "Auto commit" || echo "No changes to commit"git push

3.2 自动构建和部署

name: Build and Deployon:push:branches: [ main ]jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- name: Setup Node.jsuses: actions/setup-node@v2with:node-version: '14'- name: Install Dependenciesrun: npm install- name: Buildrun: npm run build

4. 常用 Actions

4.1 检出代码

- uses: actions/checkout@v2

4.2 设置环境

- uses: actions/setup-node@v2with:node-version: '14'- uses: actions/setup-python@v2with:python-version: '3.8'

4.3 缓存依赖

- uses: actions/cache@v2with:path: ~/.npmkey: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}

5. 最佳实践

5.1 使用密钥

steps:- name: Use Secretenv:SUPER_SECRET: ${{ secrets.SUPER_SECRET }}run: echo "Using secret"

5.2 条件执行

steps:- name: Conditional Stepif: github.event_name == 'push'run: echo "This only runs on push"

5.3 错误处理

steps:- name: Step that may failcontinue-on-error: truerun: echo "This step can fail safely"

6. 调试技巧

6.1 启用调试日志

在仓库的 Settings > Actions > Runner groups 中设置:

  • ACTIONS_RUNNER_DEBUG=true
  • ACTIONS_STEP_DEBUG=true

6.2 本地测试

可以使用 act 工具在本地测试 GitHub Actions:

# 安装 act
brew install act# 运行工作流
act push

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com