首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使不依赖于矩阵的作业只运行一次

如何使不依赖于矩阵的作业只运行一次
EN

Stack Overflow用户
提问于 2022-03-18 18:09:37
回答 1查看 819关注 0票数 0

我有一个GitHub操作工作流,其中包含一个setup作业:

代码语言:javascript
复制
setup:
  runs-on: windows-latest
  steps:
    - name: Checkout Repository
      uses: actions/checkout@v2.4.0
    - name: Install .NET
      uses: actions/setup-dotnet@v1.8.2
      with:
        dotnet-version: 6.0.x

一旦setup完成,我就为我的目标平台构建:

代码语言:javascript
复制
build:
  needs:
    - setup
  runs-on: windows-latest
  strategy:
    matrix:
      target:
        - win-x64
        - linux-x64
        - linux-arm64
        - osx-x64
      self-contained:
        - self-contained
        - framework-dependent
  steps:
    - name: Checkout Repository
      uses: actions/checkout@v2.4.0
    - name: Install .NET
      uses: actions/setup-dotnet@v1.8.2
      with:
        dotnet-version: 6.0.x
    - name: Build
      run: >-
        dotnet publish -r ${{matrix.target}} --self-contained ${{
        matrix.self-contained == 'self-contained' }} ${{ matrix.self-contained
        && '' || '/p:DisablePatch="--nopatch"' }}

build中,我最终复制了setup完成的工作--8次。有没有办法避免这种情况,也许只需将机器状态从setup复制到build作业中即可?

EN

回答 1

Stack Overflow用户

发布于 2022-03-22 18:31:42

当您运行一个操作(在作业步骤中)时,它将只应用于用于执行作业步骤的运行程序。

根据关于矩阵的Github文档,每个矩阵作业并行运行。因此,它们都需要执行设置,因为每个提供的运行程序都是在没有配置Checkout RepositoryInstall .NET步骤的情况下启动的。

您不能在Github提供的运行程序之间共享这些设置,因为每个作业都将使用一个新的(和不同的)运行程序。

这意味着您的setup作业不会做任何需要在build作业上进行needs配置的操作,因为它所做的仅仅适用于它本身。

因此,删除needs: setup上的build作业将与您所做的相同。

例如,可以代替使用自托管跑步者和已经安装的dotnet,或者使用码头形象。在这种情况下,您不需要每次都安装dotnet,但是是否值得这样做呢?(因为构建一个码头映像需要更多的时间来完成设置,所以您应该首先评估这一点)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71531414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档