首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Github工作流中跨多个作业重用策略矩阵

如何在Github工作流中跨多个作业重用策略矩阵
EN

Stack Overflow用户
提问于 2021-03-11 14:16:19
回答 1查看 1.4K关注 0票数 4

我想避免在工作中重复一个战略矩阵:

代码语言:javascript
复制
jobs:
  build-sdk:

    runs-on: macOS-latest
    strategy:
      fail-fast: false
      matrix:
        qt-version: ['5.15.1']
        ios-deployment-architecture: ['arm64', 'x86_64']
        ios-deployment-target: '12.0'


    steps:
      …

  create-release:
    needs: build-sdk
    runs-on: macOS-latest
    steps:
      …


  publish-sdk:
    needs: [build-sdk, create-release]
    runs-on: macOS-latest
    strategy:
      fail-fast: false
       matrix: ?????

    steps:
      …

这是可能的吗?(不需要创建一个任务来将矩阵创建为JSON本身)吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-11 16:46:27

有一个动作,允许将多个资产上传到同一版本中,该版本在推到标记时触发矩阵构建。有人向问题提交了关于这个特定用例的文档,该操作的作者对此做出了如下回应:

与同一标记关联的GitHub发行版的资产被上载,因此只要此操作在工作流中运行,所有资产都应该添加到同一个GitHub版本中。

这意味着像这样的工作流可能满足您的需要:

代码语言:javascript
复制
on:
  push:
    tags:
      - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

jobs:
  release:

    runs-on: macOS-latest
    strategy:
      fail-fast: false
      matrix:
        qt-version: ['5.15.1']
        ios-deployment-architecture: ['arm64', 'x86_64']
        ios-deployment-target: '12.0'


    steps:
      - name: build SDK
        run: ...
      - name: Create Release
        uses: softprops/action-gh-release@v1
        with:
          files: |
            - "SDK_file1" # created in previous build step
            - "SDK_file2"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GITHUB_REPOSITORY: username/reponame
      - name: publish SDK
        run: ...

我简化了您需要做的事情,但我猜您可能希望上传包含反映其适用矩阵选项的名称的资产。关于这个细节,我建议在作业中添加一个显式步骤,以创建资产的文件名并将其添加到作业环境中,这与我所做的这里有点类似。

代码语言:javascript
复制
      - name: Name asset
        run: |
          BINARY_NAME=sdk-qt${{matrix.qt-version}}-iOS${{matrix.ios-deployment-target}}-${{matrix.ios-deployment-architecture}}
          echo "BINARY_NAME=$BINARY_NAME" >> $GITHUB_ENV

然后,当构建步骤生成资产时,可以用${{env.BINARY_NAME}}中的文件名命名它们,并将相同的名称传递给发布创建步骤,就像我在资产发布步骤这里中所做的那样。

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

https://stackoverflow.com/questions/66584315

复制
相关文章

相似问题

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