fixed 图形化流水线构建细节调整

This commit is contained in:
xxq250 2024-05-17 15:26:58 +08:00
parent ddaa6f7aec
commit 785869d48a
4 changed files with 73 additions and 11 deletions

View File

@ -22,6 +22,23 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
render_ok({ id: @pipeline.id })
end
def build_yaml
# pipeline = params[:pipeline]
# @name = params[:name]
# params_nodes = JSON.parse(pipeline)["nodes"].select { |node| !["on-push", "on-schedule"].include?(node["component_name"]) }
# on_nodes = JSON.parse(pipeline)["nodes"].select { |node| ["on-push", "on-schedule"].include?(node["component_name"]) }
# @on_nodes = build_nodes(on_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)
# # 删除空行内容
# @pipeline_yaml = yaml.gsub(/^\s*\n/, "")
@pipeline_yaml = build_test_yaml
render plain: @pipeline_yaml
# respond_to do |format|
# format.text { render yaml: @pipeline_yaml }
# end
end
def update
@pipeline = Action::Pipeline.find(params[:id])
@pipeline.update!(pipeline_name: params[:pipeline_name])
@ -42,7 +59,7 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
def show
@pipeline = Action::Pipeline.find_by(id: params[:id])
@pipeline = Action::Pipeline.new(id: 0, pipeline_name: "test-ss", yaml: build_yaml) if @pipeline.blank?
@pipeline = Action::Pipeline.new(id: 0, pipeline_name: "test-ss", yaml: build_test_yaml) if @pipeline.blank?
end
def build_pipeline_yaml(pipeline)
@ -61,7 +78,7 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
@pipeline_yaml
end
def build_yaml
def build_test_yaml
@name = "love me"
params_nodes = JSON.parse(demo.to_json)["nodes"].select { |node| !["on-push", "on-schedule"].include?(node["component_name"]) }
on_nodes = JSON.parse(demo.to_json)["nodes"].select { |node| ["on-push", "on-schedule"].include?(node["component_name"]) }
@ -71,16 +88,23 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
# Rails.logger.info "input_node=====0===#{input_node["component_name"]}======#{input_node["in_parameters"]}"
node = Action::Node.find_by(name: input_node["component_name"])
node.cust_name = input_node["component_label"] if input_node["component_label"].present?
run_values = {}
input_values = {}
if input_node["in_parameters"].present?
# Rails.logger.info "@in_parameters=====11===#{input_node["component_name"]}======#{input_node["in_parameters"]}"
input_node["in_parameters"].each_key do |input_key|
# Rails.logger.info "@in_parameters.input_key===#{input_key}"
# Rails.logger.info "@in_parameters.input_value===#{input_node["in_parameters"][input_key]["value"]}"
input_values = input_values.merge({ "#{input_key.gsub("--", "")}": "#{input_node["in_parameters"][input_key]["value"]}" })
if input_key.to_s.gsub("--", "") == "run"
run_values = run_values.merge({ "#{input_key.gsub("--", "")}": "#{input_node["in_parameters"][input_key]["value"]}" })
else
input_values = input_values.merge({ "#{input_key.gsub("--", "")}": "#{input_node["in_parameters"][input_key]["value"]}" })
end
end
node.run_values = run_values
node.input_values = input_values
# Rails.logger.info "@input_values node===#{node.input_values.to_json}"
# Rails.logger.info "@input_values run_values===#{node.run_values.to_json}"
# Rails.logger.info "@input_values input_values===#{node.input_values.to_json}"
end
@steps_nodes.push(node)
end
@ -124,14 +148,20 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
params_nodes.each do |input_node|
node = Action::Node.find_by(name: input_node["component_name"])
node.cust_name = input_node["component_label"] if input_node["component_label"].present?
run_values = {}
input_values = {}
if input_node["in_parameters"].present?
# Rails.logger.info "@in_parameters=====11===#{input_node["component_name"]}======#{input_node["in_parameters"]}"
input_node["in_parameters"].each_key do |input_key|
# Rails.logger.info "@in_parameters.input_key===#{input_key}"
# Rails.logger.info "@in_parameters.input_value===#{input_node["in_parameters"][input_key]["value"]}"
input_values = input_values.merge({ "#{input_key.gsub("--", "")}": "#{input_node["in_parameters"][input_key]["value"]}" })
if input_key.to_s.gsub("--", "") == "run"
run_values = run_values.merge({ "#{input_key.gsub("--", "")}": "#{input_node["in_parameters"][input_key]["value"]}" })
else
input_values = input_values.merge({ "#{input_key.gsub("--", "")}": "#{input_node["in_parameters"][input_key]["value"]}" })
end
end
node.run_values = run_values
# Rails.logger.info "@input_values node1===#{input_values}"
node.input_values = input_values
# Rails.logger.info "@input_values node===#{node.input_values.to_json}"
@ -365,8 +395,8 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
{
"id": "git-clone-245734ab",
"category_id": 1,
"component_name": "scp",
"component_label": "scp",
"component_name": "shell",
"component_label": "执行shell命令",
"working_directory": "",
"command": "",
"in_parameters": {
@ -381,7 +411,30 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
"describe": "代码仓库地址",
"editable": 1,
"condition": "",
"value": "service nginx restart"
"value": "echo env"
}
}
},
{
"id": "git-clone-245734ab",
"category_id": 1,
"component_name": "scp",
"component_label": "scp",
"working_directory": "",
"command": "",
"in_parameters": {
"--host": {
"type": "str",
"item_type": "",
"label": "代码仓库地址",
"require": 1,
"choice": [],
"default": "",
"placeholder": "私有仓库填写ssh地址公有仓库填写https git地址",
"describe": "代码仓库地址",
"editable": 1,
"condition": "",
"value": "192.168.1.114"
}
}
}

View File

@ -34,7 +34,7 @@ class Action::Node < ApplicationRecord
belongs_to :user, optional: true
attr_accessor :cust_name, :input_values
attr_accessor :cust_name, :run_values, :input_values
def content_yaml

View File

@ -45,11 +45,18 @@ jobs:
steps:
<%@steps_nodes.each do |node| %>
- name: <%=node.cust_name || node.name %>
<% if node.name !="shell" %>
uses: <%=node.full_name %>
<% end %>
<%if node.input_values.present? %>
with:
<% node.input_values.each_key do |key| %>
<%=key %>: <%=node.input_values[key] %>
<%=key %>: '<%=node.input_values[key] %>'
<%end %>
<%end %>
<%if node.run_values.present? %>
<% node.run_values.each_key do |key| %>
<%=key %>: '<%=node.run_values[key] %>'
<%end %>
<%end %>
<% end %>

View File

@ -129,7 +129,9 @@ defaults format: :json do
end
end
end
resources :pipelines
resources :pipelines do
get :build_yaml, on: :collection
end
resources :pulls, module: 'pulls' do
resources :versions, only: [:index] do
member do