Skip to main content

GitOps

Port 的 GitLab 集成功能可让您采用 GitOps 方法管理 Port 实体,使您的代码项目成为您要管理的各种基础架构资产的真实来源。

💡 GitLab GitOps 常见用例

  • 将 GitLab 作为microservicesprojectspackageslibraries和其他软件目录资产的真实来源;
  • 允许开发人员通过更新其 Git 项目中的文件来保持目录的最新状态;
  • 创建一种标准化的方式来记录企业中的软件目录资产;

使用 GitOps 管理实体

要使用 GitOps 管理实体,需要在项目的默认分支(通常为main)中添加一个port.yml文件。

port.yml 文件可以指定一个或多个 Port 实体,这些实体将被摄取到 Port 中,对 port.yml 文件所做的任何更改也将反映在 Port 内部。

该配置可将 GitLab 项目转化为软件目录的真实源。

GitOps port.yml 文件

port.yml` 文件用于指定使用 GitOps 管理的 Port 实体,并从 Git 项目中引用其数据。

下面是有效 port.yml 文件的示例:

identifier: myEntity
title: My Entity
blueprint: myBlueprint
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
relations:
mySingleRelation: myTargetEntity
myManyRelation:
- myTargetEntity1
- myTargetEntity2

由于两种有效的 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
...
  • 关系 "键被用来将目标实体映射到实体的不同关系上:
...
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
relations:
mySingleRelation: myTargetEntity

接收项目文件内容

通过简单引用,可以将资源库中的文件内容作为实体属性的值。

下面的示例将读取 ~/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 页面。