web-dev-qa-db-ja.com

デプロイ段階でgitlab ciに.envファイルを追加するにはどうすればよいですか?

私が取り組んでいるリポに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ファイルを批評して自由に変更できるようにしてください。

13
Luis Averhoff

まだこれが必要かどうかはわかりませんが、これが私が達成した方法であり、あなたが望んでいたことです。

  1. Gitlabリポジトリ設定で環境変数を作成する

  2. setup_env.shを作成します。

#!/bin/bash

echo $API_URL >> .env
echo $NODE_ENV >> .env
  1. .gitlab-ci.ymlを変更します。 before_script:セクションに以下を挿入してください
  - chmod +x ./setup_env.sh
  - ./setup_env.sh
  1. webpack.config.jshttps://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設定で指定された環境変数を使用するはずです。

7