GitHub Actions 工作流编写指南

打印 上一主题 下一主题

主题 875|帖子 875|积分 2625

1. 根本概念

什么是工作流文件?



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

  1. key: value          # 基本的键值对
  2. parent:             # 缩进表示层级关系
  3.   child: value
  4. array:              # 列表使用 - 表示
  5.   - item1
  6.   - item2
复制代码
2. 工作流文件结构

2.1 名称定义(name)

  1. name: My Workflow   # 工作流的名称,会显示在 Actions 页面
复制代码
2.2 触发条件(on)

  1. on:
  2.   push:                    # 推送时触发
  3.     branches:
  4.       - main              # 只在 main 分支触发
  5.   pull_request:           # PR 时触发
  6.     branches:
  7.       - main
  8.   schedule:               # 定时触发
  9.     - 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)

  1. jobs:
  2.   build:                  # 工作ID
  3.     runs-on: ubuntu-latest    # 运行环境
  4.    
  5.     steps:                # 步骤定义
  6.     - name: Step 1        # 步骤名称
  7.       uses: actions/checkout@v2    # 使用现成的 action
  8.       
  9.     - name: Step 2
  10.       run: echo "Hello"   # 运行命令
复制代码
2.4 常用环境变量

  1. env:
  2.   GLOBAL_VAR: value      # 全局环境变量
  3. jobs:
  4.   job1:
  5.     env:
  6.       JOB_VAR: value     # 作业级环境变量
  7.     steps:
  8.       - env:
  9.           STEP_VAR: value  # 步骤级环境变量
复制代码
3. 实用示例

3.1 自动提交代码

  1. name: Auto Commit
  2. on:
  3.   push:
  4.     branches: [ main ]
  5. jobs:
  6.   commit:
  7.     runs-on: ubuntu-latest
  8.    
  9.     steps:
  10.     - uses: actions/checkout@v2
  11.    
  12.     - name: Commit files
  13.       run: |
  14.         git config --local user.email "action@github.com"
  15.         git config --local user.name "GitHub Action"
  16.         git add .
  17.         git commit -m "Auto commit" || echo "No changes to commit"
  18.         git push
复制代码
3.2 自动构建和部署

  1. name: Build and Deploy
  2. on:
  3.   push:
  4.     branches: [ main ]
  5. jobs:
  6.   build:
  7.     runs-on: ubuntu-latest
  8.    
  9.     steps:
  10.     - uses: actions/checkout@v2
  11.    
  12.     - name: Setup Node.js
  13.       uses: actions/setup-node@v2
  14.       with:
  15.         node-version: '14'
  16.         
  17.     - name: Install Dependencies
  18.       run: npm install
  19.       
  20.     - name: Build
  21.       run: npm run build
复制代码
4. 常用 Actions

4.1 检出代码

  1. - uses: actions/checkout@v2
复制代码
4.2 设置环境

  1. - uses: actions/setup-node@v2
  2.   with:
  3.     node-version: '14'
  4. - uses: actions/setup-python@v2
  5.   with:
  6.     python-version: '3.8'
复制代码
4.3 缓存依靠

  1. - uses: actions/cache@v2
  2.   with:
  3.     path: ~/.npm
  4.     key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
复制代码
5. 最佳实践

5.1 使用密钥

  1. steps:
  2.   - name: Use Secret
  3.     env:
  4.       SUPER_SECRET: ${{ secrets.SUPER_SECRET }}
  5.     run: echo "Using secret"
复制代码
5.2 条件实行

  1. steps:
  2.   - name: Conditional Step
  3.     if: github.event_name == 'push'
  4.     run: echo "This only runs on push"
复制代码
5.3 错误处理

  1. steps:
  2.   - name: Step that may fail
  3.     continue-on-error: true
  4.     run: 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:
  1. # 安装 act
  2. brew install act
  3. # 运行工作流
  4. act push
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

水军大提督

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表