forgeplus/app/libs/dev_ops/drone/server.rb

62 lines
1.8 KiB
Ruby
Raw Normal View History

2020-07-10 14:08:16 +08:00
class DevOps::Drone::Server
attr_reader :client_id, :client_secret, :drone_host, :rpc_secret
# client_id: user's client_id from oauth
# client_secret: user's client_id from oauth
# drone_host: 云服务器地址eq: 173.53.21.31:80
# eg:
# DevOps::Drone::Server.new(current_user.oauth.client_id, current_user.oauth.client_secret, 'drone_host').generate_cmd
def initialize(client_id, client_secret, drone_host, rpc_secret)
@client_id = client_id
@drone_host = drone_host
@rpc_secret = rpc_secret
@client_secret = client_secret
end
2020-07-14 15:06:09 +08:00
# TODO 一下代码方便测试,正式环境请移除
# docker rm -f `docker ps -qa`
2020-07-10 14:08:16 +08:00
def generate_cmd
2020-07-14 15:06:09 +08:00
"service docker start; docker rm -f `docker ps -qa`; docker run \
2020-07-10 14:08:16 +08:00
-v /var/run/docker.sock:/var/run/docker.sock \
2020-08-06 14:26:19 +08:00
-e DRONE_DATABASE_DRIVER=mysql \
-e DRONE_DATABASE_DATASOURCE=#{database_username}:#{database_password}@#{database_host}:3306/drone?parseTime=true \
2020-07-10 14:08:16 +08:00
-e DRONE_GITEA_SERVER=#{gitea_url} \
-e DRONE_GITEA_CLIENT_ID=#{client_id} \
-e DRONE_GITEA_CLIENT_SECRET=#{client_secret} \
-e DRONE_RPC_SECRET=#{rpc_secret} \
-e DRONE_SERVER_HOST=#{drone_host} \
-e DRONE_SERVER_PROTO=http \
-p '80:80' \
--restart=always \
--detach=true \
--name=drone-server-#{client_id} \
--net='bridge' \
2020-07-14 15:06:09 +08:00
drone/drone:1"
2020-07-10 14:08:16 +08:00
end
private
def gitea_url
Gitea.gitea_config[:domain]
end
2020-08-06 14:26:19 +08:00
def database_username
database_config[Rails.env]["username"]
end
def database_password
database_config[Rails.env]["password"]
end
def database_host
database_config[Rails.env]["host"]
end
def database
database_config[Rails.env]["database"]
end
def database_config
Rails.configuration.database_configuration
end
2020-07-10 14:08:16 +08:00
end