mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-07-16 23:18:56 +08:00
ADD test devops
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
class DevOps::Drone::Ci
|
||||
attr_reader :host, :username, :password
|
||||
|
||||
# host: drone server's ip
|
||||
# username: drone server's account
|
||||
# password: drone server's password
|
||||
# eq:
|
||||
# DevOps::Drone::Ci.new(@cloud_account.drone_ip, @cloud_account.account, @cloud_account.visible_secret).get_token
|
||||
def initialize(host, username, password)
|
||||
@host = host
|
||||
@username = username
|
||||
@password = password
|
||||
end
|
||||
|
||||
def get_token
|
||||
`sshpass -p #{password} ssh -o "StrictHostKeyChecking no" #{username}@#{host} "#{cmd}"`
|
||||
end
|
||||
|
||||
private
|
||||
def cmd
|
||||
"cd ..; cd var/lib/drone/; sqlite3 database.sqlite; .dump; select user_hash from users where user_login=#{username} "
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,39 @@
|
||||
class DevOps::Drone::Client
|
||||
attr_reader :client_id, :drone_ip, :rpc_secret
|
||||
|
||||
# client_id: user's client_id from oauth
|
||||
# drone_ip: 云服务器IP地址, eq: 173.65.32.21
|
||||
# eq:
|
||||
# DevOps::Drone::Client.new(current_user.oauth.client_id, 'drone_ip').generate_cmd
|
||||
def initialize(client_id, drone_ip, rpc_secret)
|
||||
@client_id = client_id
|
||||
@drone_ip = drone_ip
|
||||
@rpc_secret = rpc_secret
|
||||
end
|
||||
|
||||
def run
|
||||
`docker run -d \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-e DRONE_RPC_SERVER=drone-server-#{client_id}:9000 \
|
||||
-e DRONE_RPC_SECRET=#{rpc_secret} \
|
||||
-e DRONE_RUNNER_NAME=#{drone_ip} \
|
||||
--restart always \
|
||||
--name drone-agent--#{client_id} \
|
||||
--net="bridge" \
|
||||
drone/drone-runner-docker:1
|
||||
`
|
||||
end
|
||||
|
||||
def generate_cmd
|
||||
"docker run -d \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-e DRONE_RPC_SERVER=drone-server-#{client_id}:9000 \
|
||||
-e DRONE_RPC_SECRET=#{rpc_secret} \
|
||||
-e DRONE_RUNNER_NAME=#{drone_ip} \
|
||||
--restart always \
|
||||
--name drone-agent--#{client_id} \
|
||||
--net='bridge' \
|
||||
drone/drone-runner-docker:1
|
||||
"
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,59 @@
|
||||
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
|
||||
|
||||
def run
|
||||
`
|
||||
docker run \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-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" \
|
||||
-p "9000:9000" \
|
||||
--restart=always \
|
||||
--detach=true \
|
||||
--name=drone-server-#{client_id} \
|
||||
--net="bridge" \
|
||||
drone/drone:1
|
||||
`
|
||||
end
|
||||
|
||||
def generate_cmd
|
||||
"service docker start; docker run \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-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' \
|
||||
-p '9000:9000' \
|
||||
--restart=always \
|
||||
--detach=true \
|
||||
--name=drone-server-#{client_id} \
|
||||
--net='bridge' \
|
||||
drone/drone:1
|
||||
"
|
||||
end
|
||||
|
||||
private
|
||||
def gitea_url
|
||||
Gitea.gitea_config[:domain]
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,22 @@
|
||||
class DevOps::Drone::Start
|
||||
attr_reader :drone_username, :drone_password, :drone_host, :drone_server_cmd, :drone_client_cmd
|
||||
|
||||
# drone_username="XXXX" 云服务器登录用户名
|
||||
# drone_password="XXXXX" 云服务器用户密码
|
||||
# drone_host="" 云服务器地址
|
||||
# eq:
|
||||
# drone_server_cmd = DevOps::Drone::Server.new('client_id', 'client_secret', 'drone_url').generate_cmd
|
||||
# drone_client_cmd = DevOps::Drone::Client.new('client_id', 'server_url').generate_cmd
|
||||
# DevOps::Drone::Start.new(drone_username, drone_password, 'drone_host', drone_server_cmd, drone_client_cmd).run
|
||||
def initialize(drone_username, drone_password, drone_host, drone_server_cmd, drone_client_cmd)
|
||||
@drone_username = drone_username
|
||||
@drone_password = drone_password
|
||||
@drone_host = drone_host
|
||||
@drone_server_cmd = drone_server_cmd
|
||||
@drone_client_cmd = drone_client_cmd
|
||||
end
|
||||
|
||||
def run
|
||||
`sshpass -p #{drone_password} ssh -o "StrictHostKeyChecking no" #{drone_username}@#{drone_host} "#{drone_server_cmd} && #{drone_client_cmd}"`
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user