GitHub Actions 的工作流程中是否可以有动态策略矩阵?

2023-11-23

我想在工作流程中动态指定策略矩阵。所以,而不是:

strategy:
  matrix:
    foo: [bar, baz]

我想首先调用一些脚本来计算并返回一个数组,例如[bar, baz]对我来说,然后我想用它作为策略矩阵。

这可能吗?


使用可用的 GitHub Actions 工作流程功能是不可能的,但可以使用一些 hacky 解决方案来提供所有所需的矩阵参数值的组合。您可以在之前的工作流程作业之一中将所有组合生成为 JSON 片段,并将其公开为作业outputs然后将其与矩阵一起使用include下一个工作中的关键字提供所有矩阵参数及其值的组合,使用fromJson()充当官方公告中已体现。为了更好地解释这个概念,让我们看一下静态矩阵作业示例:

jobs:
  matrix-job:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        includes:
          - foo: foo-1
            bar: bar-1
          - foo: foo-1
            bar: bar-2
          - foo: foo-2
            bar: bar-1
    steps:
      - run: |
          echo foo=${{ matrix.foo }}
          echo bar=${{ matrix.bar }}

工作流程结果是:

enter image description here

在此工作流程中,所有矩阵参数值组合都是静态提供的。我们可以将其转换为动态提供,如下所示:

jobs:
  setup-matrix:
    runs-on: ubuntu-latest
    steps:
      - name: Setup matrix combinations
        id: setup-matrix-combinations
        run: |
          MATRIX_PARAMS_COMBINATIONS='
              {"foo": "foo-1", "bar": "bar-1"},
              {"foo": "foo-1", "bar": "bar-2"},
              {"foo": "foo-2", "bar": "bar-1"},
          '
          echo ::set-output name=matrix-combinations::{\"include\":[$MATRIX_PARAMS_COMBINATIONS]}
    outputs:
      matrix-combinations: ${{ steps.setup-matrix-combinations.outputs.matrix-combinations }}
  matrix-job:
    runs-on: ubuntu-latest
    needs: setup-matrix
    strategy:
      matrix: ${{ fromJson(needs.setup-matrix.outputs.matrix-combinations) }}
    steps:
      - run: |
          echo foo=${{ matrix.foo }}
          echo bar=${{ matrix.bar }}

和结果:

enter image description here

这两个工作流程具有相同的结果matirx-job但最后一个提供了动态生成的矩阵输入。这是动态生成矩阵构建的唯一方法,您必须使用自己提供所有组合matrix.include。 (在撰写本文时)不可能为给定的矩阵参数动态提供可用值的数组(就像您的问题一样),但您至少有一个动态矩阵作业。

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

GitHub Actions 的工作流程中是否可以有动态策略矩阵? 的相关文章

  • 无法通过 Git Bash 克隆 git 存储库

    在尝试使用克隆存储库时git clone 它显示以下错误 致命 无法访问 https github com microsoft c9 python getting started git https github com microsoft
  • 从 github 中排除文件夹

    我需要从我的 Github 中排除文件夹 App Data 但我不知道如何做 我有一个应用程序 它在目录中保存许多文件 例如 jpg 文件 Source MyProject App data stored filename jpg 现在我需
  • 如何从 GitHub 上彻底删除问题?

    是否可以从 GitHub 问题跟踪器中完全删除问题 不可以 github API 只允许您打开 关闭 重新打开问题 这是问题 API 文档 http developer github com v3 issues
  • 当我尝试在 Azure 上部署无框架静态 Web 应用程序时,为什么会从 GitHub Actions 收到生成错误?

    我有一个简单的静态网站 我尝试使用 GitHub Actions 将其部署为 Azure 静态 Web 应用程序 无框架 我的目录结构是 github workflows css img js index html 当我推送到 GitHub
  • 我可以直接在 Maven 中使用 GitHub 项目吗?

    我有兴趣使用GitHub 上的项目 https github com toelen spymemcached jcache作为我的项目中的依赖项 GitHub 项目有一个pom文件 我可以修改我的pom文件来使用这个项目 如果是这样 怎么办
  • git-lfs 中的多个文件版本

    我正在尝试估计 GitHub 上我的项目的存储要求 并对 git lfs 如何存储多个版本的文件有一些疑问 git lfs 是否存储多个版本的文件 如果是这样 对文件的每次更改都会导致复制整个文件 还是仅存储差异 所有版本都会计入 gith
  • 无法访问 Github 403 错误:权限被拒绝

    我是 Git Github 的新手 所以请原谅我的困惑 问题是 我刚刚对本地存储库进行了更改 并且想推送到 Github 上的原点 特别是 gh pages 之前 我一直在使用另一个 Github 帐户 因此我更改了 user name 和
  • git:检查标签,修改某些内容,然后再次标记它

    我觉得我应该知道这一点 但我很困惑 我在 github 上分叉了一个存储库 我需要的是签出一个标签 称为 v1 0 5 修改文件上的语句 使用名为 1 0 5 的新标签 不带 v 重新标记该状态 然后执行对 master 进行同样的更改 让
  • Git 合并删除文件

    这是第二次发生这种情况 当我进行合并时 我后来意识到正在合并的分支中的一些文件不再位于正在合并的分支中 最新的例子是我们有一个功能分支 我一直在合并主开发分支中的更改 合并后我们丢失了很多文件 并且它们现在不存在于功能分支中 为什么会出现这
  • 如何保持 git 存储库的公共和私有版本同步?

    我正在 Github 上发布一个开源 Rails 应用程序 可能是 MIT 许可证 我还想维护一个项目的私人分支 分支 我们将使用它作为付费服务的一部分 在这种情况下组织存储库的最佳方式是什么 而且 当我有两个项目的更新时 如何保持项目同步
  • 具有私有 git 存储库的 Cocoapods

    我想添加到podfile私有git存储库 例如 pod MyLibrary git gt email protected cdn cgi l email protection perfect top library git branch g
  • github Diff 截断错误

    在 github 中发出拉取请求并审查更改时 我们收到了 Diff Truncated 错误 如下所示 任何人都可以帮助解决这个问题 拉取请求可能会触发以下提到的限制之一GitHub 支持 https stackoverflow com a
  • 仅将单个文件放入 git 子模块/存储库中

    我在 git 源代码存储库中有一个特定文件 其中包含生产设置 密码 我想限制此文件 以便只有制作团队的成员才能看到它 但是 我想控制它的变化 我考虑过在 git 中使用子模块 然后限制对新存储库的访问 然而 git 似乎需要子模块的整个子目
  • 如何在 github 复合操作步骤中动态设置环境变量?

    我确实需要它作为一个环境变量 这是为了复合动作具体来说 在复合操作中 我尝试了许多不同的设置环境变量的方法 我发现做到这一点的唯一方法是使用env在步骤本身内 runs using composite steps name A step e
  • 使用 SourceTree 克隆存储库

    有人可以给我一个简单的使用 SourceTree 克隆存储库的快速演练吗 在书签中 我单击克隆存储库 对于源路径 我粘贴如下所示的 URL 电子邮件受保护 cdn cgi l email protection 客户端 应用程序名称 ios
  • GitHub - 指定时间的存储库状态

    我是使用 git 版本控制工具的初学者 我想在指定时间 例如 2013 年 10 月 5 日 下载存储库状态 文件 我怎样才能做到这一点 截至 2019 年 5 月 不确定何时引入 您可以简单地按以下格式添加日期 HEAD 2019 04
  • 如何防止克隆我的 github 存储库?

    我正在尝试找到一种方法来防止从 github 存储库克隆 例如 我有一个私有存储库 有些人在该存储库中工作 在公司计算机中 团队中的每个人都设置了授权级别 当我在 github 上为某个用户设置授权时 该存储库可在他 她自己的 github
  • git commit -m 与 git commit -am

    看起来很容易 但我就是不明白 我在我的应用程序的根目录中 这是我的工作流程 git add git commit m added a new feature some files changed git push heroku master
  • 如何正确设置 Azure DevOps 和 GitHub 之间的双向同步

    我想通过执行以下操作在 Azure DevOps 和 GitHub 之间创建双向同步 使用 CI 触发器创建 Azure DevOps 管道 将更改从 Azure DevOps 存储库推送到 GitHub 中的分支 创建第二个管道 用于侦听
  • codecov 在 github 操作中失败

    背景 到目前为止 我对 codecov 的设置运行良好 您可以定期更新每个 pr 提交here https app codecov io gh iapicca yak packages 我没有更改我的存储库设置 因为我无意中推送了一个不应该

随机推荐

  • 查找图中的最小割边

    给定一个随机无向图 我必须找到 瓶颈边 编辑 最小切割边 才能从一个顶点到达另一个顶点 我所说的 瓶颈边缘 编辑 最小切割边缘 假设我有以下无向图 A B C D E F G H 为了从 A 到 H 独立于所选路径边 必须始终遍历 BE 和
  • python 中的会话身份验证

    使用来自的会话requestspython 中的模块 似乎会话仅在第一个请求时发送授权 我不明白为什么会发生这种情况 import requests session requests Session session auth u user
  • 为什么点符号只能引用表格?

    这似乎是一个简单的初学者问题 但我无法在任何地方找到答案 假设我有这样的 HTML
  • Swift 中的字符串插值

    swift 中的函数采用 Swift 中的任何数字类型 Int Double Float UInt 等 该函数将数字转换为字符串 函数签名如下 func swiftNumbers
  • 如何在 JQuery 中将 json 响应读取为名称值对

    我想在 JQuery 代码中将 json 响应读取为名称和值对 以下是我从 java 代码返回的示例 JSON 响应 String jsonResponse name1 value1 name2 value2 在我的 JQuery 中 如果
  • Python,numpy 排序数组

    我正在使用 numpy 并有一个包含一些值的数组 ndarray 类型 该数组的形状为 1000x1500 我重新塑造了它 brr np reshape arr arr shape 0 arr shape 1 当我尝试时 brr rever
  • 使用 tSQLt 测试时如何回滚事务

    我最近正在调用一个代码中包含 rasierror 的过程 raiserror 位于 try catch 块中 BEGIN TRAN 也位于 raiserror 之后的同一个 try catch 块中 Catch 块旨在在事务中发生错误时回滚
  • 扩展范围的继续和中断

    是否有可能continue or break拥有比当前运行的循环更大的范围 在下面的示例中 我希望在以下情况下继续执行外部 for 循环 expr是 true 尽管它是在内部 for 循环中调用的 因此两者都不是 some inner co
  • 验证失败时防止焦点集中在字段上

    我经常使用这个 jQuery 验证插件验证表单 效果很好 真的很满意 但是当您在表单上按 提交 时 它会自动将焦点放在无效的字段上 在我当前的项目中 我有一个非常长的表单 当您按下提交按钮时 您的滚动条会跳到该字段 可能是因为它获得焦点 但
  • 在 C# 中,如何在运行时检查对象是否属于某种类型?

    在 C 中 如何在运行时检查对象是否属于某种类型 您可以使用is关键词 例如 using System class CApp public static void Main string s fred long i 10 Console W
  • 如何在Excel中过滤多个条件?

    我正在尝试过滤多个条件 但我看到 过滤器 选项只有 2 个 AND OR 选项字段 我有一个充满链接的专栏 我想提取其中包含这些的所有行 pdf doc docx xls xlsx rtf TXT csv pps 有没有好的方法可以做到这一
  • Java读取wav文件

    我想用 Java 读取 wav 文件 并且将使用 K means 对它们进行分类 我怎样才能读取Java中的wav文件并将它们分配到一个数组或类似的东西 你可以建议它的想法 来对它们进行分类 EDIT 我想使用 API 来读取 wav 文件
  • 如何像 UNIX 中的 tar 一样在 Perl 中归档目录?

    我想归档一个目录 我不知道是否可以调用 我想压缩一个目录 我想在解压时保留另一端的访问权限 我应该用 perl 解决这个问题 感谢您的回复 但我为什么要求使用 Perl 来做到这一点是因为我希望它独立于平台 我想将一个大文件传输到多台机器
  • 如何克隆到非空目录?

    我有目录 A 和与目录 B 匹配的文件 目录 A 可能还有其他需要的文件 目录 B 是一个 git 存储库 我想将目录 B 克隆到目录 A 但 git clone 不允许我这样做 因为该目录非空 我希望它只是克隆 git 并且因为所有文件都
  • 如何使用 python 将 wav 实时转换为 mp3?

    我有如下所示的代码来从麦克风获取音频 import pyaudio p pyaudio PyAudio CHUNK 1024 FORMAT pyaudio paInt16 CHANNELS 2 RATE 1024 10 RECORD SEC
  • 范围最小查询 方法(从树到受限 RMQ)

    所以 我读了thisTopCoder 关于 RMQ 范围最小查询 的教程 我有一个很大的问题 在他介绍的部分方法 到目前为止我能理解的是 整个方法实际上使用了中介绍的方法稀疏表 ST 算法 从 LCA 减少到 RMQ and 从 RMQ 到
  • Win32 中本机 C/C++ 的高级 HTTP 客户端库

    Win32 中是否没有用于本机 C C 的 高级 HTTP 库 或者我只是找错了地方 我所说的 高级 是指一个 API 它允许我使用与 NET 框架 大致相同 的抽象级别在 C 中执行 HTTP Web 请求 响应 但请注意 使用 C CL
  • FontAwesome 图标在反应/下一个应用程序中无法正常工作

    已解决 TLDR 添加import fortawesome fontawesome svg core styles css 到 app js index js 文件修复了该问题 并且 FontAwesome 按预期工作 我的问题是由npx
  • delete[]等于删除吗? [复制]

    这个问题在这里已经有答案了 IP ADAPTER INFO ptr new IP ADAPTER INFO 100 如果我免费使用 delete ptr 会导致内存泄漏吗 如果不会的话为什么 这是VS2005生成的反汇编代码 delete
  • GitHub Actions 的工作流程中是否可以有动态策略矩阵?

    我想在工作流程中动态指定策略矩阵 所以 而不是 strategy matrix foo bar baz 我想首先调用一些脚本来计算并返回一个数组 例如 bar baz 对我来说 然后我想用它作为策略矩阵 这可能吗 使用可用的 GitHub