|
- 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
-
- # TODO 一下代码方便测试,正式环境请移除
- # docker rm -f `docker ps -qa`
- def generate_cmd
- "service docker start; docker rm -f `docker ps -qa`; docker run \
- -v /var/run/docker.sock:/var/run/docker.sock \
- -v /var/lib/drone:/data \
- -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
|