Не удается установить средство запуска действий GitHub на Linux

Я пытаюсь установить средство запуска GitHub на свой компьютер с Linux (Ubuntu 20.04.1 LTS), выполнив действия, описанные в разделе репо> настройки> Действия> добавить средство запуска. Первые шаги сработали нормально, но когда я запускаю конфигурацию:

./config.sh --url <repo URL> --token <token>

Я получаю следующее сообщение об ошибке:

      ldd: ./bin/libSystem.Security.Cryptography.Native.OpenSsl.so: No such file or directory
ldd: ./bin/libSystem.IO.Compression.Native.so: No such file or directory
touch: cannot touch '.env': Permission denied
./env.sh: line 37: .path: Permission denied
./env.sh: line 32: .env: Permission denied
Unhandled exception. System.UnauthorizedAccessException: Access to the path '/actions-runner/_diag' is denied.
 ---> System.IO.IOException: Permission denied
   --- End of inner exception stack trace ---
   at System.IO.FileSystem.CreateDirectory(String fullPath)
   at System.IO.Directory.CreateDirectory(String path)
   at GitHub.Runner.Common.HostTraceListener..ctor(String logFileDirectory, String logFilePrefix, Int32 pageSizeLimit, Int32 retentionDays)
   at GitHub.Runner.Common.HostContext..ctor(String hostType, String logFile)
   at GitHub.Runner.Listener.Program.Main(String[] args)
./config.sh: line 76: 10405 Aborted                 (core dumped) ./bin/Runner.Listener configure "$@"

config.sh не позволяет пользователю выполнять его как sudo, поэтому я изменил скрипт, чтобы он мог это делать, но проблемы с разрешениями остались. Любые идеи?

ОБНОВЛЕНИЕ: я также установил зависимости, выполнив команду ниже в каталоге / actions-runner, и ничего не изменилось, сообщение об ошибке остается прежним.

sudo ./bin/installdependencies.sh

7 ответов

Решение

Обращаясь к @ чей-то ответ, я создал быстрый цикл для создания символических ссылок для каждой из этих переименованных библиотек, которые находятся в каталоге bin бегунов действий github. После запуска сценария installdependencies.sh он создает символическую ссылку для каждого файла, который начинается с «System». и добавляет «lib» к исходному имени файла.

      sudo ./bin/installdependencies.sh \
   && cd ./bin \
   && for lib in $(find . -name 'System.*'); do \
     toFile=$(echo "$lib" | sed -e 's/\.\/System\./.\/libSystem./g'); \
     if ! [ -f $toFile ]; then sudo ln -s $lib $toFile; fi; \
  done && cd ..

Когда вы выбираете своего бегуна, убедитесь, что вы используете правильное изображение для того места, где он выполняется.

В моем случае помогла следующая команда:

      sudo chown -R $(id -u):$(id -g) $PWD

Приведенные выше решения у меня не сработали, вместо этого я установил старую версию 2.276.1. Для 64-разрядной ОС Linux команда curl выглядит так:

      curl -O -L https://github.com/actions/runner/releases/download/v2.276.1/actions-runner-linux-x64-2.276.1.tar.gz

Проблема связана с зависимостью .NET. Средство запуска GitHub использует версию 3.x, а последняя (и то, что я установил) - 5. В более новой версии эти библиотеки переименованы без предшествующей «lib». Подробнее об этом здесь

.NET 3.x:

      libSystem.Security.Cryptography.Native.OpenSsl.so
libSystem.IO.Compression.Native.so

.NET 5.x

      System.Security.Cryptography.Native.OpenSsl.so
System.IO.Compression.Native.so

Решения:

1 - Установка .NET 3.x Руководство по установке

2 - Создайте символическую ссылку для доступа к более новой через старую:

      ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/libSystem.Security.Cryptography.Native.OpenSsl.so /usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.10/libSystem.Security.Cryptography.Native.OpenSsl.so

ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/libSystem.Security.Cryptography.Native.OpenSsl.a /usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.10/libSystem.Security.Cryptography.Native.OpenSsl.a

Этого не было во время установки, но я получил ту же ошибку при попытке запустить службу как службу.

В моем случаеaction-runnerдолжен был быть запущен , поэтому он был установлен в корневую папку. Как я узнал после некоторой отладкиsvc.shскрипт установит службу, которая будет запускаться с пользователем вSUDO_USERдаже если установка была запущена как .

Итак, если вы хотите, чтобы служба запускалась какrootвам нужно явно сообщить об этом установщику:

      ./svc.sh install root

Использование дополнительногоuserаргумент описан на docs.github.com

Как видно из этого:

Если вы создали action-runner с помощью команды, разрешения будут другими. Я получаю ту же ошибку, что и выше, вaction-runner1но нет ошибки вaction-runner2. Не используйтеsudoпри создании папкиaction-runner.

Другие вопросы по тегам