Help us understand the problem. What is going on with this article?

Azure Pipeline で変数を出力する

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を指定することで、コードを変えることなく、ネームスペースの使用を強制したいときに使うのだと思う。

リソース

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした