GitOps
Port 的 GitLab 集成功能可让您采用 GitOps 方法管理 Port 实体,使您的代码项目成为您要管理的各种基础架构资产的真实来源。
💡 GitLab GitOps 常见用例
- 将 GitLab 作为microservices、projects、packages、libraries和其他软件目录资产的真实来源;
- 允许开发人员通过更新其 Git 项目中的文件来保持目录的最新状态;
- 创建一种标准化的方式来记录企业中的软件目录资产;
使用 GitOps 管理实体
要使用 GitOps 管理实体,需要在项目的默认分支(通常为main
)中添加一个port.yml
文件。
port.yml
文件可以指定一个或多个 Port 实体,这些实体将被摄取到 Port 中,对 port.yml
文件所做的任何更改也将反映在 Port 内部。
该配置可将 GitLab 项目转化为软件目录的真实源。
GitOps port.yml
文件
port.yml` 文件用于指定使用 GitOps 管理的 Port 实体,并从 Git 项目中引用其数据。
下面是有效 port.yml
文件的示例:
- Single entity
- Multiple entities
identifier: myEntity
title: My Entity
blueprint: myBlueprint
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
relations:
mySingleRelation: myTargetEntity
myManyRelation:
- myTargetEntity1
- myTargetEntity2
- identifier: myEntity1
title: My Entity1
blueprint: myFirstBlueprint
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
relations:
mySingleRelation: myTargetEntity
myManyRelation:
- myTargetEntity1
- myTargetEntity2
- identifier: myEntity
title: My Entity2
blueprint: mySecondBlueprint
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
由于两种有效的 port.yml
格式都遵循相同的结构,下文将根据单一实体示例来解释格式。
###port.yml
结构
下面是一个 port.yml
文件示例:
identifier: myEntity
title: My Entity
blueprint: myBlueprint
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
relations:
mySingleRelation: myTargetEntity
myManyRelation:
- myTargetEntity1
- myTargetEntity2
- 标识符 "键被用来指定应用程序将创建并在发生变化时保持更新的实体的标识符:
identifier: myEntity
title: My Entity
...
- title "键被用来引用实体的 title:
identifier: myEntity
title: My Entity
...
- blueprint "键被用于来指定要创建此实体的蓝图的标识符:
...
title: My Entity
blueprint: myBlueprint
...
properties
键被用来将值映射到实体的不同属性:
...
title: My Entity
blueprint: myBlueprint
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
...
- 关系 "键被用来将目标实体映射到实体的不同关系上:
- Single relation
- Many relation
...
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
relations:
mySingleRelation: myTargetEntity
...
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
relations:
myManyRelation:
- myTargetEntity1
- myTargetEntity2
接收项目文件内容
通过简单引用,可以将资源库中的文件内容作为实体属性的值。
下面的示例将读取 ~/module1/README.md
中的字符串内容,并将其上传到指定实体的 myStringProp
中。
被用于到示例中的资源库文件夹结构:
root
|
+- port.yml
|
+-+ module1
| |
| +- README.md
| |
| +-+ src
...
Port.yml` 文件:
blueprint: code_module
title: Module 1
identifier: module_1_entity
properties:
myStringProp: file://module1/README.md
使用相对路径
也可以被用于为相对于 port.yml
规格文件位置的路径。
例如: file://./
用于引用与 port.yml
文件在同一目录下的文件。file://./
用于引用高一个目录的文件,依此类推。
以下示例使用相对于 port.yml
的路径读取 README.md
和 `module1/requirements.txt
被用于到示例中的资源库文件夹结构:
root
|
+-+ meta
| |
| +-- port.yml
| |
| +-+ README.md
|
+-+ module1
| |
| +- requirements.txt
| |
| +-+ src
...
Port.yml` 文件:
blueprint: code_module
title: Module 1
identifier: module_1_entity
properties:
readme: file://./README.md
module1Requirements: file://../module1/requirements.txt
高级
有关高级用例和配置,请参阅advanced 页面。