我想避免在工作中重复一个战略矩阵:
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本身)吗?
发布于 2021-03-11 16:46:27
有一个动作,允许将多个资产上传到同一版本中,该版本在推到标记时触发矩阵构建。有人向问题提交了关于这个特定用例的文档,该操作的作者对此做出了如下回应:
与同一标记关联的GitHub发行版的资产被上载,因此只要此操作在工作流中运行,所有资产都应该添加到同一个GitHub版本中。
这意味着像这样的工作流可能满足您的需要:
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: ...我简化了您需要做的事情,但我猜您可能希望上传包含反映其适用矩阵选项的名称的资产。关于这个细节,我建议在作业中添加一个显式步骤,以创建资产的文件名并将其添加到作业环境中,这与我所做的这里有点类似。
- 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}}中的文件名命名它们,并将相同的名称传递给发布创建步骤,就像我在资产发布步骤这里中所做的那样。
https://stackoverflow.com/questions/66584315
复制相似问题