ruby_block 'runner' do block do
Common.directories(self, node['runner']['dir']['app'])
Utils.download(node, "#{node['runner']['dir']['app']}/#{self.recipe_name}",
"#{node['runner']['app']['mirror']}#{node['runner']['app']['version']}/act_runner-#{node['runner']['app']['version']}-linux-#{Utils.arch()}")
Utils.wait("#{node['git']['host']['local']}:#{node['git']['port']['http']}")
Common.application(self, self.recipe_name, user: node['app']['user'] , actions: [:start, :enable], cwd: node['runner']['dir']['app'],
exec: "#{node['runner']['dir']['app']}/#{self.recipe_name} daemon --config #{node['runner']['dir']['app']}/config.yaml",
unit: { 'Service' => { 'Environment' => [ "HOME=#{node['runner']['dir']['app']}" ].join(' ') } },
subscribe: ["template[#{node['runner']['dir']['app']}/config.yaml]", "remote_file[#{node['runner']['dir']['app']}/#{self.recipe_name}]"] )
(token = Mixlib::ShellOut.new("#{node['git']['dir']['app']}/gitea actions --config #{node['git']['dir']['app']}/app.ini generate-runner-token",
user: node['app']['user'])).run_command; token.error!
(register = Mixlib::ShellOut.new("#{node['runner']['dir']['app']}/#{self.recipe_name} register --instance #{node['git']['host']['local']}:#{node['git']['port']['http']} " \
"--token #{token.stdout.strip} --no-interactive --config #{node['runner']['dir']['app']}/config.yaml --labels #{node['runner']['conf']['label']} ",
cwd: node['runner']['dir']['app'],
user: node['app']['user']
)).run_command; register.error!
Common.application(node, self.recipe_name)
end; action :nothing
end
template "#{node['runner']['dir']['app']}/config.yaml" do
source 'runner.config.yaml.erb'
owner node['app']['user']
group node['app']['group']
mode '0644'
action :create_if_missing
notifies :run, 'ruby_block[runner]', :immediately
end