概要
Azure Pipelineを使っている時になぜか環境変数が取れなかったことがあって悩んだのでメモ
タイトルの通りだが、正確には定義できないわけではなく、勝手に内部で大文字に変換される
例えば、
trigger:
- none
variables:
ci: "true"
pool:
vmImage: 'Ubuntu-16.04'
steps:
- task: Maven@3
inputs:
~~省略~~
こんなyamlを定義して、コード側で
private static boolean ci = "true".equals(System.getenv("ci"));
とかやっても取れない
こうやるのが正しい
trigger:
- none
variables:
# must UPPER-CASE!!
CI: "true"
pool:
vmImage: 'Ubuntu-16.04'
steps:
- task: Maven@3
inputs:
~~省略~~
// must UPPER-CASE!!
private static boolean ci = "true".equals(System.getenv("CI"));
対策
設定も何も無いので環境変数は大文字で書かないといけない
おわりに
いや、ドキュメントに書けや!!
というか勝手に変換するならもう小文字環境変数には警告ログでいいだろ!!
......というのもそうだが、何よりコンソールの出力が全体的にunix風なので、Windows likeな大文字小文字を区別しない仕様が唐突に出てくると人は完全に騙される
こういう「人を騙す仕様」は反面教師としたい