Github 操作:在单个运行器中运行多个作业或在作业之间共享工作空间

2024-03-04

有什么方法可以在单个运行器中运行多个作业或在作业之间共享 Github 操作工作区?

在我的组织中,开发团队使用由多个团队创建和管理的多个可重用工作流程。团队build创建和管理build.yaml构建应用程序。我的团队创建并管理analysis.yaml对应用程序构建进行数据分析并对构建的工件进行归档。

开发团队计划在他们的应用程序工作流程中使用我们的两个工作流程。为了使我的团队的工作流程正常工作,我的工作流程需要访问构建的代码(target目录maven构建,build目录gradle构建和node_modules for npm构建)。

  • 有没有办法在构建代码的运行器上运行我的可重用工作流程?
  • 有没有办法可以访问构建代码的工作区(我搜索了其他答案并了解到我可以使用upload行动和cache行动)。是否有其他方法可以完成此任务并在构建运行程序本身上运行可重用工作流程?
  • 通过复合操作而不是使用可重用工作流程可以更好地完成此任务吗?

我有下面的例子。

build.yaml

on:
  workflow_call
  inputs:
    build:
      description: Build type
      required: true

jobs:
  Build:
    runs-on: self-hosted
    steps:
      - name: Building apps
      - if: ${{inputs.build=='gradle'}}
        run: |
          gradle build

analysis.yaml

on:
  workflow_call
  inputs:
    analysis:
      description: Build type
      required: true
      type: boolean

jobs:
  Build:
    runs-on: self-hosted
    steps:
      - name: Building apps
      - if: ${{inputs.analysis}}
        run: |
          #Run ML build analysis
          #Archive the build artifacts

workflow.yaml

on:
  push:
    branches: [main]

jobs:
  Build:
    uses: buildteam/.github/workflows/build.yaml@main
    with:
      build: gradle

  Analysis:
    uses: analysis/.github/workflows/analysis.yaml@main
    with:
      analysis: true


您可以获取第一个作业的运行程序并将其作为输出传递给以下作业。

name: main
on: 
  push: { branches: [main] }

jobs:
  get-runner:
    name get a runner to use for this workflow
    if: ${{ always() }}
    runs-on: custom-runner
    outputs:
     RUNNER: ${{ runner.name }}
    steps:
      - run: echo "selected runner = ${{ runner.name }}"

 other-job:
    name: another job
    needs: get-runner
    runs-on: ${{needs.get-runner.outputs.RUNNER}}
    steps:
      ...

此方法仅适用于自定义跑步者。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Github 操作:在单个运行器中运行多个作业或在作业之间共享工作空间 的相关文章

随机推荐

  • Android:套接字已关闭

    电脑客户端 public class PCServer param args static Socket socket null private static String ip 192 168 42 129 private static
  • 使用 FOSUserBundle 创建自定义字段

    我想使用 FOSUserBundle 添加地址和电话号码 如何使用 FOSuserBundle 添加自定义字段以获得包含地址和电话号码的个人资料 创建自己的用户包并在 MyCompanyUserBundle php 中设置 public f
  • 可以使用 SQL 按日期排序,但将空日期放在结果集的后面吗?

    我在 MySQL 数据库中有一堆任务 其中一个字段是 截止日期 并非每项任务都必须有截止日期 我想使用 SQL 按截止日期对任务进行排序 但将没有截止日期的任务放在结果集的后面 就像现在一样 空日期首先显示 然后其余日期按最早到最晚的截止日
  • 为什么性能分析器中的内存使用部分被禁用?

    我想运行内存使用会话或对象分配 最好两者都运行 但我只有可用类型 CPU 使用情况和 GPU 使用情况 当给定部分被禁用时 VS 不会显示任何提示 我尝试了我编写的其他几个项目 一个接一个都只有这两个部分 我运行 64 位 Windows
  • 加载PEM格式证书

    如何在 openssl c 中将 PEM 格式证书加载为 x509 int SSL use certificate SSL ssl X509 x int SSL use certificate ASN1 SSL ssl unsigned c
  • php_mongo 扩展已安装,但为什么 rockmongo 仍然无法连接?

    我有一个wamp服务器 我还安装了 mongodb 我已经安装了 php mongo 扩展 在 php ini 中进行更改 我下载了 rockmongo 将文件解压到我的 www 文件夹中 我编辑了配置文件 但是当我尝试打开 GUI 时 它
  • Rails 4 中具有多个字的控制器的路由

    我刚刚升级到 Rails 4 发现路由出现意外行为 我们有一个名为 EmailPreviewController 的控制器 其路由是 get emailpreview controller EmailPreview action index
  • 配置 webpack 以允许浏览器调试

    我是 webpack 的新手 我正在转换现有的 Web 应用程序以使用它 我正在使用 webpack 来捆绑和缩小我的 JS 这在部署时非常有用 但这使得在开发过程中调试非常困难 通常我使用 chrome 内置的调试器来调试 JS 问题 或
  • SQL Server 探查器

    当您使用 SQL Server 探查器时 持续时间和 CPU 之间有什么区别 我知道默认情况下两者都以毫秒显示 CPU 是运行查询所需的 CPU 时间 而持续时间更像是查询返回任何数据所需的时间 根据我的理解 如果存在任何阻塞等 您的 CP
  • 如何在Java中使用PDFBox获取PDF文件中的所有书签

    我是 Apache PDFbox 的新手 我想使用Java中的PDFBox库提取PDF文件中的所有书签 知道如何提取它们吗 来自在源码下载中 PDDocument document PDDocument load new File PDDo
  • 将表从一个数据库复制到另一个数据库的最简单方法?

    当数据库位于不同用户下时 将数据从一个数据库中的表复制到另一个数据库中的表的最佳方法是什么 我知道我可以使用 INSERT INTO database2 table2 SELECT from database1 table1 但这里的问题是
  • Android 应用程序通过移动端口使用 P2P 模式流式传输 IP 摄像机?

    我正在尝试通过 Android 应用程序上的 IP 摄像头流式传输视频 我已经使用以下方法成功获取了视频 使用媒体播放器和 Surface View 的 RTSP 使用视频视图的 RTSP 重定向到 VLC 以流式传输视频 重定向到本机 用
  • 实际示例使用 dup 或 dup2

    我知道什么dup dup2 http www opengroup org onlinepubs 009695399 functions dup html可以 但是不知道什么时候会用到 有什么实际例子吗 示例之一是 I O 重定向 为此 您分
  • android sdk 位置不能位于文件系统根目录

    我已经将 Android Studio 安装在 F 驱动器中 我的 Flutter 项目位于 E 驱动器中 Flutter插件安装在Android Studio中 但是当我在 Android Studio 中打开项目并转到 SDK 管理器时
  • 在具有自动高度的 IFrame 中获取 Google 表单

    所以我有一个用 Google Docs 构建的表单 因为它看起来比从头开始更容易 我通过将代码从谷歌页面复制粘贴到我的域上的页面来实现这一点 我设法用我在这里找到的这个可爱的小脚本让它自动调整其高度 http www frontpagewe
  • 仅在给定用户 ID 的情况下选择固定范围高分的有效方法

    我有一个表格 其中包含每个球员参加过的每场比赛的记录 从这个问题的最佳答案我已经有了一个很好的开始 百万条目排名 https stackoverflow com questions 5436263 ranking with millions
  • 检测android中的home按钮按下

    这已经让我发疯有一段时间了 有没有什么方法可以可靠地检测 Android 应用程序中是否按下了主页按钮 如果做不到这一点 是否有一种可靠的方法来判断是什么导致活动进入 onPause 即我们能否检测到它是否是由新活动启动或按返回 主页引起的
  • AWS DynamoDB - 如何在 1 次调用中实现:如果集合存在,则添加要设置的值 - 或者用值实例化集合?

    我有一个用户表 有一个名为 朋友 的属性 它将是用户所有朋友的 id 的集合 最初 我尝试在创建用户时将 Friends 属性实例化为空集 但收到错误消息 指出不能有空属性 因此 如果某人还没有朋友 我能找到的唯一解决方案是读取用户的属性
  • 内联插件不起作用

    根据Chart js 文档 http www chartjs org docs latest developers plugins html 以下代码应该可以工作 new Chart document getElementById char
  • Github 操作:在单个运行器中运行多个作业或在作业之间共享工作空间

    有什么方法可以在单个运行器中运行多个作业或在作业之间共享 Github 操作工作区 在我的组织中 开发团队使用由多个团队创建和管理的多个可重用工作流程 团队build创建和管理build yaml构建应用程序 我的团队创建并管理analys