Quick Tip: Accessing a Azure DevOps secret from within a scripted step

Posted by on . Last Updated on . Tagged:devopsazure

In today’s quick tip, we are going to see how we can access a secret that we’ve defined in a variable group as part of a Azure DevOps yml based build.

By design, any variable from a linked variable set will:

  • Be hidden from logs; and
  • Not be placed in as an environment variable

In the blog posts that I’ve seen to date, they’ve mentioned about using the ##vso[task.setvariable name]value command inside of a script. I personally dislike this way as it clutters the build with extra steps that I feel are unnecessary and it makes it harder to find when looking at the configuration file. You may still have to use this approach when the following tip does not work.

In order to pull in a value from a variable group, you must link the variables by using the following snippet:

variables:
- group: MY_VARIABLE_GROUP_NAME

Replace MY_VARIABLE_GROUP_NAME with your variable group name.

Multiple groups can be added like so:

variables:
- group: MY_VARIABLE_GROUP_NAME
- group: MY_VARIABLE_GROUP_NAME_2

And then in the steps, and the env: section linking the SECRET_TOKEN variable as follows:

steps:
- script: 'echo Your script here'
displayName: 'My Test Script'
env:
    SECRET_TOKEN: $(SECRET_TOKEN)

Replace SECRET_TOKEN with the name of your variable that you wish to access.

That’s it. From now you should be able to access your secret variables from within your scripts and not have them written out to logs.

Further Reading

Stuart Blackler is a seasoned technologist with over 15 years of commercial experience in the .NET ecosystem. Holding a degree in Computer Science, Stuart has earned certifications as a C# developer through Microsoft and as an AWS Solutions Architect and Developer. Stuart is the creator of the popular YouTube channel CodeWithStu, where he delves into topics close to his heart, including .NET, AWS, DevOps, and software architecture with a commitment to sharing knowledge and fostering a community of learners.