构建流水线yaml, 返回json
This commit is contained in:
parent
790a7eeb8c
commit
8c077ef9a8
|
@ -10,7 +10,7 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
|
||||||
size = Action::Pipeline.where(pipeline_name: params[:pipeline_name], project_id: @project.id).size
|
size = Action::Pipeline.where(pipeline_name: params[:pipeline_name], project_id: @project.id).size
|
||||||
tip_exception("已经存在#{params[:pipeline_name]}流水线!") if size > 0
|
tip_exception("已经存在#{params[:pipeline_name]}流水线!") if size > 0
|
||||||
@pipeline = Action::Pipeline.new(pipeline_name: params[:pipeline_name], project_id: @project.id)
|
@pipeline = Action::Pipeline.new(pipeline_name: params[:pipeline_name], project_id: @project.id)
|
||||||
@pipeline.file_name = ".gitea/workflows/#{@pipeline.pipeline_name}.yaml"
|
@pipeline.file_name = ".gitea/workflows/#{@pipeline.pipeline_name}.yml"
|
||||||
@pipeline.branch = params[:branch] || @project.default_branch
|
@pipeline.branch = params[:branch] || @project.default_branch
|
||||||
@pipeline.json = params[:pipeline_json].to_json
|
@pipeline.json = params[:pipeline_json].to_json
|
||||||
pipeline_yaml = build_pipeline_yaml(params[:pipeline_name], params[:pipeline_json])
|
pipeline_yaml = build_pipeline_yaml(params[:pipeline_name], params[:pipeline_json])
|
||||||
|
@ -26,7 +26,7 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
|
||||||
|
|
||||||
def save_yaml
|
def save_yaml
|
||||||
@pipeline = Action::Pipeline.new(pipeline_name: params[:pipeline_name], project_id: @project.id)
|
@pipeline = Action::Pipeline.new(pipeline_name: params[:pipeline_name], project_id: @project.id)
|
||||||
@pipeline.file_name = ".gitea/workflows/#{@pipeline.pipeline_name}.yaml"
|
@pipeline.file_name = ".gitea/workflows/#{@pipeline.pipeline_name}.yml"
|
||||||
@pipeline.branch = params[:branch] || @project.default_branch
|
@pipeline.branch = params[:branch] || @project.default_branch
|
||||||
@pipeline.json = params[:pipeline_json].to_json
|
@pipeline.json = params[:pipeline_json].to_json
|
||||||
pipeline_yaml = build_pipeline_yaml(params[:pipeline_name], params[:pipeline_json])
|
pipeline_yaml = build_pipeline_yaml(params[:pipeline_name], params[:pipeline_json])
|
||||||
|
@ -35,22 +35,23 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
|
||||||
sha = get_pipeline_file_sha(@pipeline.file_name, @pipeline.branch)
|
sha = get_pipeline_file_sha(@pipeline.file_name, @pipeline.branch)
|
||||||
interactor = sha.present? ? Gitea::UpdateFileInteractor.call(current_user.gitea_token, @owner.login, content_params("update").merge(sha: sha)) : Gitea::CreateFileInteractor.call(current_user.gitea_token, @owner.login, content_params("create"))
|
interactor = sha.present? ? Gitea::UpdateFileInteractor.call(current_user.gitea_token, @owner.login, content_params("update").merge(sha: sha)) : Gitea::CreateFileInteractor.call(current_user.gitea_token, @owner.login, content_params("create"))
|
||||||
tip_exception(interactor.error) unless interactor.success?
|
tip_exception(interactor.error) unless interactor.success?
|
||||||
render_ok
|
render_ok({ pipeline_yaml: pipeline_yaml })
|
||||||
end
|
end
|
||||||
|
|
||||||
def build_yaml
|
def build_yaml
|
||||||
if params[:pipeline_json].present?
|
if params[:pipeline_json].present?
|
||||||
@pipeline_yaml = build_pipeline_yaml(params[:pipeline_name], params[:pipeline_json])
|
pipeline_yaml = build_pipeline_yaml(params[:pipeline_name], params[:pipeline_json])
|
||||||
else
|
else
|
||||||
@pipeline_yaml = build_test_yaml
|
pipeline_yaml = build_test_yaml
|
||||||
end
|
end
|
||||||
render plain: @pipeline_yaml
|
# render plain: pipeline_yaml
|
||||||
|
render_ok({ pipeline_yaml: pipeline_yaml })
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@pipeline = Action::Pipeline.find(params[:id])
|
@pipeline = Action::Pipeline.find(params[:id])
|
||||||
@pipeline.pipeline_name = params[:pipeline_name]
|
@pipeline.pipeline_name = params[:pipeline_name]
|
||||||
@pipeline.file_name = ".gitea/workflows/#{@pipeline.pipeline_name}.yaml"
|
@pipeline.file_name = ".gitea/workflows/#{@pipeline.pipeline_name}.yml"
|
||||||
@pipeline.branch = params[:branch] || @project.default_branch
|
@pipeline.branch = params[:branch] || @project.default_branch
|
||||||
@pipeline.json = params[:pipeline_json].to_json
|
@pipeline.json = params[:pipeline_json].to_json
|
||||||
pipeline_yaml = build_pipeline_yaml(params[:pipeline_name], params[:pipeline_json])
|
pipeline_yaml = build_pipeline_yaml(params[:pipeline_name], params[:pipeline_json])
|
||||||
|
@ -87,11 +88,11 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
|
||||||
@steps_nodes = build_nodes(params_nodes)
|
@steps_nodes = build_nodes(params_nodes)
|
||||||
yaml = ERB.new(File.read(File.join(Rails.root, "app/views/api/v1/projects/pipelines", "build_pipeline.yaml.erb"))).result(binding)
|
yaml = ERB.new(File.read(File.join(Rails.root, "app/views/api/v1/projects/pipelines", "build_pipeline.yaml.erb"))).result(binding)
|
||||||
# 删除空行内容
|
# 删除空行内容
|
||||||
@pipeline_yaml = yaml.gsub(/^\s*\n/, "")
|
pipeline_yaml = yaml.gsub(/^\s*\n/, "")
|
||||||
else
|
else
|
||||||
@pipeline_yaml = params[:pipeline_yaml]
|
pipeline_yaml = params[:pipeline_yaml]
|
||||||
end
|
end
|
||||||
@pipeline_yaml
|
pipeline_yaml
|
||||||
end
|
end
|
||||||
|
|
||||||
def build_test_yaml
|
def build_test_yaml
|
||||||
|
@ -128,10 +129,10 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
|
||||||
Rails.logger.info "@@on_nodes===#{@on_nodes.to_json}"
|
Rails.logger.info "@@on_nodes===#{@on_nodes.to_json}"
|
||||||
Rails.logger.info "@steps_nodes===#{@steps_nodes.to_json}"
|
Rails.logger.info "@steps_nodes===#{@steps_nodes.to_json}"
|
||||||
yaml = ERB.new(File.read(File.join(Rails.root, "app/views/api/v1/projects/pipelines", "build_pipeline.yaml.erb"))).result(binding)
|
yaml = ERB.new(File.read(File.join(Rails.root, "app/views/api/v1/projects/pipelines", "build_pipeline.yaml.erb"))).result(binding)
|
||||||
@pipeline_yaml = yaml.gsub(/^\s*\n/, "")
|
pipeline_yaml = yaml.gsub(/^\s*\n/, "")
|
||||||
Rails.logger.info "========================="
|
Rails.logger.info "========================="
|
||||||
Rails.logger.info @pipeline_yaml
|
Rails.logger.info pipeline_yaml
|
||||||
@pipeline_yaml
|
pipeline_yaml
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -149,7 +150,7 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
|
||||||
|
|
||||||
def content_params(opt)
|
def content_params(opt)
|
||||||
{
|
{
|
||||||
filepath: ".gitea/workflows/#{@pipeline.pipeline_name}.yaml",
|
filepath: ".gitea/workflows/#{@pipeline.pipeline_name}.yml",
|
||||||
branch: @pipeline.branch,
|
branch: @pipeline.branch,
|
||||||
new_branch: @pipeline.branch,
|
new_branch: @pipeline.branch,
|
||||||
content: Base64.encode64(@pipeline.yaml),
|
content: Base64.encode64(@pipeline.yaml),
|
||||||
|
|
Loading…
Reference in New Issue