6
4

More than 5 years have passed since last update.

Azure Pipeline で変数を出力する

Last updated at Posted at 2019-06-27

Azure DevOpsのAzure Pipeline で変数や、環境変数を後続のタスクに渡したいときにどうするか?という問題がある。以前は、強制的にEnvironmentVariablesをセットすると後続のタスクで引き継がれたが、現在は禁止されている。では、現在はどうするか?というと、Ad-hocスクリプトというやり方がある様子。

変数の出力

上記のものに従うと、次のような文字列を標準出力に出すと、AzureDevOpsがスキャンして、後続のタスクで使える変数を作ってくれる。

##vso[task.setvariable variable=foo;isSecret=false;isOutput=true;]value

ここで、isSecretisOutputは省略可能なオプショナルなもので、isSecretをtrueにすると、その後の該当変数の出力が***でマスクされて、isOutputをtrueにした場合は、OutputVariablesを指定する必要がある。

OutputVariables

ここでは、someを設定している。これは後続のタスクに対する変数のネームスペースのようなもので、この指定をすることにより、以降のタスクで、最初に設定した変数に対して、$(some.foo)もしくは環境変数のSOME_FOOでアクセスできるようになる。
image.png

isOutputの意義

isOutputのオプションはつけなくてもよい。オプションをつけない場合はデフォルトFalseで、後続のタスクは、$(foo)もしくはFOO環境変数にアクセスできる。じゃあ、なぜisOutputオプションが必要なのだろうか?
想像でしかないが、変数をアウトプットするほうのタスクのユーザもしくは作者が、OutputVariablesを強制したいときに使うのだと思われる。例えばconditionといった簡単にかぶるような名前をつけてコードを書きたい場合、そのままの変数名を後続のタスクに渡すのが不安な場合、isOutputを指定することで、コードを変えることなく、ネームスペースの使用を強制したいときに使うのだと思う。

リソース

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4