Действия GitHub: доморощенный медленный

#homebrew #github-actions

#доморощенный #github-действия

Вопрос:

Я никогда в жизни не использовал macOS, поэтому я не уверен, связано ли это с изображением, используемым GitHub actions, самим homebrew или с тем, как я его использую:

Я пытаюсь использовать действия GitHub для создания и тестирования проекта на C в Ubuntu и macOS. Сборка кода с использованием CMake занимает всего около одной минуты в обоих случаях, однако установка зависимостей (Boost и Lua) занимает более трех минут на macOS, в отличие от 20 секунд на Ubuntu. Мой workflow.yml выглядит следующим образом:

 jobs:
  build-and-test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
        include:
        - os: ubuntu-latest
          INSTALL_DEPS: sudo apt-get install -yq libboost-dev libboost-graph-dev lua5.3 liblua5.3-dev
          CC: gcc
          CXX: g  
        - os: macos-latest
          INSTALL_DEPS: brew install boost lua
          CC: clang
          CXX: clang  
    steps:
      - uses: actions/checkout@v2
      - name: install-dependencies
        run: ${{ matrix.INSTALL_DEPS }}
      # ...
 

Кажется, что boost это единственный пакет, который я могу установить с помощью homebrew, в отличие от более мелкозернистого libboost-dev libboost-graph-dev .

Могу ли я что-нибудь сделать здесь, если я не хочу создавать Boost из исходного кода на macOS? Я знаю, что можно кэшировать зависимости с помощью действий GitHub, но это кажется слишком сложным для моего варианта использования, и я на самом деле не знаю, как использовать это с homebrew в первом случае.

Ответ №1:

Я провел небольшой тест, чтобы проверить, сколько времени требуется для использования brew в Ubuntu

 jobs:
  build-and-test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
        include:
        - os: ubuntu-latest
          INSTALL_DEPS: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" amp;amp; date amp;amp; brew install boost lua amp;amp; date
          #INSTALL_DEPS: sudo apt-get install -yq libboost-dev libboost-graph-dev lua5.3 liblua5.3-dev
          CC: gcc
          CXX: g  
        - os: macos-latest
          INSTALL_DEPS: brew install boost lua
          CC: clang
          CXX: clang  
    steps:
      - uses: actions/checkout@v2
      - name: install-dependencies
        run: ${{ matrix.INSTALL_DEPS }}
 

И для запуска brew install boost lua потребовалось около 26 секунд

 Fri Dec 18 11:16:02 UTC 2020
Fri Dec 18 11:16:28 UTC 2020
 

Где на macOS я получил 2:33 , 46s , 45s . Так что по сравнению с наивысшим значением это большая разница. Но сравнение 45 с 26 с — это не так (все еще почти в 2 раза, но звучит не так уж плохо). Я думаю, что на самом деле нет смысла это оптимизировать. Может быть много аспектов, которые могут повлиять, и даже это сообщение также может сыграть свою роль в этом

введите описание изображения здесь

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

Комментарии:

1. Ах, я пропустил это замечание о том, что рабочие процессы macOS теперь занимают больше времени, я думаю, это может ответить на него.