84 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
#
 | 
						|
# Cookbook:: kosmos_gitea
 | 
						|
# Recipe:: act_runner
 | 
						|
#
 | 
						|
 | 
						|
working_directory = node["gitea"]["working_directory"]
 | 
						|
gitea_credentials = data_bag_item("credentials", "gitea")
 | 
						|
runners           = gitea_credentials["runners"]
 | 
						|
gitea_host        = "https://#{node["gitea"]["domain"]}"
 | 
						|
 | 
						|
apt_repository 'docker' do
 | 
						|
  uri 'https://download.docker.com/linux/ubuntu'
 | 
						|
  key 'https://download.docker.com/linux/ubuntu/gpg'
 | 
						|
  components ['stable']
 | 
						|
end
 | 
						|
 | 
						|
%w[
 | 
						|
  docker-ce
 | 
						|
  docker-ce-cli
 | 
						|
  containerd.io
 | 
						|
  docker-buildx-plugin
 | 
						|
].each do |apt_pkg|
 | 
						|
  package apt_pkg
 | 
						|
end
 | 
						|
 | 
						|
remote_file "/usr/local/bin/act_runner" do
 | 
						|
  source node["gitea"]["act_runner"]["download_url"]
 | 
						|
  checksum node["gitea"]["act_runner"]["checksum"]
 | 
						|
  mode "0750"
 | 
						|
end
 | 
						|
 | 
						|
directory "#{working_directory}/runners" do
 | 
						|
  mode  "0700"
 | 
						|
end
 | 
						|
 | 
						|
runners.each do |runner|
 | 
						|
  runner_name = "gitea-runner-#{runner["org"]}"
 | 
						|
  runner_dir = "#{working_directory}/runners/#{runner["org"]}"
 | 
						|
 | 
						|
  directory runner_dir do
 | 
						|
    mode  "0700"
 | 
						|
  end
 | 
						|
 | 
						|
  bash "register_#{runner["org"]}_runner" do
 | 
						|
    cwd runner_dir
 | 
						|
    code <<-EOF
 | 
						|
act_runner register \
 | 
						|
  --no-interactive \
 | 
						|
  --instance #{gitea_host} \
 | 
						|
  --name #{runner_name} \
 | 
						|
  --token #{runner["token"]}
 | 
						|
    EOF
 | 
						|
    not_if { File.exist?("#{runner_dir}/.runner") }
 | 
						|
  end
 | 
						|
 | 
						|
  systemd_unit "#{runner_name}.service" do
 | 
						|
    content({
 | 
						|
      Unit: {
 | 
						|
        Description: "Gitea Actions Runner for '#{runner["org"]}' org",
 | 
						|
        Documentation: ["https://gitea.com/gitea/act_runner"],
 | 
						|
        Requires: "gitea.service",
 | 
						|
        After: "syslog.target network.target"
 | 
						|
      },
 | 
						|
      Service: {
 | 
						|
        Type: "simple",
 | 
						|
        WorkingDirectory: runner_dir,
 | 
						|
        Environment: "HOME=/root",
 | 
						|
        ExecStart: "/usr/local/bin/act_runner daemon",
 | 
						|
        Restart: "always",
 | 
						|
      },
 | 
						|
      Install: {
 | 
						|
        WantedBy: "multi-user.target"
 | 
						|
      }
 | 
						|
    })
 | 
						|
    verify false
 | 
						|
    triggers_reload true
 | 
						|
    action [:create]
 | 
						|
  end
 | 
						|
 | 
						|
  service runner_name do
 | 
						|
    action [:enable, :start]
 | 
						|
  end
 | 
						|
end
 |