我有一个包,它是组织中多个其他包的核心依赖项。我的目标是编写一个操作来自动化/简化这些反向依赖项的测试。大致上,该行动应:
步骤1和步骤3我必须工作,但我遇到了第2步的问题。我目前的解决方案是对所有作业输出进行硬编码,以便将结果从第2步传递到第3步,但我想知道是否有一种方法可以避免硬编码。
下面的示例工作流说明了我的问题:
name: Test
on: push
jobs:
unit-tests:
runs-on: ${{ matrix.os }}
continue-on-error: true
name: ${{ matrix.os }} (${{ matrix.pkg }})
strategy:
fail-fast: false
matrix:
# there will be more pkgs and OSes
os: [ubuntu-latest]
pkg: [pkgA, pkgB]
# how to avoid hardcoding these?
outputs:
ubuntu-latest-pkgA: ${{ steps.update-output.outputs.ubuntu-latest-pkgA }}
ubuntu-latest-pkgB: ${{ steps.update-output.outputs.ubuntu-latest-pkgB }}
steps:
- uses: actions/checkout@v2
- name: fake unit tests
run: |
exit 1 # fail all tests for now
shell: bash
- name: set error if tests fail
id: update-output
if: ${{ failure() }}
run: echo "::set-output name=${{ matrix.os }}-${{ matrix.pkg }}::error"
shell: bash
aggregate-results:
runs-on: ubuntu-latest
needs: unit-tests
steps:
- name: Aggregate results
env:
NEEDS: ${{ toJSON(needs) }}
run: echo "$NEEDS"作业聚合-结果(受这个职位启发)很好地工作并打印:
{
"unit-tests": {
"result": "success",
"outputs": {
"ubuntu-latest-pkgA": "error",
"ubuntu-latest-pkgB": "error"
}
}
}我可以用它来创建一个信息丰富的评论。然而,作业unit-tests要求我对os和pkg的所有组合的输出进行硬编码。有什么方法可以动态地做到这一点吗?
发布于 2022-09-09 20:56:34
我也在找这个解决方案。实现此方法的唯一方法是切换到可重用的工作流,该工作流允许访问一个特定的作业上下文。
https://docs.github.com/en/actions/learn-github-actions/contexts#jobs-context
https://stackoverflow.com/questions/70287603
复制相似问题