87 lines
2.1 KiB
Ruby
87 lines
2.1 KiB
Ruby
#
|
|
# Cookbook:: kosmos_gitea
|
|
# Recipe:: act_runner
|
|
#
|
|
|
|
version = node["gitea"]["act_runner"]["version"]
|
|
download_url = "https://dl.gitea.com/act_runner/#{version}/act_runner-#{version}-linux-amd64"
|
|
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 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",
|
|
ExecStartPre: "/bin/sleep 3", # Wait for Gitea's API to be up when restarting at the same time
|
|
Restart: "always",
|
|
},
|
|
Install: {
|
|
WantedBy: "multi-user.target"
|
|
}
|
|
})
|
|
verify false
|
|
triggers_reload true
|
|
action [:create]
|
|
end
|
|
|
|
service runner_name do
|
|
action [:enable, :start]
|
|
end
|
|
end
|