gitlink-forgeplus/app/libs/dev_ops/drone/api.rb

55 lines
1.8 KiB
Ruby

class DevOps::Drone::API < DevOps::Drone::Request
attr_reader :drone_token, :drone_url, :owner, :repo, :options
# drone_token:
# owner: repo's owner name or login
# repo: repo's identifier
def initialize(drone_token, drone_url, owner, repo, options={})
@drone_token = drone_token
@drone_url = drone_url
@owner = owner
@repo = repo
@options = options
end
# Build List
# GET api/repos/{owner}/{name}/builds
# eq:
# DevOps::Drone::API
def builds
request(:get, drone_url, "api/repos/#{owner}/#{repo}/builds", drone_token: drone_token)
end
# Build Info
# GET api/repos/{owner}/{name}/builds/{number}
def build
request(:get, "api/repos/#{owner}/#{repo}/builds/#{number}", drone_token: drone_token)
end
# Update .trustie-pipeline.yml file
# PATCH api/repos/{owner}/{name}
def config_yml
request(:patch, "/api/repos/#{owner}/#{repo}", drone_token: drone_token, config_path: config_path)
end
# Activate user's project with Drone CI
# POST api/repos/{owner}/{name}
def activate
request(:post, "/api/repos/#{owner}/#{repo}", drone_token: drone_token)
end
# Build Restart
# POST api/repos/{owner}/{name}/builds/{number}
# Restart the specified build. Please note this api requires read and write access to the repository and the request parameter {build} is not the build id but the build number.
def restart
request(:post, "/api/repos/#{owner}/#{repo}/builds/#{number}", drone_token: drone_token)
end
# Build Stop
# DELETE api/repos/{owner}/{name}/builds/{number}
# Stop the specified build. Please note this api requires administrative privileges and the request parameter {build} is not the build id but the build number.
def stop
request(:delete, "/api/repos/#{owner}/#{repo}/builds/#{number}", drone_token: drone_token)
end
end