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

标签 github continuous-integration yaml 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

您可以在此处看到作业的流程几乎相同,只是构建不同的应用程序本身。我想知道是否有办法在作业中获取重复的块并创建一种只编写一次并在两个作业中重用它的方法。

最佳答案

据我所知,目前无法重用步骤
但在这种情况下,您可以使用 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

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

关于github - 跨作业重用 github 操作的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59757355/

相关文章:

windows - git插件的Jenkins配置

continuous-integration - 如何将 Sahi 测试作为 Hudson 构建的一部分运行?

elasticsearch - 如何在带有状态集或类似内容的kubernetes容器上编辑elasticsearch.yml?

git - 如何检查git提交作者是否有效

github - 如何通过 github 比较来自不同项目的 repos?

continuous-integration - Artifactory 存储库的目的是什么?

Ansible:如何修复 to_nice_yaml 输出引用和换行符?

python - 如何使用 python 从字典中编写 yaml 文件?

github - GitHub 项目中的 README 和 README.md 有什么区别?

git - 在 github repo 上编辑 wiki