私が取り組んでいるリポにreact/TypeScriptアプリがあり、私のリポに無視している.envファイルがあるので、シークレットが公開されず、重要な.env-exampleファイルがあります設定する環境変数。私の問題は、.envファイルをリポジトリにプッシュしていないため、アプリをgoogle app engine((これは私のgitlab -ci.yml file)、これらの環境変数は本番環境には存在しないため、webpack.config.jsファイルで次のようにしてアプリを動作させるために必要です。
const dotenv = require('dotenv').config({ path: __dirname + '/.env' });
その後
new webpack.DefinePlugin({
'process.env': dotenv.parsed
})
ここに誰かが見たい場合の参考のために私の.gitlab-ciファイルがあります。
cache:
paths:
- node_modules/
stages:
- build
- test
- deploy
Build_Site:
image: node:8-Alpine
stage: build
script:
- npm install --progress=false
- npm run-script build
artifacts:
expire_in: 1 week
paths:
- build
Run_Tests:
image: node:8-Alpine
stage: test
script:
- npm install --progress=false
- npm run-script test
Deploy_Production:
image: google/cloud-sdk:latest
stage: deploy
environment: Production
only:
- master
script:
- echo $DEPLOY_KEY_FILE_PRODUCTION > /tmp/$CI_PIPELINE_ID.json
- gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json
- gcloud config set project $PROJECT_ID_PRODUCTION
- gcloud info
- gcloud --quiet app deploy
after_script:
- rm /tmp/$CI_PIPELINE_ID.json
また、私がgitlab-ci.ymlファイルを批評して自由に変更できるようにしてください。
まだこれが必要かどうかはわかりませんが、これが私が達成した方法であり、あなたが望んでいたことです。
Gitlabリポジトリ設定で環境変数を作成する
setup_env.sh
を作成します。
#!/bin/bash
echo $API_URL >> .env
echo $NODE_ENV >> .env
.gitlab-ci.yml
を変更します。 before_script:
セクションに以下を挿入してください - chmod +x ./setup_env.sh
- ./setup_env.sh
webpack.config.js
で https://www.npmjs.com/package/dotenv を使用しますrequire('dotenv').config();
これにより、.env
ファイルで使用可能なwebpack.config.js
変数が渡されます。
これをplugins
配列に追加します(必要な変数を追加します):
new webpack.DefinePlugin({
'process.env.API_URL': JSON.stringify(process.env.API_URL),
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
...
})
これで、デプロイメントはgitlab設定で指定された環境変数を使用するはずです。