Задать вопрос
@Capablanca

Как передать variables из gitlab-ci.yml в React?

Всем привет! У меня typescript приложение на react

Я создаю кастом вариаблы в процессе билда на gitlab, используя predefined variable гитлаба в том числе, дальше мне надо полученный результат прокинуть в Реакт. Вот что я написал на данный момент.

gitlab-ci.yml
build:
  stage: build
  only:
    - develop
  script: |
    export BRANCH=$CI_COMMIT_BRANCH
    export TIMESTAMP=$(date +%d%m%Y.%H%M)
    npm run build --env.BRANCH=$BRANCH --env.BUILDTIME:$TIMESTAMP


это веб-пак:
new webpack.DefinePlugin({
        'process.env.BRANCH': JSON.stringify(process.env.BRANCH),
        'process.env.BUILD_TIME': JSON.stringify(process.env.BUILDTIME),
      })


Далее я через вызов скрипта в приложухе привязываю process.env.BUILD_TIME в window. И после этого на живом стенде получаю undefined. Не могу понять что не так

1) Можно ли вообще создать свои переменные так, как я это сделал в gitlab-ci.yml процессе? Если нет, то как правильно?
2) webpack.config у меня сейчас имеет такую инициализацию
module.exports = env =>
То есть где вообще объявить вебпаку какие НЕДЕФОЛТНЫЕ переменные он должен принять?
Где их правильно объявить и присвоить значение?
То есть я сейчас не про variables со значением, которые можно в интерфейсе гитлаба задать, а именно вот такие динамические, которые должны быть сделаны в процессе сборки на gitlab

Помогите, пожалуйста :3
  • Вопрос задан
  • 623 просмотра
Подписаться 3 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
zavoloklom
@zavoloklom
Software Engineering Manager
В целом передать можно, нужно только определится со способом.

Первый вариант передавать как енв для вебпака, тогда это будет

npm run build -- --env.BRANCH=$BRANCH --env.BUILDTIME=$TIMESTAMP


Вариант попроще, в вебпаке обращаться к переменным окружения заданным на CI:

npm run build

и вебпак

new webpack.DefinePlugin({
  'process.env.BRANCH': JSON.stringify(process.env.BRANCH),
  'process.env.BUILD_TIME': JSON.stringify(process.env.TIMESTAMP),
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы