J'ai donc une application react/TypeScript dans mon référentiel sur lequel je travaille et dans mon référentiel j'ai un fichier .env que j'ignore afin que mes secrets ne soient pas exposés et un fichier .env-exemple important variables d'environnement à configurer. Mon problème est, puisque je ne pousse pas le fichier .env vers mon référentiel, lorsque je déploie mon application via le moteur d'application Google (cela se fait à l'étape du déploiement dans mon gitlab -ci.yml fichier), ces variables d'environnement ne seront pas présentes en production et j'en ai besoin pour que mon application fonctionne car je fais quelque chose comme ça dans mon fichier webpack.config.js.
const dotenv = require('dotenv').config({ path: __dirname + '/.env' });
puis
new webpack.DefinePlugin({
'process.env': dotenv.parsed
})
Voici mon fichier .gitlab-ci pour référence au cas où quelqu'un ici voudrait le voir.
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
Aussi, n'hésitez pas à critiquer mon fichier gitlab-ci.yml afin que je puisse l'améliorer.
Je ne sais pas si vous en avez encore besoin, mais c'est comme ça que j'ai réalisé, ce que vous vouliez.
Créez vos variables d'environnement dans votre configuration gitlab repo
Créer setup_env.sh
:
#!/bin/bash
echo $API_URL >> .env
echo $NODE_ENV >> .env
.gitlab-ci.yml
. Renversez ci-dessous votre before_script:
section - chmod +x ./setup_env.sh
- ./setup_env.sh
webpack.config.js
utilisez https://www.npmjs.com/package/dotenvrequire('dotenv').config();
Cela passe votre .env
variables disponibles dans webpack.config.js
fichier.
Ajoutez ceci à votre tableau plugins
(ajoutez les variables dont vous avez besoin):
new webpack.DefinePlugin({
'process.env.API_URL': JSON.stringify(process.env.API_URL),
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
...
})
Maintenant, votre déploiement doit utiliser vos variables d'environnement spécifiées dans vos paramètres gitlab.