web-dev-qa-db-ja.com

VSTS CI npmタスクに環境変数を提供する方法はありますか?

基本的に、.envファイルをリポジトリにチェックインしたくないので、アプリの環境変数を挿入する方法が必要です。 API_URL=api.example.com npm run buildのようなものを実行したいと思っていましたが、タスクコマンドの前に何かを追加することはできないようです。

これを行う方法はありますか、またはAzureでホストされているノードアプリの環境変数を作成するより良い方法はありますか?

7
Reece Long

いくつかのビルド変数をビルド定義に追加して、ビルドステップでそれらをどこかで参照できます。たとえば、API_URL同じ名前と値を持つビルド変数を追加します。なんらかの理由(パスワードなど)で変数を秘密にする必要がある場合は、値フィールドの横にあるロックアイコンをクリックしてください。

enter image description here

次に、新しいcmdタスクをビルドに追加し、それを最上部に移動して、環境変数を設定してから、ビルドを開始します。ビルド変数を参照する方法は次のとおりです...

set API_URL=$(Build.API_URL)

UIでは次のようになります。

enter image description here

テストビルドに2つのcmdタスクを追加して、機能していることを示しました。 1つ目は環境変数を設定するために使用され、2つ目はすべての環境変数をダンプして表示できるようにした。あなたはそれが働いたことをビルドログで見ることができます。

enter image description here

コマンドライン以外のものを使用してビルド変数を参照したい場合は、ビルド変数を参照するさまざまな方法の例 here を見つけることができます。そのページには、シークレット変数の使用例もあります。

編集:

ノードアプリで利用できないことについて懸念があるため、コンソールでテストし、確実に機能することを示しました。

enter image description here

20
tehbeardedone

tehbeardedone の答えはビルドマシンにとって素晴らしいものであり、Azureアプリサービスでアプリを実行する場合の答えも同様です。これは、アプリの開始(ビルド後)の直前または直後にこれらの.envファイルにアクセスする必要がある場合に使用します。

  1. Azure portal に移動します。
  2. アプリサービスに移動します。
  3. 「設定」という見出しの下の「構成」をクリックします。

アプリの本番稼働中に必要となる変数ごとに、次のことを行う必要があります。

  1. 「新規アプリ設定」をクリック
  2. 変数の名前(.envに表示されているとおり)を[名前]フィールドに貼り付けます。
  3. 同様に、変数の値を次のフィールドに貼り付けます。
  4. 「配備スロット設定」チェックボックスにチェックを入れます。このフィールドが曖昧であるように、それは必要です。これを行わなかった場合、アプリは、開始コマンドを実行した後、この変数にアクセスできませんでした。

アプリを再起動します。うまくデプロイした場合、アプリは上記で指定された方法で変数addにアクセスできるはずです。

0
BrotherDonkey