Фон
Я использовал Travis-CI в течение долгого времени, но, увидев более быстрые результаты с действиями GH, решил мигрировать, а затем он стал медленнее. : O
У меня есть рабочий репо с ruby и рубинами. Поток CI довольно прост:
- экземпляр
rvm
- установка гемов
- запуск пары сценариев для lint
JSON
и HTML
Проблема
На первый взгляд, я просто попытался преобразовать его 1-1, но рабочий процесс GH был в два раза медленнее (7 минут против 3 минут Трэвиса). Затем я начал разбивать скрипт на GitHub steps
, чтобы профилировать то, что требовало времени. Я не мог сделать то же самое на Трэвисе, который я пытался использовать jobs
. Итак, мои вопросы:
- Являются ли рабочий процесс GitHub и среда Travis CI одинаковыми, как при запуске контейнеров с нуля?
- Как можно было бы назвать / отделить каждую задачу в Travis? Похоже, что шаги GH являются последовательными и повторно используют предыдущий шаг, в то время как задания Трэвиса выполняются параллельно, и каждое запускается заново.
- Бонусный вопрос: так как это скрипт на основе ruby HTML, он использует
NOKOGIRI_USE_SYSTEM_LIBRARIES=true
чтобы ускорить установку. Эта единственная строка рекомендована Трэвисом и работает безупречно, но не относится к GH, почему?
Спасибо:)
GH action:
steps:
- uses: actions/checkout@v2
- name: Set up Ruby 2.6
uses: actions/setup-ruby@v1
with:
ruby-version: 2.6.x
- name: Install Dependencies
run: |
gem install bundler
bundle install --jobs 3 --retry 3 --deployment
- name: Run Jekyll
run: script/run_jekyll.sh
- name: Validate JSON
run: script/validate_json.rb
- name: Ping Websites
run: script/ping_websites.rb
- name: Check Files Formatting
run: script/check_files_formatting.sh
Трэвис
jobs:
include:
- stage: Install Dependencies
script:
- gem install bundler
- bundle install --jobs 3 --retry 3
- stage: run jekyll
script: ./script/run_jekyll.sh
- stage: validate json
script: ./script/validate_json.rb
- stage: ping websites
script: ./script/ping_websites.rb
- stage: check files formatting
script: ./script/check_files_formatting.sh