添加gitlab创建项目(版本库)接口

This commit is contained in:
nwb 2014-07-16 15:52:41 +08:00
parent 36ab954cf9
commit 6dcc50e60b
3 changed files with 51 additions and 8 deletions

View File

@ -365,6 +365,8 @@ class UsersController < ApplicationController
def show def show
# 测试代码 # 测试代码
#login_gitlab("admin@local.host","19840410") #login_gitlab("admin@local.host","19840410")
#create_project("testproject1")
#create_project_for_user("testproject1","2")
# 测试结束 # 测试结束
pre_count = 10 #limit pre_count = 10 #limit

View File

@ -1,5 +1,6 @@
# Gitlab5.3 API操作接口 # Gitlab5.3 API操作接口
# Add by nwb # Add by nwb
# 暂时没支持SSH
module GitlabHelper module GitlabHelper
@ -7,7 +8,7 @@ module GitlabHelper
ROOT_PATH="/home/git/repositories/" ROOT_PATH="/home/git/repositories/"
PROJECT_PATH_CUT = 40 PROJECT_PATH_CUT = 40
# gitlab版本库所在服务器 # gitlab版本库所在服务器
#REPO_IP_ADDRESS = Setting.repository_domain #REPO_IP_ADDRESS = "http://" + Setting.repository_domain
REPO_IP_ADDRESS = "http://192.168.137.100" REPO_IP_ADDRESS = "http://192.168.137.100"
GITLAB_API = "/api/v3" GITLAB_API = "/api/v3"
@ -31,7 +32,7 @@ module GitlabHelper
res = Net::HTTP.post_form(uri, data) res = Net::HTTP.post_form(uri, data)
if res.code == '201' if res.code == '201'
temp = ActiveSupport::JSON.decode(res.body) temp = ActiveSupport::JSON.decode(res.body)
gitlab_token= temp['private_token'] GitlabHelper.gitlab_token= temp['private_token']
return true return true
else else
return false return false
@ -43,14 +44,53 @@ module GitlabHelper
# 创建项目 # 创建项目
# add by nwb # add by nwb
def create_project(name) def create_project(project_name)
url = REPO_IP_ADDRESS + GITLAB_API + "/projects"
uri = URI.parse(url)
data = {name:project_name, private_token:GitlabHelper.gitlab_token}
begin
res = Net::HTTP.post_form(uri, data)
if res.code == '201'
temp = ActiveSupport::JSON.decode(res.body)
#新创建项目的版本库地址
respo = temp['http_url_to_repo']
respo['http://localhost'] = REPO_IP_ADDRESS
# 新创建项目的web地址
webaddress = temp['web_url']
webaddress['http://localhost'] = REPO_IP_ADDRESS
return true
else
return false
end
rescue =>err
return false
end
end end
# 为指定用户创建版本库 # 为指定用户创建版本库
# name版本库名称 user:版本库创建后所属的用户 # project_name版本库名称 user_id:Gitlab版本库中的用户编号
def create_project_for_user(name,user) # add by nwb
def create_project_for_user(project_name,user_id)
url = REPO_IP_ADDRESS + GITLAB_API + "/projects/user/" + user_id
uri = URI.parse(url)
data = {user_id:user_id, name:project_name,private_token:GitlabHelper.gitlab_token}
begin
res = Net::HTTP.post_form(uri, data)
if res.code == '201'
temp = ActiveSupport::JSON.decode(res.body)
#新创建项目的版本库地址
respo = temp['http_url_to_repo']
respo['http://localhost'] = REPO_IP_ADDRESS
# 新创建项目的web地址
webaddress = temp['web_url']
webaddress['http://localhost'] = REPO_IP_ADDRESS
return true
else
return false
end
rescue =>err
return false
end
end end
# 创建用户 # 创建用户

View File

@ -11,7 +11,7 @@
# #
# It's strongly recommended to check this file into your version control system. # It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20140715015540) do ActiveRecord::Schema.define(:version => 20140716021558) do
create_table "activities", :force => true do |t| create_table "activities", :force => true do |t|
t.integer "act_id", :null => false t.integer "act_id", :null => false
@ -415,6 +415,7 @@ ActiveRecord::Schema.define(:version => 20140715015540) do
t.datetime "created_at", :null => false t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
t.string "page_type" t.string "page_type"
t.integer "sort_type"
end end
create_table "forums", :force => true do |t| create_table "forums", :force => true do |t|