Class: Pindo::TaskSystem::JPSBindPackageTask

Inherits:
JPSTask show all
Defined in:
lib/pindo/module/task/model/jps/jps_bind_package_task.rb

Overview

JPS 绑定包任务将 Git commit 绑定到已上传的项目包(支持批量绑定)

支持两种模式:

  1. 指定模式:传入 git_commit_id 和 app_version_list

  2. 依赖模式:从依赖任务(GitCommitTask、JPSUploadTask)获取信息

Instance Attribute Summary collapse

Attributes inherited from JPSTask

#app_info_obj, #project_name, #workflow_info

Attributes inherited from PindoTask

#callbacks_setup, #context, #created_at, #dependencies, #error, #finished_at, #id, #max_retry_count, #metadata, #name, #priority, #result, #retry_count, #retry_delay, #retry_mode, #skip_count, #started_at, #status, #task_key, #task_manager, #type

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from JPSTask

task_type, task_type_name

Methods inherited from PindoTask

#before_retry, #cancel, #cancelled?, #check_cancelled!, #data_param, #do_task, #execution_time, #finished?, #get_all_data_params, #get_all_data_params_by_key, #get_all_dependencies_results, #get_data_param, #get_data_param_by_key, #get_dependency_result, #get_dependency_task, #on, #primary_data_param, #release_resource, #release_resources, #required_resources, #reset_for_retry, #retryable?, #running?, #should_retry?, task_type, #with_resource, #with_resources

Constructor Details

#initialize(app_version_list = nil, options = {}) ⇒ JPSBindPackageTask

初始化绑定包任务

Parameters:

  • app_version_list (Array<Hash>, nil) (defaults to: nil)

    应用版本信息列表(可选,如为 nil 则从依赖任务获取)

  • options (Hash) (defaults to: {})

    选项

Options Hash (options):

  • :git_commit_id (String)

    Git commit SHA(可选,为空时从依赖任务获取)

  • :git_commit_time (String)

    Git commit 时间(可选)

  • :git_commit_desc (String)

    Git commit 描述(可选)

  • :project_dir (String)

    项目目录(可选,用于自动获取 commit 信息)

  • :app_info_obj (Hash)

    JPS 应用信息对象(可选,继承自基类)

  • :workflow_info (Hash)

    工作流信息(可选,继承自基类)

  • :project_name (String)

    项目名称(可选,继承自基类)



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/pindo/module/task/model/jps/jps_bind_package_task.rb', line 33

def initialize(app_version_list = nil, options = {})
  # 兼容性处理:如果传入的是单个 Hash,转为数组
  if app_version_list.is_a?(Hash)
    @app_version_list = [app_version_list]
  elsif app_version_list.is_a?(Array)
    @app_version_list = app_version_list
  else
    @app_version_list = nil
  end

  @git_commit_id = options[:git_commit_id]
  @git_commit_time = options[:git_commit_time]
  @git_commit_desc = options[:git_commit_desc]
  @project_dir = options[:project_dir]

  # 设置任务优先级为 LOW,确保在上传任务之后执行
  options[:priority] ||= TaskPriority::LOW

  super("绑定 包到Git工作流", options)
end

Instance Attribute Details

#app_version_listObject (readonly)

Returns the value of attribute app_version_list.



16
17
18
# File 'lib/pindo/module/task/model/jps/jps_bind_package_task.rb', line 16

def app_version_list
  @app_version_list
end

#git_commit_descObject (readonly)

Returns the value of attribute git_commit_desc.



15
16
17
# File 'lib/pindo/module/task/model/jps/jps_bind_package_task.rb', line 15

def git_commit_desc
  @git_commit_desc
end

#git_commit_idObject (readonly)

Returns the value of attribute git_commit_id.



15
16
17
# File 'lib/pindo/module/task/model/jps/jps_bind_package_task.rb', line 15

def git_commit_id
  @git_commit_id
end

#git_commit_timeObject (readonly)

Returns the value of attribute git_commit_time.



15
16
17
# File 'lib/pindo/module/task/model/jps/jps_bind_package_task.rb', line 15

def git_commit_time
  @git_commit_time
end

Class Method Details

.default_retry_countObject



64
65
66
# File 'lib/pindo/module/task/model/jps/jps_bind_package_task.rb', line 64

def self.default_retry_count
  2  # 绑定任务重试 2 次
end

.default_retry_delayObject



68
69
70
# File 'lib/pindo/module/task/model/jps/jps_bind_package_task.rb', line 68

def self.default_retry_delay
  3  # 延迟 3 秒
end

.default_retry_modeObject

绑定任务重试配置



60
61
62
# File 'lib/pindo/module/task/model/jps/jps_bind_package_task.rb', line 60

def self.default_retry_mode
  RetryMode::DELAYED
end

.task_keyObject

任务键



19
20
21
# File 'lib/pindo/module/task/model/jps/jps_bind_package_task.rb', line 19

def self.task_key
  :jps_bind_package
end

Instance Method Details

#validateObject



54
55
56
57
# File 'lib/pindo/module/task/model/jps/jps_bind_package_task.rb', line 54

def validate
  # app_version_list 和 git_commit_id 可以延迟获取,不在这里验证
  true
end