From fd0398e3ca408aca1987a980e427676c12baefda Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Mon, 6 Jan 2020 19:52:31 +0800 Subject: [PATCH] version release --- .../version_releases_controller.rb | 125 ++++++++++-------- app/views/version_releases/new.json.jbuilder | 2 + config/routes.rb | 2 +- 3 files changed, 76 insertions(+), 53 deletions(-) create mode 100644 app/views/version_releases/new.json.jbuilder diff --git a/app/controllers/version_releases_controller.rb b/app/controllers/version_releases_controller.rb index 41a1a062c..52f5f10a2 100644 --- a/app/controllers/version_releases_controller.rb +++ b/app/controllers/version_releases_controller.rb @@ -13,6 +13,18 @@ class VersionReleasesController < ApplicationController @version_releases = version_releases.order("created_at desc").page(page).limit(@limit) end + def new + #获取所有的分支 + @all_branches = [] + get_all_branches = Gitea::Repository::BranchesService.new(@user, @repository.try(:identifier)).call + if get_all_branches && get_all_branches.size > 0 + get_all_branches.each do |b| + @all_branches.push(b["name"]) + end + end + + end + def create if params[:name].nil? normal_status(-1, "名称不能为空") @@ -20,31 +32,38 @@ class VersionReleasesController < ApplicationController normal_status(-1, "标签名称不能为空") else ActiveRecord::Base.transaction do - version_params = { - body: params[:body], - draft: params[:draft] || false, - name: params[:name], - prerelease: params[:prerelease], - tag_name: params[:tag_name], - target_commitish: params[:target_commitish] || "master" #分支 - } - version_release = VersionRelease.new(version_params.merge(user_id: current_user.id, repository_id: @repository.id)) - if version_release.save! - git_version_release = Gitea::Versions::CreateService.new(@user.gitea_token, @repository.try(:login), @repository.try(:identifier), version_params).call + begin + version_params = { + body: params[:body], + draft: params[:draft] || false, + name: params[:name], + prerelease: params[:prerelease], + tag_name: params[:tag_name], + target_commitish: params[:target_commitish] || "master" #分支 + } + version_release = VersionRelease.new(version_params.merge(user_id: current_user.id, repository_id: @repository.id)) + if version_release.save! + git_version_release = Gitea::Versions::CreateService.new(@user.gitea_token, @repository.try(:login), @repository.try(:identifier), version_params).call - if git_version_release - update_params = { - tarball_url: git_version_release["tarball_url"], - zipball_url: git_version_release["zipball_url"], - url: git_version_release["url"], - version_gid: git_version_release["id"], - } - version_release.update_attributes!(update_params) + if git_version_release + update_params = { + tarball_url: git_version_release["tarball_url"], + zipball_url: git_version_release["zipball_url"], + url: git_version_release["url"], + version_gid: git_version_release["id"], + } + version_release.update_attributes!(update_params) + normal_status(0, "发布成功") + else + normal_status(-1, "发布失败") + end + else + normal_status(-1, "发布失败") end + rescue => e + puts "create version release error: #{e.message}" + raise Error, e.message end - rescue => e - puts "create version release error: #{e.message}" - raise Error, e.message end end end @@ -60,52 +79,54 @@ class VersionReleasesController < ApplicationController normal_status(-1, "标签名称不能为空") else ActiveRecord::Base.transaction do - version_params = { - body: params[:body], - draft: params[:draft] || false, - name: params[:name], - prerelease: params[:prerelease], - tag_name: params[:tag_name], - target_commitish: params[:target_commitish] || "master" #分支 - } - if @version.update_attributes!(version_params) - git_version_release = Gitea::Versions::UpdateService.new(@user.gitea_token, @repository.try(:login), @repository.try(:identifier), version_params, @version.try(:version_gid)).call - unless git_version_release - raise Error, "更新失败" + begin + version_params = { + body: params[:body], + draft: params[:draft] || false, + name: params[:name], + prerelease: params[:prerelease], + tag_name: params[:tag_name], + target_commitish: params[:target_commitish] || "master" #分支 + } + if @version.update_attributes!(version_params) + git_version_release = Gitea::Versions::UpdateService.new(@user.gitea_token, @repository.try(:login), @repository.try(:identifier), version_params, @version.try(:version_gid)).call + unless git_version_release + raise Error, "更新失败" + end + normal_status(0, "更新成功") + else + normal_status(-1, "更新失败") end + rescue => e + puts "update version release error: #{e.message}" + raise Error, e.message end - rescue => e - puts "update version release error: #{e.message}" - raise Error, e.message end end end def destroy ActiveRecord::Base.transaction do - if @version.destroy - git_version_release = Gitea::Versions::UpdateService.new(@user.gitea_token, @repository.try(:login), @repository.try(:identifier), version_params, @version.try(:version_gid)).call - unless git_version_release - raise Error, "删除失败" + begin + if @version.destroy + git_version_release = Gitea::Versions::UpdateService.new(@user.gitea_token, @repository.try(:login), @repository.try(:identifier), version_params, @version.try(:version_gid)).call + unless git_version_release + raise Error, "删除失败" + end + normal_status(0, "删除成功") + else + normal_status(-1, "删除失败") end + rescue => e + puts "destroy version release error: #{e.message}" + raise Error, e.message end - rescue => e - puts "destroy version release error: #{e.message}" - raise Error, e.message end end private - # def set_project - # @project = Project.find_by_id(params[:project_id]) - # @repository = @project.repository #项目的仓库 - # unless @project.present? && @repository.present? - # normal_status(-1, "仓库不存在") - # end - # end - def set_user_and_project @project = Project.find_by_id(params[:project_id]) @repository = @project.repository #项目的仓库 diff --git a/app/views/version_releases/new.json.jbuilder b/app/views/version_releases/new.json.jbuilder new file mode 100644 index 000000000..f5c5fe67f --- /dev/null +++ b/app/views/version_releases/new.json.jbuilder @@ -0,0 +1,2 @@ +json.partial! "commons/success" +json.branches @all_branches \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index d2ef92e8b..fbaae68ac 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -46,7 +46,7 @@ Rails.application.routes.draw do resources :licenses, only: [:index, :show] resources :projects, only: [:index, :create, :show] do - resources :version_releases, only: [:index, :create, :edit, :update, :destroy] + resources :version_releases, only: [:index,:new, :create, :edit, :update, :destroy] resources :project_trends, only: [:index, :create] resources :issues do collection do