Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't install GitHub actions runner on linux

I'm trying to install a GitHub runner on my Linux machine (Ubuntu 20.04.1 LTS) following the steps described at repo>settings>Actions>add runner. The first steps worked fine but when I run the config:

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

I get the following failure message:

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 does not allow the user to execute it as sudo, so I've modified the script to be allowed to do so but the problems with the permissions remain. Any ideas?

UPDATE: I also installed dependencies by running the command below in /actions-runner directory and nothing has changed, the error message is still the same.

sudo ./bin/installdependencies.sh

like image 230
someone Avatar asked Jan 23 '21 22:01

someone


People also ask

Where can I find GitHub runners?

In the left sidebar, click Actions, then click Runners. Under "Runners", you can view a list of registered runners, including the runner's name, labels, and status. The status can be one of the following: Idle: The runner is connected to GitHub and is ready to execute jobs.

Is GitHub action self-hosted runner free?

GitHub Actions usage is free for both public repositories and self-hosted runners.

What is a runner in GitHub Actions?

Runners are the machines that execute jobs in a GitHub Actions workflow. For example, a runner can clone your repository locally, install testing software, and then run commands that evaluate your code. GitHub provides runners that you can use to run your jobs, or you can host your own runners.


4 Answers

The above solutions did not work for me, I installed an older version instead 2.276.1. For a linux 64-bit OS the curl command is:

curl -O -L https://github.com/actions/runner/releases/download/v2.276.1/actions-runner-linux-x64-2.276.1.tar.gz
like image 170
Anton Avatar answered Oct 25 '22 00:10

Anton


Expanding on @someone's answer, I created a quick loop to make symlinks for every one of of these renamed libraries that live in the bin directory of the github action runners. After running the installdependencies.sh script, it creates a symlink for every file that starts with "System." and appends "lib" to the original filename.

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 ..
like image 22
draxiom Avatar answered Oct 25 '22 02:10

draxiom


When you are selecting your runner ensure that you are using the correct image for where it is being executed.

enter image description here

like image 2
Michael Nelles Avatar answered Oct 25 '22 02:10

Michael Nelles


The problem is related to the .NET dependency. The GitHub runner uses the 3.x version while the latest (and what I had installed) is 5. In the newer version, those libraries are renamed without the preceding "lib". More details on that here

.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

Solutions:

1 - Install .NET 3.x Installation guide

2 - Crete a symlink to access the newer through the old one:

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
like image 1
someone Avatar answered Oct 25 '22 02:10

someone