构建流水线yaml, 返回json

This commit is contained in:
xxq250 2024-05-23 16:25:20 +08:00
parent 790a7eeb8c
commit 8c077ef9a8
1 changed files with 15 additions and 14 deletions

View File

@ -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
tip_exception("已经存在#{params[:pipeline_name]}流水线!") if size > 0
@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.json = params[:pipeline_json].to_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
@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.json = params[:pipeline_json].to_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)
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?
render_ok
render_ok({ pipeline_yaml: pipeline_yaml })
end
def build_yaml
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
@pipeline_yaml = build_test_yaml
pipeline_yaml = build_test_yaml
end
render plain: @pipeline_yaml
# render plain: pipeline_yaml
render_ok({ pipeline_yaml: pipeline_yaml })
end
def update
@pipeline = Action::Pipeline.find(params[:id])
@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.json = params[:pipeline_json].to_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)
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
@pipeline_yaml = params[:pipeline_yaml]
pipeline_yaml = params[:pipeline_yaml]
end
@pipeline_yaml
pipeline_yaml
end
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 "@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)
@pipeline_yaml = yaml.gsub(/^\s*\n/, "")
pipeline_yaml = yaml.gsub(/^\s*\n/, "")
Rails.logger.info "========================="
Rails.logger.info @pipeline_yaml
@pipeline_yaml
Rails.logger.info pipeline_yaml
pipeline_yaml
end
private
@ -149,7 +150,7 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
def content_params(opt)
{
filepath: ".gitea/workflows/#{@pipeline.pipeline_name}.yaml",
filepath: ".gitea/workflows/#{@pipeline.pipeline_name}.yml",
branch: @pipeline.branch,
new_branch: @pipeline.branch,
content: Base64.encode64(@pipeline.yaml),