Skip to main content

GitOps

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

💡 Bitbucket GitOps 常见用例

  • 将 Bitbucket 用作微服务和其他软件目录资产的真实来源;
  • 允许开发人员通过更新其 Git 仓库中的文件来保持目录的最新状态;
  • 创建一种标准化的方式来记录组织内的软件目录资产;
  • 等等。

使用 GitOps 管理实体

要使用 GitOps 管理实体,需要在版本库的默认分支(通常是main)上添加一个port.yml文件。

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

此配置可将 Bitbucket 仓库作为软件目录的真实来源。

tip

To manage entities using GitOps and the port.yml file, the app listens to a push event sent from the Git provider.

This means that if the port.yml file exists in the repository before installing the Git app, that file will not be picked up automatically. You will need to make some update to the port.yml file and push it to the repository in order for the Git app to properly track and ingest the entity information.

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

示例

请查看example repository ,查看微服务蓝图和指定微服务实体的匹配port.yml文件。

高级

有关高级用例和配置,请参阅advanced 页面。