浏览代码

完成基本的workflow添加

yjp 1 年之前
父节点
当前提交
ef353301b2
共有 2 个文件被更改,包括 127 次插入0 次删除
  1. 78 0
      client/workflow.go
  2. 49 0
      test/approve_workflow.yaml

+ 78 - 0
client/workflow.go

@@ -0,0 +1,78 @@
+package client
+
+const (
+	createWorkflowRelativeUrl          = "/api/v1/workflows/{namespace}"
+	deleteWorkflowRelativeUrl          = "/api/v1/workflows/{namespace}/{name}"
+	getWorkflowsInNamespaceRelativeUrl = "/api/v1/workflows/{namespace}"
+	getWorkflowRelativeUrl             = "/api/v1/workflows/{namespace}/{name}"
+	lintWorkflowRelativeUrl            = "/api/v1/workflows/{namespace}/lint"
+	resubmitWorkflowRelativeUrl        = "/api/v1/workflows/{namespace}/{name}/resubmit"
+	resumeWorkflowRelativeUrl          = "/api/v1/workflows/{namespace}/{name}/resume"
+	retryWorkflowRelativeUrl           = "/api/v1/workflows/{namespace}/{name}/retry"
+	setWorkflowRelativeUrl             = "/api/v1/workflows/{namespace}/{name}/set"
+	stopWorkflowRelativeUrl            = "/api/v1/workflows/{namespace}/{name}/stop"
+	suspendWorkflowRelativeUrl         = "/api/v1/workflows/{namespace}/{name}/suspend"
+	terminateWorkflowRelativeUrl       = "/api/v1/workflows/{namespace}/{name}/terminate"
+	getEventsStreamRelativeUrl         = "/api/v1/stream/events/{namespace}"
+	getWorkflowEventsStreamRelativeUrl = "/api/v1/workflow-events/{namespace}"
+)
+
+func (c *Client) CreateWorkflow() error {
+	return nil
+}
+
+func (c *Client) DeleteWorkflow() error {
+	return nil
+}
+
+func (c *Client) GetWorkflowsInNamespace() ([]map[string]any, error) {
+	workflowDefinitions := make([]map[string]any, 0)
+	return workflowDefinitions, nil
+}
+
+func (c *Client) GetWorkflow() (map[string]any, error) {
+	workflowDefinition := make(map[string]any)
+	return workflowDefinition, nil
+}
+
+func (c *Client) LintWorkflow() error {
+	return nil
+}
+
+func (c *Client) ResubmitWorkflow() error {
+	return nil
+}
+
+func (c *Client) ResumeWorkflow() error {
+	return nil
+}
+
+func (c *Client) RetryWorkflow() error {
+	return nil
+}
+
+func (c *Client) SetWorkflow() error {
+	return nil
+}
+
+func (c *Client) StopWorkflow() error {
+	return nil
+}
+
+func (c *Client) SuspendWorkflow() error {
+	return nil
+}
+
+func (c *Client) TerminalWorkflow() error {
+	return nil
+}
+
+type EventCallback func(event map[string]any, eventErr error) error
+
+func (c *Client) GetEventsStream(callback EventCallback) error {
+	return nil
+}
+
+func (c *Client) GetWorkflowEventsStream(callback EventCallback) error {
+	return nil
+}

+ 49 - 0
test/approve_workflow.yaml

@@ -0,0 +1,49 @@
+apiVersion: argoproj.io/v1alpha1
+kind: Workflow
+metadata:
+  generatedName: approve-
+spec:
+  entrypoint: approve-flow
+  templates:
+    - name: approve-flow
+      dag:
+        tasks:
+          - name: A
+            template: approval
+          - name: B
+            template: approval
+            depends: "A.Succeeded"
+            when: "{{ tasks.A.outputs.parameters.approve }} == pass"
+          - name: C
+            template: approval
+            depends: "A.Succeeded"
+            when: "{{ tasks.A.outputs.parameters.approve }} == pass"
+          - name: D
+            template: approval
+            depends: "B.Succeeded && C.Succeeded"
+            when: "(({{ tasks.B.outputs.parameters.approve }} == pass && {{ tasks.C.outputs.parameters.approve }} == pass))"
+          - name: E
+            template: approval
+            depends: "B.Succeeded && C.Succeeded"
+            when: "({{ tasks.B.outputs.parameters.approve }} == pass && {{ tasks.C.outputs.parameters.approve }} == pass)"
+          - name: F
+            template: approval
+            depends: "D.Succeeded && E.Succeeded"
+            when: "({{ tasks.D.outputs.parameters.approve }} == pass || {{ tasks.E.outputs.parameters.approve }} == pass)"
+
+    - name: approval
+      suspend: {}
+      inputs:
+        parameters:
+          - name: approve
+            default: 'reject'
+            enum:
+              - 'pass'
+              - 'reject'
+            description: >-
+              Choose YES to continue workflow and deploy to production
+      outputs:
+        parameters:
+          - name: approve
+            valueFrom:
+              supplied: {}