基本的に、.envファイルをリポジトリにチェックインしたくないので、アプリの環境変数を挿入する方法が必要です。 API_URL=api.example.com npm run build
のようなものを実行したいと思っていましたが、タスクコマンドの前に何かを追加することはできないようです。
これを行う方法はありますか、またはAzureでホストされているノードアプリの環境変数を作成するより良い方法はありますか?
いくつかのビルド変数をビルド定義に追加して、ビルドステップでそれらをどこかで参照できます。たとえば、API_URL
同じ名前と値を持つビルド変数を追加します。なんらかの理由(パスワードなど)で変数を秘密にする必要がある場合は、値フィールドの横にあるロックアイコンをクリックしてください。
次に、新しいcmdタスクをビルドに追加し、それを最上部に移動して、環境変数を設定してから、ビルドを開始します。ビルド変数を参照する方法は次のとおりです...
set API_URL=$(Build.API_URL)
UIでは次のようになります。
テストビルドに2つのcmdタスクを追加して、機能していることを示しました。 1つ目は環境変数を設定するために使用され、2つ目はすべての環境変数をダンプして表示できるようにした。あなたはそれが働いたことをビルドログで見ることができます。
コマンドライン以外のものを使用してビルド変数を参照したい場合は、ビルド変数を参照するさまざまな方法の例 here を見つけることができます。そのページには、シークレット変数の使用例もあります。
編集:
ノードアプリで利用できないことについて懸念があるため、コンソールでテストし、確実に機能することを示しました。
tehbeardedone の答えはビルドマシンにとって素晴らしいものであり、Azureアプリサービスでアプリを実行する場合の答えも同様です。これは、アプリの開始(ビルド後)の直前または直後にこれらの.env
ファイルにアクセスする必要がある場合に使用します。
アプリの本番稼働中に必要となる変数ごとに、次のことを行う必要があります。
.env
に表示されているとおり)を[名前]フィールドに貼り付けます。アプリを再起動します。うまくデプロイした場合、アプリは上記で指定された方法で変数addにアクセスできるはずです。