---
# System prepended metadata

title: Note

---

# Note

- API versioning
  - 为什么都是 beta？
- Workflow 为什么不是应用级的？
  - dependsOn 在 Application 上（组件级）
  - 多环境交付 在 Workflow 上（应用级）
  - 精细化的组件级控制可以体现在 Workflow 上
- Initializer 和 Workflow 的关系
  - dependsOn 和 template 是怎么实现的？为何不用 Workflow 实现？
    - 这个应该就是一个 Application + Workflow，再包一层意义比较小
      - Workflow 引用另一个 Application（应用级）
- CI/CD 场景怎么用
  - 传统
    - Jenkins
    - GitLab
    - GitHub Action
  - GitOps
    - Git layout 设计
    - infra
      - app.yaml
      - workflow.yaml
      - prod
        - policy.yaml
      - test
        - policy.yaml
    - app
      - app.yaml
      - workflow.yaml
      - prod
        - policy.yaml
      - test
        - policy.yaml
    - ArgoCD
    - FluxCD
- 其它文档问题
  - 大小写不一致等
  - 插件系统是管理员文档
  - 用户文档中不能四处出现 Flux、OCM 等干扰信息，更不要四处开启 XXX Addon
  - 理想汽车 删掉
  - 多集群场景 删掉重写，需要增加的是 CI/CD 场景（见上）
  - Terraform 根本没有文档
  - 用户文档要以功能来划分 https://pipecd.dev/docs/user-guide/

```yaml=
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
  name: multi-env-demo
  namespace: default
spec:
  components:
    - name: nginx-server
      type: webservice
      properties:
        image: nginx:1.21
        port: 80
  policies:
    - name: test-env
      type: env-binding
      properties:
        created: false
        envs:
          - name: test
            patch:
              components:
                - name: nginx-server
                  type: webservice
                  properties:
                    image: nginx:1.20
                    port: 80
            placement:
              clusterSelector:
                labels:
                  purpose: test
    - name: prod-env
      type: env-binding
      properties:
        created: false
        envs:
          - name: prod
            patch:
              components:
                - name: nginx-server
                  type: webservice
                  properties:
                    image: nginx:1.20
                    port: 80
            placement:
              clusterSelector:
                labels:
                  purpose: prod

  pipeline:
    steps:
      - name: deploy-test-server
        # 指定步骤类型
        type: multi-env
        properties:
          # 指定组件名称
          component: nginx-server
          # 指定 policy 名称
          policy: test-env
          # 指定 policy 中的 env 名称
          env: test
      - name: manual-approval
        # 工作流内置 suspend 类型的任务，用于暂停工作流
        type: suspend
      - name: deploy-prod-server
        type: multi-env
        properties:
          component: nginx-server
          policy: prod-env
          env: prod
```