Help
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Copilot Lvl 3
Message 1 of 10

self-hosted runner update protocol?

Solved! Go to Solution.

I was surprised to see that my self-hosted runner (Centos 7) tried to update itself (not mentioned in https://help.github.com/en/actions/automating-your-workflow-with-github-actions/about-self-hosted-ru... ):

 

systemd[1]: Started github actions runner.
bash[8204]: √ Connected to GitHub
bash[8204]: 2019-11-12 18:11:49Z: Listening for Jobs
bash[8204]: Runner update in progress, do not shutdown runner.
bash[8204]: Downloading 2.160.2 runner
bash[8204]: Waiting for current job finish running.
bash[8204]: Generate and execute update script.
bash[8204]: Runner will exit shortly for update, should back online within 10 seconds.
systemd[1]: actions-runner.service: main process exited, code=exited, status=3/NOTIMPLEMENTED
systemd[1]: Unit actions-runner.service entered failed state.
systemd[1]: actions-runner.service failed.

 

The problem is: even after I restart the service, the next time a job should start, the same cycle happens again, so my runner is now stuck.

 

How is this update process for self-hosted runners supposed to work?

9 Replies
GitHub Staff
Message 2 of 10

Re: self-hosted runner update protocol?

Hey @clausreinke ,

 

The Runner is expected to automatically update, we will make sure to update the documentation to ensure this does not appear as a surprise.

 

It should just update and pick up another job.

 

The runner contains a list of text diagnostic log files, located in the `_diag` folder. Could you provide the output of the latest Runner diagnostic log (Prefixed with Runner_) so we can take a look into why this update is failing for you. All sensitive information should be masked, but please double check as this is a public forum.

Copilot Lvl 3
Message 3 of 10

Re: self-hosted runner update protocol?

Hi @thboop ,

 

good to know (documentation: specifically the sections on differences and communication led me to believe that self-hosted runners were not yet self-updating). 

 

The Runner log is included below (looks as if the update was nearly done?).  I had to delete a few lines to stay in the message length limit.

 

Thanks,

Claus

 

[2019-11-13 13:27:28Z INFO Listener] Runner is built for Linux (X64) - linux-x64.
[2019-11-13 13:27:28Z INFO Listener] RuntimeInformation: Linux 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018.
[2019-11-13 13:27:28Z INFO Listener] Version: 2.160.0
[2019-11-13 13:27:28Z INFO Listener] Commit: 1413297394f94a1b768bda66254fc658b4a04591
[2019-11-13 13:27:28Z INFO Listener] Culture: en-US
[2019-11-13 13:27:28Z INFO Listener] UI Culture: en-US
[2019-11-13 13:27:28Z INFO Listener] Validating directory permissions for: '/home/---/actions-runner'
[2019-11-13 13:27:28Z INFO CommandLineParser] Parse
[2019-11-13 13:27:28Z INFO CommandLineParser] Parsing 1 args
[2019-11-13 13:27:28Z INFO CommandLineParser] parsing argument
[2019-11-13 13:27:28Z INFO CommandLineParser] HasArgs: False
[2019-11-13 13:27:28Z INFO CommandLineParser] Adding Command: run
[2019-11-13 13:27:28Z INFO Listener] Arguments parsed
[2019-11-13 13:27:28Z INFO HostContext] Well known config file 'Proxy': '/home/---/actions-runner/.proxy'
[2019-11-13 13:27:28Z INFO RunnerWebProxy] No proxy setting found.
[2019-11-13 13:27:28Z INFO HostContext] Well known config file 'Certificates': '/home/---/actions-runner/.certificates'
[2019-11-13 13:27:28Z INFO RunnerCertificateManager] No certificate setting found.
[2019-11-13 13:27:28Z INFO Runner] ExecuteCommand
[2019-11-13 13:27:28Z INFO ConfigurationStore] currentAssemblyLocation: /home/---/actions-runner/bin/Runner.Listener.dll
[2019-11-13 13:27:28Z INFO ConfigurationStore] binPath: /home/---/actions-runner/bin
[2019-11-13 13:27:28Z INFO ConfigurationStore] RootFolder: /home/---/actions-runner
[2019-11-13 13:27:28Z INFO HostContext] Well known config file 'Runner': '/home/---/actions-runner/.runner'
[2019-11-13 13:27:28Z INFO ConfigurationStore] ConfigFilePath: /home/---/actions-runner/.runner
[2019-11-13 13:27:28Z INFO HostContext] Well known config file 'Credentials': '/home/---/actions-runner/.credentials'
[2019-11-13 13:27:28Z INFO ConfigurationStore] CredFilePath: /home/---/actions-runner/.credentials
[2019-11-13 13:27:28Z INFO HostContext] Well known config file 'Service': '/home/---/actions-runner/.service'
[2019-11-13 13:27:28Z INFO ConfigurationStore] ServiceConfigFilePath: /home/---/actions-runner/.service
[2019-11-13 13:27:28Z INFO HostContext] Well known config file 'Options': '/home/---/actions-runner/.options'
[2019-11-13 13:27:28Z INFO ConfigurationStore] RuntimeOptionsFilePath: /home/---/actions-runner/.options
[2019-11-13 13:27:28Z INFO CommandSettings] Flag 'help': 'False'
[2019-11-13 13:27:28Z INFO CommandSettings] Flag 'version': 'False'
[2019-11-13 13:27:28Z INFO CommandSettings] Flag 'commit': 'False'
[2019-11-13 13:27:28Z INFO CommandSettings] Command 'configure': 'False'
[2019-11-13 13:27:28Z INFO CommandSettings] Command 'remove': 'False'
[2019-11-13 13:27:28Z INFO CommandSettings] Command 'warmup': 'False'
[2019-11-13 13:27:28Z INFO ConfigurationManager] LoadSettings
[2019-11-13 13:27:28Z INFO ConfigurationStore] IsConfigured()
[2019-11-13 13:27:28Z INFO ConfigurationStore] IsConfigured: True
[2019-11-13 13:27:28Z INFO ConfigurationManager] Is configured: True
[2019-11-13 13:27:28Z INFO ConfigurationStore] Read setting file: 309 chars
[2019-11-13 13:27:28Z INFO ConfigurationManager] Settings Loaded
[2019-11-13 13:27:28Z INFO ConfigurationStore] IsServiceConfigured()
[2019-11-13 13:27:28Z INFO ConfigurationStore] IsServiceConfigured: False
[2019-11-13 13:27:28Z INFO CommandSettings] Command 'run': 'True'
[2019-11-13 13:27:28Z INFO ConfigurationStore] IsConfigured()
[2019-11-13 13:27:28Z INFO ConfigurationStore] IsConfigured: True
[2019-11-13 13:27:28Z INFO ConfigurationManager] Is configured: True
[2019-11-13 13:27:28Z INFO Runner] Could not parse the argument value '' for StartupType. Defaulting to Manual
[2019-11-13 13:27:28Z INFO Runner] Set runner startup type - Manual
[2019-11-13 13:27:28Z INFO CommandSettings] Flag 'once': 'False'
[2019-11-13 13:27:28Z INFO Runner] RunAsync
[2019-11-13 13:27:28Z INFO ConfigurationManager] LoadSettings
[2019-11-13 13:27:28Z INFO ConfigurationStore] IsConfigured()
[2019-11-13 13:27:28Z INFO ConfigurationStore] IsConfigured: True
[2019-11-13 13:27:28Z INFO ConfigurationManager] Is configured: True
[2019-11-13 13:27:28Z INFO ConfigurationManager] Settings Loaded
[2019-11-13 13:27:29Z INFO MessageListener] {
  "AgentId": 21,
  "AgentName": "-----------------------",
  "PoolId": 1,
  "PoolName": "Default",
  "ServerUrl": "https://pipelines.actions.githubusercontent.com/--------------------------------------------------/",
  "GitHubUrl": "https://github.com/------/--------------------",
  "WorkFolder": "_work"
}
[2019-11-13 13:27:29Z INFO MessageListener] Loading Credentials
[2019-11-13 13:27:29Z INFO ConfigurationStore] HasCredentials()
[2019-11-13 13:27:29Z INFO ConfigurationStore] stored True
[2019-11-13 13:27:29Z INFO CredentialManager] GetCredentialProvider
[2019-11-13 13:27:29Z INFO CredentialManager] Creating type OAuth
[2019-11-13 13:27:29Z INFO CredentialManager] Creating credential type: OAuth
[2019-11-13 13:27:29Z INFO HostContext] Well known config file 'RSACredentials': '/home/---/actions-runner/.credentials_rsaparams'
[2019-11-13 13:27:29Z INFO RSAFileKeyManager] Loading RSA key parameters from file /home/---/actions-runner/.credentials_rsaparams
[2019-11-13 13:27:29Z INFO MessageListener] Attempt to create session.
[2019-11-13 13:27:29Z INFO MessageListener] Connecting to the Agent Server...
[2019-11-13 13:27:29Z INFO RunnerServer] Establish connection with 100 seconds timeout.
[2019-11-13 13:27:29Z INFO GitHubActionsRunner] Starting operation Location.GetConnectionData
[2019-11-13 13:27:29Z INFO RunnerServer] Establish connection with 60 seconds timeout.
[2019-11-13 13:27:29Z INFO GitHubActionsRunner] Starting operation Location.GetConnectionData
[2019-11-13 13:27:29Z INFO RunnerServer] Establish connection with 60 seconds timeout.
[2019-11-13 13:27:29Z INFO GitHubActionsRunner] Starting operation Location.GetConnectionData
[2019-11-13 13:27:30Z INFO GitHubActionsRunner] Finished operation Location.GetConnectionData
[2019-11-13 13:27:30Z INFO GitHubActionsRunner] Finished operation Location.GetConnectionData
[2019-11-13 13:27:30Z INFO GitHubActionsRunner] Finished operation Location.GetConnectionData
[2019-11-13 13:27:30Z INFO MessageListener] VssConnection created
[2019-11-13 13:27:30Z INFO Terminal] WRITE LINE:
[2019-11-13 13:27:30Z INFO Terminal] WRITE LINE:
[2019-11-13 13:27:30Z WARN GitHubActionsRunner] Authentication failed with status code 401.
Cache-Control: no-cache^M
Pragma: no-cache^M
P3P: CP="----------------------------------------------------------------------------------------------------------------"^M
WWW-Authenticate: Basic realm="https://pipelines.actions.githubusercontent.com/serviceDeployments/pipelinesghubeus21", Bearer, TFS-Federated^M
X-TFS-ProcessId: ------------------------------------^M
Strict-Transport-Security: max-age=31536000; includeSubDomains^M
ActivityId: ------------------------------------^M
X-TFS-Session: ------------------------------------^M
X-VSS-E2EID: ------------------------------------^M
X-Frame-Options: SAMEORIGIN^M
X-TFS-FedAuthRealm: https://pipelines.actions.githubusercontent.com/serviceDeployments/pipelinesghubeus21^M
X-TFS-FedAuthIssuer: https://www.visualstudio.com/^M
X-VSS-AuthorizationEndpoint: https://vssps.actions.githubusercontent.com/--------------------------------------------------/^M
X-VSS-ResourceTenant: 00000000-0000-0000-0000-000000000000^M
X-VSS-S2STargetService: ------------------------------------/visualstudio.com^M
X-TFS-FedAuthRedirect: https://github.com^M
Request-Context: appId=cid-v1:------------------------------------^M
Access-Control-Expose-Headers: Request-Context^M
X-Content-Type-Options: nosniff^M
X-MSEdge-Ref: Ref A: -------------------------------- Ref B: ----------- Ref C: 2019-11-13T13:27:30Z^M
Date: Wed, 13 Nov 2019 13:27:29 GMT^M

[2019-11-13 13:27:30Z INFO RSAFileKeyManager] Loading RSA key parameters from file /home/---/actions-runner/.credentials_rsaparams
[2019-11-13 13:27:30Z INFO RSAFileKeyManager] Loading RSA key parameters from file /home/---/actions-runner/.credentials_rsaparams
[2019-11-13 13:27:30Z INFO GitHubActionsRunner] AAD Correlation ID for this token request: Unknown
[2019-11-13 13:27:31Z INFO MessageListener] Session created.
[2019-11-13 13:27:31Z INFO Terminal] WRITE LINE: 2019-11-13 13:27:31Z: Listening for Jobs
[2019-11-13 13:27:31Z INFO JobDispatcher] Set runner/worker IPC timeout to 30 seconds.
[2019-11-13 13:57:36Z INFO MessageListener] No message retrieved from session '------------------------------------' within last 30 minutes.
[2019-11-13 14:08:22Z INFO RSAFileKeyManager] Loading RSA key parameters from file /home/---/actions-runner/.credentials_rsaparams
[2019-11-13 14:08:22Z INFO MessageListener] Message '23' received from session '------------------------------------'.
[2019-11-13 14:08:22Z INFO Runner] Refresh message received, kick-off selfupdate background process.
[2019-11-13 14:08:23Z INFO SelfUpdater] Version '2.160.2' of 'agent' package available in server.
[2019-11-13 14:08:23Z INFO SelfUpdater] Current running runner version is 2.160.0
[2019-11-13 14:08:23Z INFO SelfUpdater] An update is available.
[2019-11-13 14:08:23Z INFO Terminal] WRITE LINE: Runner update in progress, do not shutdown runner.
[2019-11-13 14:08:23Z INFO Terminal] WRITE LINE: Downloading 2.160.2 runner
[2019-11-13 14:08:23Z INFO SelfUpdater] Attempt 1: save latest runner into /home/---/actions-runner/_work/_update/runner1.tar.gz.
[2019-11-13 14:08:23Z INFO SelfUpdater] Download runner: begin download
[2019-11-13 14:08:41Z INFO SelfUpdater] Download runner: finished download
[2019-11-13 14:08:41Z INFO SelfUpdater] Which: 'tar'
[2019-11-13 14:08:41Z INFO SelfUpdater] Location: '/usr/bin/tar'
[2019-11-13 14:08:41Z INFO ProcessInvokerWrapper] Starting process:
[2019-11-13 14:08:41Z INFO ProcessInvokerWrapper]   File name: '/usr/bin/tar'
[2019-11-13 14:08:41Z INFO ProcessInvokerWrapper]   Arguments: '-xzf "/home/---/actions-runner/_work/_update/runner1.tar.gz"'
[2019-11-13 14:08:41Z INFO ProcessInvokerWrapper]   Working directory: '/home/---/actions-runner/_work/_update'
[2019-11-13 14:08:41Z INFO ProcessInvokerWrapper]   Require exit code zero: 'False'
[2019-11-13 14:08:41Z INFO ProcessInvokerWrapper]   Encoding web name:  ; code page: ''
[2019-11-13 14:08:41Z INFO ProcessInvokerWrapper]   Force kill process on cancellation: 'False'
[2019-11-13 14:08:41Z INFO ProcessInvokerWrapper]   Redirected STDIN: 'False'
[2019-11-13 14:08:41Z INFO ProcessInvokerWrapper]   Persist current code page: 'False'
[2019-11-13 14:08:41Z INFO ProcessInvokerWrapper]   Keep redirected STDIN open: 'False'
[2019-11-13 14:08:41Z INFO ProcessInvokerWrapper]   High priority process: 'False'
[2019-11-13 14:08:41Z INFO ProcessInvokerWrapper] Updated oom_score_adj to 500 for PID: 10037.
[2019-11-13 14:08:41Z INFO ProcessInvokerWrapper] Process started with process id 10037, waiting for process exit.
[2019-11-13 14:08:44Z INFO ProcessInvokerWrapper] STDOUT/STDERR stream read finished.
[2019-11-13 14:08:44Z INFO ProcessInvokerWrapper] STDOUT/STDERR stream read finished.
[2019-11-13 14:08:44Z INFO ProcessInvokerWrapper] Finished process 10037 with exit code 0, and elapsed time 00:00:02.6709466.
[2019-11-13 14:08:44Z INFO SelfUpdater] Finished getting latest runner package at: /home/---/actions-runner/_work/_update.
[2019-11-13 14:08:44Z INFO SelfUpdater] Copy /home/---/actions-runner/_work/_update/bin to /home/---/actions-runner/bin.2.160.2.
[2019-11-13 14:08:44Z INFO SelfUpdater] Copy /home/---/actions-runner/_work/_update/externals to /home/---/actions-runner/externals.2.160.2.
[2019-11-13 14:08:44Z INFO SelfUpdater] Copy any remaining .sh/.cmd files into runner root.
[2019-11-13 14:08:44Z INFO SelfUpdater] Download latest runner and unzip into runner root.
[2019-11-13 14:08:44Z INFO Terminal] WRITE LINE: Waiting for current job finish running.
[2019-11-13 14:08:44Z INFO SelfUpdater] All running job has exited.
[2019-11-13 14:08:44Z INFO SelfUpdater] Delete old version runner backup.
[2019-11-13 14:08:44Z INFO Terminal] WRITE LINE: Generate and execute update script.
[2019-11-13 14:08:44Z INFO SelfUpdater] Generate update script into: /home/---/actions-runner/_work/_update.sh
[2019-11-13 14:08:44Z INFO SelfUpdater] Which: 'bash'
[2019-11-13 14:08:44Z INFO SelfUpdater] Location: '/usr/bin/bash'
[2019-11-13 14:08:44Z INFO SelfUpdater] Update script start running
[2019-11-13 14:08:44Z INFO Terminal] WRITE LINE: Runner will exit shortly for update, should back online within 10 seconds.
[2019-11-13 14:08:44Z INFO Runner] Auto update task finished at backend, an runner update is ready to apply exit the current runner instance.
[2019-11-13 14:08:44Z INFO Runner] Stop message queue looping.
[2019-11-13 14:08:44Z WARN GitHubActionsRunner] GET request to https://pipelines.actions.githubusercontent.com/--------------------------------------------------/_apis/distributedtask/pools/1/messages?sessionId=------------------------------------&lastMessageId=23 has been cancelled.
[2019-11-13 14:08:44Z INFO MessageListener] Get next message has been cancelled.
[2019-11-13 14:08:44Z INFO Runner] Ignore any exception after cancel message loop. System.Threading.Tasks.TaskCanceledException: The operation was canceled.
 ---> System.IO.IOException: Unable to read data from the transport connection: Operation canceled.
 ---> System.Net.Sockets.SocketException (125): Operation canceled
   --- End of inner exception stack trace ---
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(Int16 token)
   at System.Net.Security.SslStream.<FillBufferAsync>g__InternalFillBufferAsync|215_0[TReadAdapter](TReadAdapter adap, ValueTask`1 task, Int32 min, Int32 initial)
   at System.Net.Security.SslStream.ReadAsyncInternal[TReadAdapter](TReadAdapter adapter, Memory`1 buffer)
   at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.AuthenticationHelper.SendWithNtAuthAsync(HttpRequestMessage request, Uri authUri, ICredentials credentials, Boolean isProxyAuth, HttpConnection connection, HttpConnectionPool connectionPool, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.AuthenticationHelper.SendWithAuthAsync(HttpRequestMessage request, Uri authUri, ICredentials credentials, Boolean preAuthenticate, Boolean isProxyAuth, Boolean doRequestAuth, HttpConnectionPool pool, CancellationToken cancellationToken)
   at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at GitHub.Services.Common.VssHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at GitHub.Services.Common.VssHttpRetryMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at GitHub.Services.WebApi.VssHttpClientBase.SendAsync(HttpRequestMessage message, HttpCompletionOption completionOption, Object userState, CancellationToken cancellationToken)
   at GitHub.Services.WebApi.VssHttpClientBase.SendAsync[T](HttpRequestMessage message, Object userState, CancellationToken cancellationToken)
   at GitHub.Services.WebApi.VssHttpClientBase.SendAsync[T](HttpMethod method, IEnumerable`1 additionalHeaders, Guid locationId, Object routeValues, ApiResourceVersion version, HttpContent content, IEnumerable`1 queryParameters, Object userState, CancellationToken cancellationToken)
   at GitHub.Runner.Listener.MessageListener.GetNextMessageAsync(CancellationToken token)
   at GitHub.Runner.Listener.Runner.RunAsync(RunnerSettings settings, Boolean runOnce)
[2019-11-13 14:08:44Z INFO JobDispatcher] Shutting down JobDispatcher. Make sure all WorkerDispatcher has finished.

 

GitHub Staff
Message 4 of 10

Re: self-hosted runner update protocol?

Thanks @clausreinke !

 

Could you provide the rest of the logs? Also, can you confirm you are still seeing the issue now?

 

Copilot Lvl 3
Message 5 of 10

Re: self-hosted runner update protocol?

The only lines I deleted where of the `HostContext Well known directory` kind (Bin, Root, Work, Diag and Options). They did not seem to contribute useful information.

 

I just cancelled the outstanding jobs, restarted the runner and re-ran the checks for the last job - same result.

GitHub Staff
Message 6 of 10

Re: self-hosted runner update protocol?

@clausreinke 

 

Thank you for the quick follow up! It looks like the update script is running, but the runner fails to update. When we run the update script, we end up creating a log file in the same location, (the _diag) folder. It is prefixed with "SelfUpdate". Could you please provide the logs from the file?

 

Thank you for your patience!

 

Copilot Lvl 3
Message 7 of 10

Re: self-hosted runner update protocol?

Not much in those files, I'm afraid:

 

- whoami

- Waiting for Runner.Listener (9706) to complete

- Process 9706 still running

 

None of the processes listed in those files are still running when I get to look, so I don't think they are stuck.

Solution
GitHub Staff
Message 8 of 10

Re: self-hosted runner update protocol?

Hey @clausreinke 

 

It appears you are creating your own systemd service for the ./run.sh script, is that correct?

 

[2019-11-13 13:27:28Z INFO ConfigurationStore] IsServiceConfigured: False

 

We have a built in way to run as a service, which uses systemd but sets the configuration in the runner we need to properly autoupdate. 

 

I've confirmed I'm seeing this issue on CentOS 7 when manually creating a systemd service to run `run.sh`, but the issue does not appear when using the service script provided with the runner. Your issue should be resolved by running as a service using the provided script.

 

You can see more information on how to run as a service here:

https://help.github.com/en/actions/automating-your-workflow-with-github-actions/configuring-the-self...

Copilot Lvl 3
Message 9 of 10

Re: self-hosted runner update protocol?

Hi @thboop ,

 

Correct. When I installed the runner, I opened all documentation links for self-hosted runners and I do not recall the section on "Configuring the self-hosted runner application as a service" being there at the time?-)

 

I have now replaced our old service with yours, and things are working again - the update seems to have gone through, and jobs are running.

 

Three more suggestions wrt linux runner services:

 

  1.  [docs] mention `sudo ./svc.sh install [user]`, and warn people not to run the runner service as admin just because the service install need sudo
  2.  [code] `systemctl` has more commands, such as `cat`; given the weird service name, it would be good to route all of them through, giving the "usage" only when explicitly requested
  3.  [docs] `journalctl` is the important partner to `systemctl`, and it needs the service name - mention `.service` and provide a usage example like
sudo journalctl -u $(cat .service) -f

Thanks for your help (and for actions in general;-),

Claus

GitHub Staff
Message 10 of 10

Re: self-hosted runner update protocol?

Glad to hear it is working for you! 

 

For anyone who discovers this topic in the future:

- We do provide a script to make it easier to create your own systemd service ./svc.sh

- You can also create your own systemd or alternative (such as initd) service. The ./bin/actions.runner.service.template and ./bin/systemd.svc.sh.template  templates are used to generate these services. These can be used as a guide to facilitate your own implementation.

 

I'll be taking this information and the other feedback items you have provided to the team to see how we can best address it. Thanks for your contributions and feedback @clausreinke !