Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-11-12 18:26:39 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-11-12 18:26:39 +0300
commitc119a737935f1e1e8ae7dec814be8accb8980e1d (patch)
tree739f4f05f791518f7c723cd1c68400ceba56ae9d
parentd343d9d8c2f3db0ca5f6fab8ad19e0f79f66e138 (diff)
Add releases api
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
-rw-r--r--lib/api/entities.rb4
-rw-r--r--lib/api/tags.rb19
-rw-r--r--spec/requests/api/tags_spec.rb15
3 files changed, 36 insertions, 2 deletions
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 20cadae2291..400900bc407 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -341,5 +341,9 @@ module API
expose :user_oauth_applications
expose :after_sign_out_path
end
+
+ class Release < Grape::Entity
+ expose :tag, :description
+ end
end
end
diff --git a/lib/api/tags.rb b/lib/api/tags.rb
index da962bd402a..06fa1d23fd6 100644
--- a/lib/api/tags.rb
+++ b/lib/api/tags.rb
@@ -1,5 +1,5 @@
module API
- # Releases API
+ # Git Tags API
class Tags < Grape::API
before { authenticate! }
before { authorize! :download_code, user_project }
@@ -39,6 +39,23 @@ module API
render_api_error!(result[:message], 400)
end
end
+
+ # Add release notes to tag
+ #
+ # Parameters:
+ # id (required) - The ID of a project
+ # tag (required) - The name of the tag
+ # description (required) - Release notes with markdown support
+ # Example Request:
+ # PUT /projects/:id/repository/tags
+ put ':id/repository/:tag/release', requirements: { tag: /.*/ } do
+ authorize_push_project
+ required_attributes! [:description]
+ release = user_project.releases.find_or_initialize_by(tag: params[:tag])
+ release.update_attributes(description: params[:description])
+
+ present release, with: Entities::Release
+ end
end
end
end
diff --git a/spec/requests/api/tags_spec.rb b/spec/requests/api/tags_spec.rb
index 6ddd7030cea..72df9007ee8 100644
--- a/spec/requests/api/tags_spec.rb
+++ b/spec/requests/api/tags_spec.rb
@@ -11,7 +11,6 @@ describe API::API, api: true do
let!(:master) { create(:project_member, user: user, project: project, access_level: ProjectMember::MASTER) }
let!(:guest) { create(:project_member, user: user2, project: project, access_level: ProjectMember::GUEST) }
-
describe "GET /projects/:id/repository/tags" do
it "should return an array of project tags" do
get api("/projects/#{project.id}/repository/tags", user)
@@ -86,4 +85,18 @@ describe API::API, api: true do
expect(json_response['message']).to eq('Invalid reference name')
end
end
+
+ describe 'PUT /projects/:id/repository/:tag/release' do
+ let(:tag_name) { project.repository.tag_names.first }
+ let(:description) { 'Awesome release!' }
+
+ it 'should create description for existing git tag' do
+ put api("/projects/#{project.id}/repository/#{tag_name}/release", user),
+ description: description
+
+ expect(response.status).to eq(200)
+ expect(json_response['tag']).to eq(tag_name)
+ expect(json_response['description']).to eq(description)
+ end
+ end
end