有什么方法可以在单个运行器中运行多个作业或在作业之间共享 Github 操作工作区?
在我的组织中,开发团队使用由多个团队创建和管理的多个可重用工作流程。团队build
创建和管理build.yaml
构建应用程序。我的团队创建并管理analysis.yaml
对应用程序构建进行数据分析并对构建的工件进行归档。
开发团队计划在他们的应用程序工作流程中使用我们的两个工作流程。为了使我的团队的工作流程正常工作,我的工作流程需要访问构建的代码(target
目录maven
构建,build
目录gradle
构建和node_modules
for npm
构建)。
- 有没有办法在构建代码的运行器上运行我的可重用工作流程?
- 有没有办法可以访问构建代码的工作区(我搜索了其他答案并了解到我可以使用
upload
行动和cache
行动)。是否有其他方法可以完成此任务并在构建运行程序本身上运行可重用工作流程?
- 通过复合操作而不是使用可重用工作流程可以更好地完成此任务吗?
我有下面的例子。
build.yaml
on:
workflow_call
inputs:
build:
description: Build type
required: true
jobs:
Build:
runs-on: self-hosted
steps:
- name: Building apps
- if: ${{inputs.build=='gradle'}}
run: |
gradle build
analysis.yaml
on:
workflow_call
inputs:
analysis:
description: Build type
required: true
type: boolean
jobs:
Build:
runs-on: self-hosted
steps:
- name: Building apps
- if: ${{inputs.analysis}}
run: |
#Run ML build analysis
#Archive the build artifacts
workflow.yaml
on:
push:
branches: [main]
jobs:
Build:
uses: buildteam/.github/workflows/build.yaml@main
with:
build: gradle
Analysis:
uses: analysis/.github/workflows/analysis.yaml@main
with:
analysis: true
您可以获取第一个作业的运行程序并将其作为输出传递给以下作业。
name: main
on:
push: { branches: [main] }
jobs:
get-runner:
name get a runner to use for this workflow
if: ${{ always() }}
runs-on: custom-runner
outputs:
RUNNER: ${{ runner.name }}
steps:
- run: echo "selected runner = ${{ runner.name }}"
other-job:
name: another job
needs: get-runner
runs-on: ${{needs.get-runner.outputs.RUNNER}}
steps:
...
此方法仅适用于自定义跑步者。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)