How to use pipeline variable inside property file from git

6/26/2019

In Azure pipeline I download kubernetes deployment.yml property file which contains following content.

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

My intention is to get the value from pipeline variable $(releaseVersion). But it seems like kubernetes task doesn't allow this value to be accessed from pipeline variable.

I tried using inline configuration type and it works.That means If I copy same configuration as inline content to kubernetes task configuration, it works.

Is there anyway that I can make it work for the configuration from a file?

-- Channa
azure-devops
azure-kubernetes
azure-pipelines
azure-pipelines-release-pipeline
kubernetes

2 Answers

6/26/2019

As I understand, you may want to replace the variable of deployment.yml file content while build executed.

You can use one task which name is Replace Tokens task (Note:The token under this task name is not same with PAToken). This is the task which support replace values of files in projects with environments variables when setting up VSTS Build/Release processes.

Install Replace Tokens from marketplace first, then add Replace Tokens task into your pipeline.

Configure the .yml file path in the Root directory. For me, my target file is under the Drop folder of my local. And then, point out which file you want to operate and replace.

enter image description here

For more argument configured, you can check this doc which I ever refer: https://github.com/qetza/vsts-replacetokens-task#readme

Note: Please execute this task before Deploy to Kubernetes task, so that the change can be apply to the Kubernetes cluster.

Here also has another sample blog can for you refer.

-- Merlin Liang - MSFT
Source: StackOverflow

6/26/2019

You should have it as part of your pipeline, to substitute environment variables inside the deployment template

Something along the lines of:

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

You can set the variables in your pipeline. https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch

-- Abhyudit Jain
Source: StackOverflow