В GitHub Actions 23 сентября 2026 года удалили среду выполнения JavaScript Action на Node 20 и переключили её на Node 24 — проверьте официальное объявление GitHub. Сначала установите, падает ли именно Action или Node.js вашего проекта; затем обновите Action до совместимой версии и проверьте её в изолированном рабочем процессе. Если вы используете самостоятельно размещаемый Mac Runner, отдельно сверьте версию macOS и архитектуру. Смена компьютера не должна быть первым шагом.
Кому пригодится это руководство. IT-руководителям — чтобы оценить влияние изменения на Mac CI и расставить приоритеты восстановления.
Платформенным инженерам — чтобы проверить Runner, общие Action и шаблоны рабочих процессов.
Ответственным за выпуск iOS/macOS — чтобы решить, достаточно ли проверен критичный конвейер.
Последняя проверка: 21 октября 2026 года. Сведения об изменении среды и ограничениях сверены с объявлением GitHub, а назначение полей Action — с документацией GitHub по метаданным. Политику и совместимость необходимо перепроверять, если GitHub обновит официальные инструкции.
01Сначала определите слой Node.js, на котором возникла ошибка
Одинаковое название Node.js в логах не означает, что сломалась одна и та же часть конвейера. JavaScript Action запускается на среде выполнения, которую GitHub Actions выбирает для самой Action. Node.js приложения или скрипта устанавливается и вызывается отдельно — например, командами рабочего процесса. Удаление среды Node 20 для Actions само по себе не означает, что GitHub удалил установленный вами Node.js проекта.
| Признак | Вероятный объект сбоя | Что проверить |
|---|---|---|
| В журнале указана инициализация Action, загрузка её кода или предупреждение о среде выполнения | JavaScript Action | Ссылку на Action в workflow и поле runs.using в её метаданных |
Ошибка возникает при npm, node или установке пакетов приложения |
Node.js проекта или его зависимости | Команды установки, файл фиксации зависимостей и версию Node.js, заданную для проекта |
| Action запускается, но команда сборки, теста или Xcode завершается ошибкой | Следующий шаг рабочего процесса | Полный журнал задания, переменные окружения, установленные инструменты и конкретную команду, завершившуюся с ошибкой |
| Ошибка появилась только на определённом самостоятельно размещаемом узле | Среда Runner или Action | ОС и архитектуру узла, версию Runner и точную версию вызываемой Action |
Поля runs.using и остальные ключи метаданных описывают, в какой среде запускается JavaScript Action. Сверяйте их с официальным синтаксисом метаданных Action, а не с версией Node.js, которую проект устанавливает внутри отдельного шага.
Как понять, что проблема связана с Action, а не с Node.js проекта? Найдите первый шаг, который завершился с ошибкой, и сопоставьте его с текстом лога. Если отказ возникает до выполнения команды проекта, изучите инициализацию Action и её runtime. Если Action отработала, а затем упала команда сборки или теста, проверяйте Node.js приложения и его зависимости. Не меняйте настройку Runner только потому, что в обоих местах встречается строка «Node».
В типовом разборе один и тот же workflow может содержать обе среды: Action для кэширования или настройки окружения, затем отдельные шаги установки Node.js и запуска тестов. Сбой первой Action не доказывает, что версия Node.js приложения неверна. И наоборот, успешный запуск Action не доказывает, что зависимости проекта совместимы с его Node.js.
02Версия macOS и архитектура — отдельные показатели совместимости
Официальное ограничение Node 24 касается не только версии Action: GitHub указывает, что эта среда выполнения несовместима с macOS 13.4 и более ранними версиями, а также официально не поддерживает ARM32. Это не означает, что затронуты все Mac Runner или все компьютеры Apple Silicon. Сверьте фактическую операционную систему и архитектуру узла с журналом и документацией, прежде чем менять инфраструктуру.
| Что зафиксировать | Где проверить | Как использовать результат |
|---|---|---|
| Версия macOS Runner | Команда диагностики в задании или журнал шага | Если узел работает на macOS 13.4 или более ранней версии, оцените влияние именно на запуск Node 24 |
| Архитектура процессора | Вывод команды диагностики и сведения о Runner | Сопоставьте фактическую архитектуру с ограничением ARM32; не переносите его автоматически на другие архитектуры |
| Ссылка и версия каждой Action | Workflow, шаблоны и журналы заданий | Установите, какой код Action реально запускается, а не какой версии вы ожидали |
| Состояние самостоятельного Runner | Журнал и сведения об узле | Проверяйте ОС, доступность, подключение и запуск конкретного задания; статус «онлайн» не подтверждает совместимость всех Actions |
Чтобы разобраться, где исполняется задание, используйте документацию GitHub по выбору Runner для задачи. Для узлов, которые администрирует ваша команда, дополнительно сверяйте правила эксплуатации с руководством по самостоятельно размещаемым Runner.
Важно. Ограничение для macOS 13.4 и более ранних версий относится к Node 24. Оно не подтверждает, что любой сбой Mac CI вызван устаревшей ОС. Сначала установите, какая именно Action не запускается и на каком Runner выполняется задание.
Влияет ли macOS на Node 24 в самостоятельно размещаемом Mac Runner? Да, если версия системы находится за официальной границей совместимости: GitHub указывает macOS 13.4 и более ранние версии как несовместимые с Node 24. Но отдельно проверьте архитектуру и конкретную Action. Не считайте все Mac одинаковыми и не делайте вывод о проблеме только по процессору Apple Silicon.
03Инвентаризация Action показывает реальный объём изменений
Ищите используемые Action не только в основном YAML-файле. Они могут вызываться из переиспользуемых workflow, составных Action и корпоративных шаблонов. Внешне успешно завершившееся изменение в одном репозитории не подтверждает, что те же зависимости обновлены в остальных командах.
Проверьте ссылки uses: во всех связанных workflow и выясните, на какую версию указывает каждая из них. Затем составьте перечень JavaScript Actions, включая Actions, на которые ссылаются составные Actions. Если Action написана вашей командой, проверьте её файл метаданных и реализацию; документация GitHub описывает создание JavaScript Action и объявление среды выполнения.
Для поиска полезно пройтись по репозиториям и общим шаблонам по ссылкам uses: и имени Action, после чего сопоставить результат с фактическим журналом падающего задания. Проверьте также наследуемые вызовы workflow: источник проблемы может находиться не в том репозитории, где вы впервые увидели ошибку. Синтаксис workflow помогает установить, как устроены вызовы шагов и переиспользуемых workflow.
Как обновить старую JavaScript Action до Node 24? Найдите поддерживаемую версию Action и её описание изменений, затем обновите ссылку в изолированной ветке или тестовом workflow. Если Action ваша, её сопровождающая команда должна обновить объявление runtime и выпустить проверенную версию. После этого проверьте не только запуск, но и входные параметры, выходные значения и обработку ошибок.
Сама замена номера версии в uses: недостаточна, если новый выпуск изменил интерфейс или поведение. Зафиксируйте конкретную проверяемую версию Action, а не полагайтесь на неявное обновление плавающей ссылки. Так проще сопоставить журналы прогонов и повторить тест после возможного отката.
Изолированная проверка должна повторять рабочую задачу
Не начинайте с массового изменения всех производственных workflow. Создайте тестовую ветку или отдельный проверочный workflow и направьте его на тот же тип Runner, который используется в проблемном конвейере. Задача проверки — установить причинную связь между обновлённой Action и восстановлением реального пути сборки.
- Сохраните исходные данные. Запишите ссылку и версию падающей Action, Runner, версию macOS, архитектуру и полный журнал неудачного задания.
- Установите первую ошибку. Отделите сбой инициализации Action от последующих команд установки зависимостей, сборки и тестирования.
- Найдите все вызовы Action. Проверьте workflow репозитория, переиспользуемые workflow, составные Actions и командные шаблоны. Сопоставьте найденные ссылки с шагами в журнале.
- Выберите кандидат для обновления. Убедитесь, что выбранный выпуск Action поддерживает Node 24. Для собственной Action согласуйте изменение runtime с её сопровождающей командой.
- Проверьте среду Runner. Снимите фактические данные о macOS и архитектуре. Если они находятся за официальными ограничениями Node 24, вынесите изменение системы в отдельную проверку.
- Прогоните тот же рабочий путь. В проверочном workflow выполните инициализацию Action, установку зависимостей, сборку Xcode или сборку приложения, а также относящиеся к релизу тесты.
- Сопоставьте результаты и примите решение. Сравните новые журналы с исходными. Запишите, какие задачи восстановлены, какие остаются заблокированы и к какой версии Action или конфигурации Runner привязан результат.
Порядок команд зависит от вашего проекта. Если в конвейере есть установка Node.js для приложения, проверяйте её отдельно от runtime JavaScript Action. В качестве справки по установке и использованию Node.js в workflow можно использовать руководство GitHub по сборке и тестированию кода Node.js; оно не заменяет диагностику конкретной Action.
05Не принимайте доступность Runner за приёмку. Узел может отображаться онлайн, а отдельный простой шаг — завершаться без ошибки. Это ещё не доказывает, что критичная сборка, тестирование и подготовка релиза снова работают.
Решение о выпуске зависит от совместимости и результатов проверки
Если вы обновляете собственную Action, назначьте владельца изменения runtime и выпуска новой версии. Если проблема ограничена системой или архитектурой, отдельно оцените переход на поддерживаемую среду. Замена узла без подтверждённой причины добавляет работы по переносу и настройке, но не гарантирует исправления несовместимого Action или дефекта workflow.
Плюсы обновления Action: оно адресует слой сбоя напрямую и позволяет не менять Runner без необходимости. Ограничения: новый выпуск нужно проверить на используемых параметрах, выходах и обработке ошибок; исправление одной Action не обновляет другие зависимости автоматически.
Плюсы смены или обновления среды Runner: это может устранить установленное несоответствие с ограничениями Node 24. Ограничения: необходимо отдельно протестировать сборку и релиз в целевой среде; перенос узла сам по себе не гарантирует совместимость каждой Action. Для самостоятельно размещаемой инфраструктуры фиксируйте поддерживаемые версии ОС, ответственных за Actions и условия повторной проверки.
Используйте эти условия как решение о допуске:
- Если в журнале подтверждён отказ JavaScript Action, а для неё доступен проверенный выпуск с Node 24, обновите Action и проведите изолированный прогон.
- Если Action принадлежит вашей команде, поручите сопровождающему обновить runtime и выпустить версию, затем проверьте входы, выходы и обработку ошибок.
- Если установленный Runner работает на macOS 13.4 или более ранней версии, оцените переход на поддерживаемую ОС и проверьте тот же workflow до производственного допуска.
- Если журнал указывает на ARM32, проверьте архитектуру и применимость официального ограничения; не распространяйте этот вывод на другие Mac без подтверждения.
- Если ошибка возникает в команде проекта уже после успешного запуска Action, диагностируйте Node.js проекта и зависимости, а не меняйте Runner по умолчанию.
- Если полная критичная задача не прошла проверку, приостановите выпуск или оставьте запуск в изоляции. Статуса «Runner онлайн» или успеха одного шага недостаточно.
- Если сборка, тесты и релизный путь повторно проверены и журналы позволяют установить использованные Action и среду, допускайте изменение по принятому в команде порядку выпуска.
Таблица результатов приёмки должна включать не только итоговый статус. Запишите версию Action, её ссылку в workflow, Runner, ОС, архитектуру, выполнение установки зависимостей, результат сборки и тестов, а также решение о выпуске. Такая запись поможет отличить повторное появление старой Action от нового сбоя проекта.
06Удалённый Mac имеет смысл оценивать после диагностики
Если после исправления Action вам всё ещё нужна отдельная macOS-среда для критичных сборок, сначала определите требования workflow: поддерживаемую ОС, архитектуру, доступ к Xcode, способы доступа инженеров и процедуры работы с секретами. Удалённый Mac может быть вариантом размещения, но без проверки конкретной среды и условий предоставления нельзя считать его автоматическим устранением несовместимости.
Сравните самостоятельный узел команды с удалённой средой по реальным обязанностям эксплуатации: кто обновляет ОС и Actions, кто проверяет доступ, как команда получает доступ к Mac и какие сведения о среде доступны до начала работ. Сведения о предложениях VpsMesh проверяйте по описанию удалённых Mac и условиям аренды; не подменяйте ими проверку конкретной совместимости, конфигурации и условий доставки. Для анализа обращения с данными сверьте политику конфиденциальности.
Постоянная собственная инфраструктура может подойти, если у вашей команды есть ресурсы поддерживать систему, Runner и регламент обновления Actions. Временный или удалённый Mac разумно рассматривать, если нужно проверить отдельную рабочую нагрузку или обеспечить требуемую среду после подтверждения совместимости. Но ни аренда, ни смена физического узла не исправят ошибочную ссылку на Action или проблему в коде проекта. Сначала подтвердите причину, затем выбирайте способ размещения; для оценки варианта от VpsMesh опирайтесь на опубликованные условия и проверенные параметры, а не на предположения.