Повторное использование части действия github в разных заданиях - PullRequest
0 голосов
/ 15 января 2020

У меня есть рабочий процесс для CI в monorepo, для этого рабочего процесса в конечном итоге создаются два проекта. Задания работают нормально, однако мне интересно, есть ли способ удалить дублирование в этом файле workflow.yml с настройкой бегуна для задания. Я разделил их так, чтобы они работали параллельно, поскольку они не полагаются друг на друга и быстрее завершаются. Это большая разница во времени за 5 минут по сравнению с 10+, когда ожидание окончания CI sh.

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

Здесь вы видите, что задания имеют почти идентичный процесс, это просто создание сами разные приложения. Мне интересно, есть ли способ взять дубликаты блоков в заданиях и создать способ написать их только один раз и повторно использовать в обоих заданиях.

1 Ответ

0 голосов
/ 28 апреля 2020

Как я знаю, в настоящее время нет способа повторно использовать шаги
, но в этом случае вы можете использовать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...