App Centerでユーザー定義環境変数を取得できない
Created at:
Visual Studio App Centerではビルド時の環境変数を定義でき、ビルドスクリプトやGradleのようなビルドシステムから値を取得できるのですが、定義しても環境変数が取れないという現象が発生しました。
tl;dr
SECRET
のようなApp Centerが許可しないキーワードを含んだ環境変数を定義している場合、そのままの名前で露出しないようになっているようです。PASSWORD
のような単語は通るので SECRET
のみの制限かもしれません(ドキュメントに特に書いてない)。
ユーザー定義の環境変数は USER-DEFINED_
というプレフィックスがついた環境変数も定義されるのでそちらから取得する方法もありますが、ハイフンを含んでいるため参照も定義も一筋縄ではいかないのでお勧めできません。
問題と調査
API_KEY
や NUGET_USERNAME
のような環境変数を定義してみたところ特に問題なく取得できたので、もしかして変数名に問題があるのでは?と思いいくつかのパターンを試してみました。すると以下のパターンで違いが出ることがわかりました。
- SECRET_HAUHAU: hauhau1
- SEECRET_HAUHAU: hauhau2
- SECRE__HAUHAU: hauhau3
この定義を設定した上でビルドし、pre-buildスクリプトで環境変数をすべて出力すると…
##[section]Starting: Pre Build Script
==============================================================================
Task : Shell Script
Description : Run a shell script using bash
Version : 2.1.3
Author : Microsoft Corporation
Help : [More Information](https://go.microsoft.com/fwlink/?LinkID=613738)
==============================================================================
[command]/bin/bash /Users/vsts/agent/2.127.0/work/1/s/app/appcenter-pre-build.sh
...snip...
SECRE__HAUHAU=hauhau3
...snip...
USER-DEFINED_SEECRET_HAUHAU=hauhau2
...snip...
USER-DEFINED_SECRE__HAUHAU=hauhau3
...snip...
USER-DEFINED_SECRET_HAUHAU=hauhau1
...snip...
SEECRET_HAUHAU=hauhau2
...snip...
…となり、SECRET_HAUHAU
という変数のみそのまま露出しないようになっています。この結果からApp Centerは SECRET
を含む環境変数をそのまま変数として露出しないようにしているようです。セキュリティのためでしょうか。
というわけで特別必要がなければ SECRET
という名前を含めないでおくというのがハマらないポイントです。