首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨作业重用github操作的一部分

跨作业重用github操作的一部分
EN

Stack Overflow用户
提问于 2020-01-16 02:14:44
回答 3查看 11.1K关注 0票数 17

我在monorepo中有一个CI的工作流,对于这个工作流,有两个项目最终被构建。作业运行得很好,但是我想知道是否有一种方法可以通过设置作业的运行器来消除这个workflow.yml文件中的重复项。我将它们分开,这样它们就可以并行运行,因为它们彼此不依赖,完成起来也更快。与等待CI完成时的10+相比,这在5分钟内有很大的时间差。

代码语言:javascript
复制
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

你可以在这里看到,这些作业几乎有一个相同的过程,只是构建不同的应用程序本身。我想知道是否有一种方法可以在作业中获取重复的块,并创建一种只写入一次的方法,然后在两个作业中重用它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-29 03:15:22

据我所知,目前还没有重用步骤的方法

但在这种情况下,您可以使用strategy进行并行构建和不同的变体:

代码语言:javascript
复制
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

如需更多信息,请访问网址:https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstrategy

票数 14
EN

Stack Overflow用户

发布于 2021-11-30 12:04:58

自2021年10月以来,"“

可重用工作流现在已普遍可用。

可重用工作流使您能够像重用操作一样重用整个工作流,从而帮助您减少重复。自10月份发布测试版以来,已经进行了许多改进:

  • 您可以利用输出将数据从可重用工作流传递到调用者工作流中的其他作业
  • 您可以将环境机密传递到可重用工作流
  • 审核日志中包含有关使用哪些可重用工作流的信息

更多信息请参见"Reusing workflows“。

使用另一个工作流的工作流称为"caller“workflow

可重用的工作流是一个“称为”工作流的

一个调用者工作流可以使用多个被调用的工作流。

每个被调用的工作流在一行中被引用。

结果是,调用者工作流文件可能只包含几行YAML,但在运行时可能会执行大量任务。重用工作流时,将使用整个调用的工作流,就像它是调用者工作流的一部分一样。

示例:

在可重用工作流中,使用inputssecrets关键字来定义将从调用者工作流传递的输入或机密。

代码语言:javascript
复制
# .github/actions/my-action.yml
# Note the special trigger 'on: workflow_call:'

on:
  workflow_call:
    inputs:
      username:
        required: true
        type: string
    secrets:
      envPAT:
        required: true

引用可重用工作流中的输入或密码。

代码语言:javascript
复制
jobs:
  reusable_workflow_job:
    runs-on: ubuntu-latest
    environment: production
    steps:
      - uses: ./.github/actions/my-action
        with:
          username: ${{ inputs.username }}
          token: ${{ secrets.envPAT }}

使用./.github/actions/my-action表示您自己的存储库中的my-action.yml文件的名称。

可重用工作流不必位于同一存储库中,也可以位于另一个公共存储库中。

在"Avoid Duplication! GitHub Actions Reusable Workflows“中说明了这一点,其中:

票数 2
EN

Stack Overflow用户

发布于 2021-01-13 16:58:04

按照this answer中的建议,使用composite actions重用步骤。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59757355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档