Add API docs and correctly expose release api

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
Dmitriy Zaporozhets 2015-11-12 23:52:02 +01:00
parent ba34045f31
commit 8f53094f0f
No known key found for this signature in database
GPG Key ID: 627C5F589F467F17
3 changed files with 57 additions and 26 deletions

View File

@ -28,6 +28,10 @@ Parameters:
"2a4b78934375d7f53875269ffd4f45fd83a84ebe"
]
},
"release": {
"tag": "1.0.0",
"description": "Amazing release. Wow"
},
"name": "v1.0.0",
"message": null
}
@ -48,6 +52,7 @@ Parameters:
- `tag_name` (required) - The name of a tag
- `ref` (required) - Create tag using commit SHA, another tag name, or branch name.
- `message` (optional) - Creates annotated tag.
- `release_description` (optional) - Add release notes to the git tag and store it in the GitLab database.
```json
{
@ -64,6 +69,10 @@ Parameters:
"2a4b78934375d7f53875269ffd4f45fd83a84ebe"
]
},
"release": {
"tag": "1.0.0",
"description": "Amazing release. Wow"
},
"name": "v1.0.0",
"message": null
}
@ -73,3 +82,25 @@ it will contain the annotation.
It returns 200 if the operation succeed. In case of an error,
405 with an explaining error message is returned.
## New release
Add release notes to the existing git tag
```
PUT /projects/:id/repository/:tag/release
```
Parameters:
- `id` (required) - The ID of a project
- `tag` (required) - The name of a tag
- `description` (required) - Release notes with markdown support
```json
{
"tag": "1.0.0",
"description": "Amazing release. Wow"
}
```

View File

@ -95,31 +95,6 @@ module API
end
end
class RepoTag < Grape::Entity
expose :name
expose :message do |repo_obj, _options|
if repo_obj.respond_to?(:message)
repo_obj.message
else
nil
end
end
expose :commit do |repo_obj, options|
if repo_obj.respond_to?(:commit)
repo_obj.commit
elsif options[:project]
options[:project].repository.commit(repo_obj.target)
end
end
expose :release do |repo_obj, options|
if options[:project]
options[:project].releases.find_by(tag: repo_obj.name)
end
end
end
class RepoObject < Grape::Entity
expose :name
@ -351,5 +326,30 @@ module API
class Release < Grape::Entity
expose :tag, :description
end
class RepoTag < Grape::Entity
expose :name
expose :message do |repo_obj, _options|
if repo_obj.respond_to?(:message)
repo_obj.message
else
nil
end
end
expose :commit do |repo_obj, options|
if repo_obj.respond_to?(:commit)
repo_obj.commit
elsif options[:project]
options[:project].repository.commit(repo_obj.target)
end
end
expose :release, using: Entities::Release do |repo_obj, options|
if options[:project]
options[:project].releases.find_by(tag: repo_obj.name)
end
end
end
end
end

View File

@ -29,7 +29,7 @@ module API
authorize_push_project
message = params[:message] || nil
result = CreateTagService.new(user_project, current_user).
execute(params[:tag_name], params[:ref], message)
execute(params[:tag_name], params[:ref], message, params[:release_description])
if result[:status] == :success
present result[:tag],