Tom*_*iak 3 continuous-integration github continuous-deployment devops github-actions
正如这里所讨论的,在 GitHub Actions 中有一种使用关键字引用job
其他job
s 中的 s的好方法need
,例如
name: Share data between jobs
on: [push]
jobs:
job_1:
name: Add 3 and 7
runs-on: ubuntu-latest
steps:
# Steps
job_2:
name: Multiply by 9
needs: job_1
# The rest of the job
Run Code Online (Sandbox Code Playgroud)
我在文档中找不到答案的问题是:有没有办法job
在其他工作流中引用/共享s?(即单独的yml
文件)。
我的项目由几个单独的工作流组成,每个工作流都需要执行相同的初始step
s。我试图避免在不同的workflow
s 中复制粘贴相同的步骤。
目前,我认为无法指定工作流之间的依赖关系。在此 GitHub 社区论坛中对此进行了讨论:
您可以做的是使用相同的工作流文件,然后使用条件来触发或不触发特定作业。
如果您只想在推送到 master 分支时运行作业,您可以这样做:
Run Code Online (Sandbox Code Playgroud)deploy: if: github.event_name == 'push' && github.ref == 'refs/heads/master'
小智 5
听起来您想在多个工作流程中重用单个作业,以保持您的工作 DRY/SPOT(单点事实),这样您就不必重复自己并引入错误。这可以通过重用工作流程来完成。
本质上有一个“调用者”工作流程,它使用可选的输入和输出来调用(运行)“被调用”工作流程。
以下 .yml 文件“使用”被调用工作流的相对路径(但可以引用其他存储库的版本等 - 请参阅文档)。
name: Caller for a reusable workflow
on:
push:
branches:
- main
jobs:
example_job:
uses: ./.github/workflows/reusable-workflow-example-called.yml
with:
BUILD_ENV: "Dev"
secrets:
TESTING: ${{ secrets.TESTING }}
Run Code Online (Sandbox Code Playgroud)
上面的工作流程调用下面的工作流程,并选择性地传入变量和秘密。
name: Called reusable workflow
on:
workflow_call:
inputs:
BUILD_ENV:
required: true
type: string
secrets:
TESTING:
required: true
jobs:
called-workflow:
name: Blippedy
runs-on: ubuntu-latest
steps:
- id: do-a-thing
run: |
echo "${BUILD_ENV} is ${TESTING}!"
echo $BUILD_ENV
echo "${{ inputs.BUILD_ENV }} ${{ secrets.TESTING }}"
Run Code Online (Sandbox Code Playgroud)
我使用它在为不同环境配置的多个工作流程中运行相同的作业(通过 Postman 测试newman
)。
或者,如果您正在寻找跨作业/工作流程使用单个步骤,请查看复合操作。
归档时间: |
|
查看次数: |
1453 次 |
最近记录: |