Commit 8f53094f authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Add API docs and correctly expose release api

Signed-off-by: default avatarDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
parent ba34045f
...@@ -28,6 +28,10 @@ Parameters: ...@@ -28,6 +28,10 @@ Parameters:
"2a4b78934375d7f53875269ffd4f45fd83a84ebe" "2a4b78934375d7f53875269ffd4f45fd83a84ebe"
] ]
}, },
"release": {
"tag": "1.0.0",
"description": "Amazing release. Wow"
},
"name": "v1.0.0", "name": "v1.0.0",
"message": null "message": null
} }
...@@ -48,6 +52,7 @@ Parameters: ...@@ -48,6 +52,7 @@ Parameters:
- `tag_name` (required) - The name of a tag - `tag_name` (required) - The name of a tag
- `ref` (required) - Create tag using commit SHA, another tag name, or branch name. - `ref` (required) - Create tag using commit SHA, another tag name, or branch name.
- `message` (optional) - Creates annotated tag. - `message` (optional) - Creates annotated tag.
- `release_description` (optional) - Add release notes to the git tag and store it in the GitLab database.
```json ```json
{ {
...@@ -64,6 +69,10 @@ Parameters: ...@@ -64,6 +69,10 @@ Parameters:
"2a4b78934375d7f53875269ffd4f45fd83a84ebe" "2a4b78934375d7f53875269ffd4f45fd83a84ebe"
] ]
}, },
"release": {
"tag": "1.0.0",
"description": "Amazing release. Wow"
},
"name": "v1.0.0", "name": "v1.0.0",
"message": null "message": null
} }
...@@ -73,3 +82,25 @@ it will contain the annotation. ...@@ -73,3 +82,25 @@ it will contain the annotation.
It returns 200 if the operation succeed. In case of an error, It returns 200 if the operation succeed. In case of an error,
405 with an explaining error message is returned. 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"
}
```
...@@ -95,31 +95,6 @@ module API ...@@ -95,31 +95,6 @@ module API
end end
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 class RepoObject < Grape::Entity
expose :name expose :name
...@@ -351,5 +326,30 @@ module API ...@@ -351,5 +326,30 @@ module API
class Release < Grape::Entity class Release < Grape::Entity
expose :tag, :description expose :tag, :description
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, using: Entities::Release do |repo_obj, options|
if options[:project]
options[:project].releases.find_by(tag: repo_obj.name)
end
end
end
end end
end end
...@@ -29,7 +29,7 @@ module API ...@@ -29,7 +29,7 @@ module API
authorize_push_project authorize_push_project
message = params[:message] || nil message = params[:message] || nil
result = CreateTagService.new(user_project, current_user). 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 if result[:status] == :success
present result[:tag], present result[:tag],
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment