You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions工作流拆分疑问:Runner分配与内存共享问题

GitHub Actions自托管Runner多工作流问题解答

核心问题解答

1. 每个工作流文件是否会在独立的Runner中运行?

  • 不一定会用到不同的物理/虚拟Runner机器,但每个工作流的执行是完全独立的单元:
    • 若你的自托管Runner只有一台,多个工作流会按队列依次在这台Runner上执行(Runner空闲时承接下一个任务);若有多台Runner,GitHub会自动分配空闲Runner执行工作流。
    • 无论是否在同一台Runner上,每个工作流的执行环境都是隔离的:默认情况下,Runner会在每次任务执行前清理工作目录,且每个工作流的进程、环境变量完全独立,不会和其他工作流的执行产生交叉影响。

2. 这些工作流是否共享内存?

  • 完全不共享。每个工作流的执行都是独立的进程(或容器,若配置了容器化运行),内存空间完全隔离,彼此无法访问对方的内存数据。即使在同一台自托管Runner上运行,不同工作流的内存也互不干扰。

你的Workflow拆分实践方案

针对你当前的构建+产物打包流程,拆分到独立工作流文件的具体实现如下:

工作流1:build.yml(负责核心构建)

name: "Build Pipeline"
run-name: ${{ github.actor }} 触发构建任务
on:
  schedule:
    - cron: "0 2 * * *"
  push:
    branches-ignore:
      - "docs/*"
    tags:
      - "v*"
  workflow_dispatch:
    inputs:
      cc_platform:
        description: "输入要构建的分支名称"
        required: true
        default: "dev"

jobs:
  build:
    runs-on: self-hosted
    name: 代码构建
    steps:
      - name: 拉取仓库代码
        uses: actions/checkout@v3

      - name: 配置SSH凭证
        uses: webfactory/ssh-agent@v0.6.0
        with:
          ssh-private-key: ${{ secrets.SSH_KEY_CC }}

      - name: 创建配置文件
        run: touch conf

      - name: 清理旧文件并执行构建脚本
        run: |
          if [[ -d "my_folder" ]]; then rm -rf my_folder; fi
          ./build

      - name: 上传构建产物作为中间Artifact
        uses: actions/upload-artifact@v3
        with:
          name: build_art_${{ github.sha }}
          path: |
            .*.rootfs.wic.xz
            .*.rootfs.manifest
          if-no-files-found: error

工作流2:generate-artifact.yml(负责产物处理/分发)

通过workflow_run触发,在build.yml执行成功后自动启动:

name: "Final Artifact Generation"
run-name: 处理构建产物
on:
  workflow_run:
    workflows: ["Build Pipeline"]
    types:
      - completed

jobs:
  process-artifact:
    runs-on: self-hosted
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    name: 产物处理
    steps:
      - name: 下载构建产物
        uses: actions/download-artifact@v3
        with:
          name: build_art_${{ github.event.workflow_run.head_sha }}
          path: ./artifacts

      # 此处可添加自定义产物处理步骤,比如文件重命名、签名、上传至第三方存储服务等
      - name: 示例:验证产物文件
        run: |
          ls -la ./artifacts

内容的提问来源于stack exchange,提问作者Payam30

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 02:31:32