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

GitHub Action工作流语法

📁 一、基础结构

Yaml

name: My Workflow

on:

  push:

    branches:

      - main

jobs:

  my-job:

    runs-on: ubuntu-latest

    steps:

      - name: Checkout code

        uses: actions/checkout@v3


📄 1. name(工作流名称)

  • 用途:定义工作流的名称,显示在 GitHub Actions 界面中。
  • 示例:

Yaml

name: CI Pipeline

🚀 2. on(触发事件)

  • 用途:指定触发工作流运行的事件(如 push、pull_request 等)。
  • 支持事件:
    • push
    • pull_request
    • schedule
    • workflow_dispatch(手动触发)
  • 示例:

Yaml

on:push:branches:- mainpull_request:branches:- dev

🧱 3. jobs(任务)

  • 用途:定义一个或多个任务(jobs),每个任务可以独立运行或依赖于其他任务。
  • 结构:

Yaml

jobs:job1:...job2:...

🖥️ 4. runs-on(运行环境)

  • 用途:指定任务运行的虚拟机环境(runner)。
  • 常见值:
    • ubuntu-latest
    • windows-latest
    • macos-latest
  • 示例:

Yaml

runs-on: ubuntu-latest

🧩 5. steps(步骤)

  • 用途:在任务中定义一系列操作步骤,按顺序执行。
  • 每个步骤可以是:
    • 使用某个 Action(uses)
    • 执行 shell 命令(run)
  • 示例:

Yaml

steps:- name: Checkout Repositoryuses: actions/checkout@v3- name: Run a scriptrun: echo "Hello World"

🧠 6. uses(使用 Action)

  • 用途:引用一个外部的 GitHub Action(可以是官方或第三方)。
  • 格式:
    • owner/repo@tag
  • 示例:

Yaml

uses: actions/setup-node@v3

🖥️ 7. run(运行命令)

  • 用途:在 runner 上运行 shell 命令。
  • 默认 shell:
    • Linux/macOS: bash
    • Windows: pwsh
  • 示例:

Yaml

run: npm install

📦 8. with(传递参数)

  • 用途:向某个 Action 传递参数。
  • 示例:

Yaml

- name: Setup Node.jsuses: actions/setup-node@v3with:node-version: 18.x

🔐 9. env(环境变量)

  • 用途:定义环境变量供整个任务或步骤使用。
  • 示例:

Yaml

env:MY_VAR: "Hello"steps:- run: echo $MY_VAR

🔄 10. if(条件判断)

  • 用途:根据条件决定是否运行某个任务或步骤。
  • 支持表达式:github.event_name == 'pull_request'
  • 示例:

Yaml

if: github.event_name == 'push'

📦 11. strategy(策略)

  • 用途:定义任务的构建矩阵,用于并行运行多个配置。
  • 示例:

Yaml

strategy:matrix:node-version: [14.x, 16.x, 18.x]

⏱️ 12. timeout-minutes(超时时间)

  • 用途:设置任务或步骤的最大运行时间(分钟)。
  • 示例:

Yaml

jobs:my-job:timeout-minutes: 15

📁 13. permissions(权限控制)

  • 用途:控制工作流对 GitHub API 的访问权限。
  • 示例:

Yaml

permissions:contents: readissues: write

🧪 14. continue-on-error(出错继续)

  • 用途:即使某步骤或任务失败,也继续执行后续步骤。
  • 示例:

Yaml

steps:- run: some-commandcontinue-on-error: true

📌 15. needs(任务依赖)

  • 用途:指定当前任务依赖于其他任务,必须在它们成功后才能运行。
  • 示例:

Yaml

jobs:job1:...job2:needs: job1

🧵 16. concurrency(并发控制)

  • 用途:限制同时运行的工作流或任务数量,避免资源冲突。
  • 示例:

Yaml

concurrency: ci-${{ github.ref }}

🧵 17. jobs.<job_id>.name(步骤名称)

  • 用途:为某个步骤定义一个显示名称。
  • 示例:

Yaml

- name: Build Applicationrun: npm run build

📝 18. run-name(运行名称)

  • 用途:定义工作流运行时显示的名称(支持变量)。
  • 示例:

Yaml

name: CIon: [push]run-name: ${{ github.actor }} is running CI

🧪 19. jobs.<job_id>.if(任务级条件判断)

  • 用途:根据条件决定是否运行某个任务。
  • 示例:

Yaml

jobs:deploy:if: github.ref == 'refs/heads/main'

📦 20. jobs.<job_id>.env(任务级环境变量)

  • 用途:为特定任务定义环境变量。
  • 示例:

Yaml

jobs:build:env:ENV_NAME: value

🧪 21. jobs.<job_id>.steps.env(步骤级环境变量)

  • 用途:为某个步骤定义局部环境变量。
  • 示例:

Yaml

- name: Run Scriptrun: echo $HELLOenv:HELLO: Hello World

📦 22. jobs.<job_id>.services(服务容器)

  • 用途:为任务定义一个或多个服务容器(如数据库)。
  • 示例:

Yaml

services:redis:image: redisports:- 6379

🧪 23. jobs.<job_id>.container(容器环境)

  • 用途:指定任务运行在特定容器中。
  • 示例:

Yaml

container:image: node:18env:NODE_ENV: development

🧪 24. jobs.<job_id>.outputs(任务输出)

  • 用途:定义任务的输出值,供后续任务使用。
  • 示例:

Yaml

outputs:result: ${{ steps.step1.outputs.some_value }}

🧪 25. jobs.<job_id>.steps.outputs(步骤输出)

  • 用途:为某个步骤定义输出值,供后续步骤或任务使用。
  • 示例:

Yaml

- id: step1run: echo "some_value=Hello" >> $GITHUB_OUTPUT

🧪 26. jobs.<job_id>.steps.id(步骤 ID)

  • 用途:为步骤定义一个 ID,用于引用输出或条件判断。
  • 示例:

Yaml

- id: buildrun: make build

🧪 27. jobs.<job_id>.steps.run(运行命令)

  • 用途:在 runner 上执行 shell 命令。
  • 支持多行命令:

Yaml

run: |npm installnpm run build

🧪 28. jobs.<job_id>.steps.shell(自定义 Shell)

  • 用途:指定运行命令使用的 shell。
  • 示例:

Yaml

shell: bashrun: echo "Hello"

🧪 29. jobs.<job_id>.steps.timeout-minutes(步骤超时)

  • 用途:为单个步骤设置最大运行时间。
  • 示例:

Yaml

- run: long-commandtimeout-minutes: 5

🧪 30. jobs.<job_id>.steps.continue-on-error(步骤出错继续)

  • 用途:即使某个步骤失败,也继续执行后续步骤。
  • 示例:

Yaml

- run: might-failcontinue-on-error: true

🧪 31. jobs.<job_id>.steps.working-directory(工作目录)

  • 用途:为某个步骤指定工作目录。
  • 示例:

Yaml

- name: Run in subdir

  run: ls

  working-directory: subdirectory


🧪 32. jobs.<job_id>.steps.uses(使用 Action)

  • 用途:调用一个已封装好的 Action。
  • 示例:

Yaml

uses: actions/setup-python@v4


🧪 33. jobs.<job_id>.steps.with(Action 参数)

  • 用途:传递 Action 所需的参数。
  • 示例:

Yaml

with:

  python-version: 3.10


🧪 34. jobs.<job_id>.steps.env(Action 环境变量)

  • 用途:为 Action 设置环境变量。
  • 示例:

Yaml

env:

  API_KEY: ${{ secrets.API_KEY }}


📁 35. jobs.<job_id>.steps.id(Action ID)

  • 用途:为步骤命名 ID,用于引用其输出。
  • 示例:

Yaml

- id: fetch

  uses: some-action

- run: echo ${{ steps.fetch.outputs.result }}


🧪 36. jobs.<job_id>.steps.if(步骤条件判断)

  • 用途:根据条件决定是否运行该步骤。
  • 示例:

Yaml

if: ${{ github.event_name == 'push' }}


🧪 37. jobs.<job_id>.steps.name(步骤名称)

  • 用途:为步骤命名,便于识别。
  • 示例:

Yaml

- name: Install Dependencies

  run: npm install


🧪 38. jobs.<job_id>.steps.run(运行脚本)

  • 用途:执行任意 shell 命令。
  • 示例:

Yaml

run: make test


🧪 39. jobs.<job_id>.steps.continue-on-error(继续执行)

  • 用途:即使该步骤失败也继续执行。
  • 示例:

Yaml

continue-on-error: true


🧪 40. jobs.<job_id>.steps.timeout-minutes(步骤超时)

  • 用途:为某个步骤设置最大执行时间。
  • 示例:

Yaml

timeout-minutes: 10


🧪 41. jobs.<job_id>.steps.working-directory(运行目录)

  • 用途:为某个步骤指定运行目录。
  • 示例:

Yaml

working-directory: src/


🧪 42. jobs.<job_id>.steps.shell(自定义 Shell)

  • 用途:为某个步骤指定 shell。
  • 示例:

Yaml

shell: pwsh

run: Write-Host "Hello"


🧪 43. jobs.<job_id>.steps.env(设置环境变量)

  • 用途:为步骤设置局部环境变量。
  • 示例:

Yaml

env:

  DEBUG: true


🧪 44. jobs.<job_id>.steps.uses(调用 Action)

  • 用途:调用一个封装好的 Action。
  • 示例:

Yaml

uses: actions/upload-artifact@v3


🧪 45. jobs.<job_id>.steps.with(Action 参数)

  • 用途:为 Action 传递参数。
  • 示例:

Yaml

with:

  name: my-artifact

  path: dist/


📁 46. jobs.<job_id>.steps.id(步骤 ID)

  • 用途:为该步骤指定一个 ID,用于后续引用。
  • 示例:

Yaml

id: test


🧪 47. jobs.<job_id>.steps.run(运行命令)

  • 用途:在 runner 上运行命令。
  • 示例:

Yaml

run: echo "Build complete"


🧪 48. jobs.<job_id>.steps.env(环境变量)

  • 用途:为步骤设置环境变量。
  • 示例:

Yaml

env:

  PORT: 8080


🧪 49. jobs.<job_id>.steps.if(条件运行)

  • 用途:根据表达式判断是否运行该步骤。
  • 示例:

Yaml

if: ${{ github.actor == 'dependabot[bot]' }}


🧪 50. jobs.<job_id>.steps.name(步骤名称)

  • 用途:为步骤命名,显示在 GitHub 界面中。
  • 示例:

Yaml

name: Run Tests

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

相关文章:

  • 动态效果网站建设技术广东省建筑工程信息网
  • cpp_list
  • rk3588上用rk_mpi_vi_test与ffmpeg实战
  • Rust 练习册 :Queen Attack与国际象棋逻辑
  • CSS学习
  • 使用V4L2工具验证RK3588平台视频设备节点数据有效性
  • Rust 练习册 :Protein Translation与生物信息学
  • 网站开发课程知识点总结图片自动生成器
  • 【STL——常用遍历与查找算法】
  • 牛客网华为在线编程题
  • 29网站建设全部400网站总机 阿里云
  • 第四章 依赖项属性
  • wpf 结合 HALCON 编程 学习知识点列表有哪些?如何学习?
  • 学习C#调用OpenXml操作word文档的基本用法(5:Style类分析-3)
  • 系统运维Day03_FTP与磁盘挂载
  • 嘉兴网站备案去哪里优化网站是什么意思
  • SQL笔试题(2)
  • MATLAB/Simulink三机九节点
  • JVM 内存结构与 GC 调优全景图
  • 4.3.5【2024统考真题】
  • 如何进行MSSQL提权?sp_oacreate、sp_oamethod和沙盒提权以及xp_regwrighte提权
  • AI大模型开发架构设计(23)——LangChain技术架构和关键技术深度剖析
  • JavaScript 中的 void 关键字详解
  • 智能演示时代:8款免费AI PPT生成工具全面评测
  • 实验室建设网站网站开发公司经营范围
  • 怎样做能直接上传微信的视频网站钢结构招聘网最新招聘信息
  • 什么是缓存
  • 电力设备多模态数据融合与自适应阈值在线状态评估
  • 顺序表vector--------练习题8题解
  • 百度C++实习生面试题深度解析