如何在 git 的 属性 文件中使用管道变量

How to use pipeline variable inside property file from git

在 Azure 管道中,我下载了包含以下内容的 kubernetes deployment.yml 属性 文件。

spec:
  imagePullSecrets:
  - name: some-secret
  containers:
  - name: container-name
    image: pathtoimage/data-processor:$(releaseVersion)
    imagePullPolicy: Always
    ports:
    - containerPort: 8088
    env:

我的意图是从管道变量 $(releaseVersion) 中获取值。但似乎 kubernetes 任务不允许从管道变量访问此值。

我尝试使用内联配置类型,它 works.That 意味着如果我将与内联内容相同的配置复制到 kubernetes 任务配置,它就可以工作。

有什么方法可以使它适用于文件中的配置吗?

您应该将其作为管道的一部分,以替换部署模板中的环境变量

大致如下:

- sed -i "s/$(releaseVersion)/${RELEASE_VERSION_IN_BUILD_RUNNER}/" deployment.yml
- kubectl apply -f deployment.yml

您可以在管道中设置变量。 https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch

据我了解,您可能希望在构建执行时替换 deployment.yml 文件内容的变量。

您可以使用一个名为Replace Tokens task的任务(注意:此任务名称下的token不相同与 PAToken)。这是在设置 VSTS Build/Release 进程时支持使用环境变量替换项目中文件值的任务。

首先从市场安装 Replace Tokens,然后将 Replace Tokens 任务 添加到您的管道中。

配置根目录下的.yml文件路径。对于我来说,我的目标文件在我本地的 Drop 文件夹下。然后,指出你要操作和替换的文件。

更多参数配置,你可以查看我曾经参考过的文档:https://github.com/qetza/vsts-replacetokens-task#readme

注意:请在 Deploy to Kubernetes 任务之前执行此任务,以便更改可以应用到 Kubernetes 集群。

这里还有一个sample blog可以供大家参考