Bra*_*tin 12 continuous-integration yaml github github-actions
我在 monorepo 中有一个 CI 工作流,为此工作流最终构建了两个项目。作业运行良好,但是,我想知道是否有办法通过为作业设置运行程序来删除此工作流.yml 文件中的重复项。我将它们分开,以便它们并行运行,因为它们不相互依赖并且可以更快地完成。等待 CI 完成时,5 分钟与 10 分钟以上的时间相差很大。
jobs:
job1:
name: PT.W Build
runs-on: macos-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v1
- name: Setup SSH-Agent
uses: webfactory/ssh-agent@v0.2.0
with:
ssh-private-key: |
${{ secrets.SSH_PRIVATE_KEY }}
- name: Setup JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Setup Permobil-Client
run: |
echo no | npm i -g nativescript
tns usage-reporting disable
tns error-reporting disable
npm run setup.all
- name: Build PT.W Android
run: |
cd apps/wear/pushtracker
tns build android --env.uglify
job2:
name: SD.W Build
runs-on: macos-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v1
- name: Setup SSH-Agent
uses: webfactory/ssh-agent@v0.2.0
with:
ssh-private-key: |
${{ secrets.SSH_PRIVATE_KEY }}
- name: Setup JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Setup Permobil-Client
run: |
echo no | npm i -g nativescript
tns usage-reporting disable
tns error-reporting disable
npm run setup.all
- name: Build SD.W Android
run: |
cd apps/wear/smartdrive
tns build android --env.uglify
Run Code Online (Sandbox Code Playgroud)
您可以在此处看到作业的流程几乎相同,只是构建不同的应用程序本身。我想知道是否有办法在作业中获取重复的块并创建一种只编写一次并在两个作业中重用它的方法。
Car*_*nal 108
GitHub Actions 中的代码重用主要有 3 种方法:
以下详细信息来自我描述其优缺点的文章:
显而易见的选择是使用“可重用工作流程”功能,该功能允许您将某些步骤提取到单独的“可重用”工作流程中,并将此工作流程称为其他工作流程中的作业。
secrets: inherit
作业参数继承秘密。needs
键进行作业排序来管理它)。GitHub 为我们提供的另一种可能性是workflow_dispatch事件,它可以触发工作流运行。简而言之,您可以手动或通过 GitHub API 触发工作流程并提供其输入。
Marketplace 上提供了一些操作,允许您触发“分派”工作流程作为“主”工作流程的一个步骤。
其中一些还允许以同步方式执行此操作(等到分派的工作流程完成)。值得一提的是,该功能是通过轮询存储库工作流状态来实现的,这不太可靠,尤其是在并发环境中。此外,它还受到 GitHub API 使用限制的限制,因此在查找已调度工作流程的状态方面存在延迟。
secrets.GITHUB_TOKEN
不允许您调度工作流程。在这种方法中,我们将步骤提取到不同的复合操作,该操作可以位于相同或单独的存储库中。
从您的“主”工作流程来看,它看起来像一个常见的操作(单个步骤),但在内部它由多个步骤组成,每个步骤都可以调用自己的操作。
continue-on-error
在复合操作中使用选项。Von*_*onC 13
自 2021 年 10 月起,“可重用工作流程普遍可用”
\n\n\n可重用的工作流程现在已普遍可用。
\n
\n可重复使用的工作流程使您能够像操作一样重复使用整个工作流程,从而帮助您减少重复。自 10 月份发布测试版以来,已经进行了多项改进:\n
\n- 您可以利用输出将数据从可重用工作流程传递到调用者工作流程中的其他作业
\n- 您可以将环境机密传递给可重用的工作流程
\n- 审核日志包含有关使用哪些可重用工作流程的信息
\n
有关更多信息,请参阅“重用工作流程”。
\n\n\n\n使用另一个工作流的工作流称为“调用者”工作流。
\n
\n可重用工作流程是“被调用”工作流程。一个调用者工作流程可以使用多个被调用工作流程。
\n
\n每个被调用的工作流都在一行中引用。结果是调用者工作流文件可能只包含几行 YAML,但在运行时可能会执行大量任务。当您重用工作流时,将使用整个被调用的工作流,就像它是调用者工作流的一部分一样。
\n
例子:
\n\n\n在可重用工作流程中,使用
\ninputs
和secrets
关键字来定义将从调用方工作流程传递的输入或机密。
# .github/actions/my-action.yml\n# Note the special trigger \'on: workflow_call:\'\n\non:\n workflow_call:\n inputs:\n username:\n required: true\n type: string\n secrets:\n envPAT:\n required: true\n
Run Code Online (Sandbox Code Playgroud)\n\n\n引用可重用工作流程中的输入或机密。
\n
jobs:\n reusable_workflow_job:\n runs-on: ubuntu-latest\n environment: production\n steps:\n - uses: ./.github/actions/my-action\n with:\n username: ${{ inputs.username }}\n token: ${{ secrets.envPAT }}\n
Run Code Online (Sandbox Code Playgroud)\n使用您自己的存储库中的文件./.github/actions/my-action
名my-action.yml
。
可重用工作流程不必位于同一个存储库中,也可以位于另一个公共存储库中。
\nDavide Benvegn\xc3\xb9 又名 CoderDave在“避免重复!GitHub Actions 可重用工作流程”中说明了这一点,其中:
\nn3wt0n/ActionsTest/.github/workflows/reusableWorkflowsUser.yml
参考n3wt0n/ReusableWorkflow/.github/workflows/buildAndPublishDockerImage.yml@main
小智 11
据我所知,目前无法重用步骤,
但在这种情况下,您可以strategy
用于并行构建和不同的变化:
jobs:
build:
name: Build
runs-on: macos-latest
strategy:
matrix:
build-dir: ['apps/wear/pushtracker', 'apps/wear/smartdrive']
steps:
- name: Checkout Repo
uses: actions/checkout@v1
- name: Setup SSH-Agent
uses: webfactory/ssh-agent@v0.2.0
with:
ssh-private-key: |
${{ secrets.SSH_PRIVATE_KEY }}
- name: Setup JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Setup Permobil-Client
run: |
echo no | npm i -g nativescript
tns usage-reporting disable
tns error-reporting disable
npm run setup.all
- name: Build Android
run: |
cd ${{ matrix.build-dir }}
tns build android --env.uglify
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请访问https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstrategy
归档时间: |
|
查看次数: |
8169 次 |
最近记录: |