#angularjs #jenkins #environment-variables #dockerfile #runtime
#angularjs #дженкинс #переменные среды #dockerfile #время выполнения
Вопрос:
У меня есть простое приложение AngularJS, которое создается с помощью конвейера Jenkins и файла Docker. При запуске задания Jenkins устанавливается среда. Затем он создается в одной из двух сред: dev или integration. Что мне нужно, так это способ получить эту переменную в приложении angular.
Файл docker использует среду для создания различных параметров конфигурации, таких как:
ARG env
COPY build_config/${env} /opt/some/path...
Мне нужно вставить этот env в один из контроллеров. Есть ли способ скопировать env в контроллер. Я попытался сделать что-то вроде следующего:
COPY ${env} path/to/angular/file/controller
Я искал и пробовал разные методы, но не могу найти решение для работы с конвейером Jenkins with Docker.
Комментарии:
1.
ARG
используется для создания переменной, в вашем случае имя переменнойenv
. Переменная будет содержать некоторое строковое значение. Предположим, чтоenv
он имеет строковое значениеdev
. Ваша цель — скопировать строкуdev
path/to/angular/file/controller
или скопировать файл / каталогdev
path/to/angular/file/controller
?2. @ShaneBishop Цель состоит в том, чтобы скопировать строку dev в контроллер.
Ответ №1:
Вы можете просто использовать RUN
для записи строки в файл:
RUN echo "$env" > path/to/angular/file/controller
Если вы хотите добавить к файлу вместо его перезаписи, используйте
RUN echo "$env" >> path/to/angular/file/controller
Комментарии:
1. Как мне теперь получить доступ к строке в файле?
2. Вы могли
cat
бы использовать файл, чтобы получить содержимое файла:cat path/to/angular/file/controller
3. Есть ли способ присвоить содержимое этого файла переменной? Что-то вроде
var baseUrl = ${env} "/rest/of/the/url"
?4. Если вы хотите присвоить содержимое этого файла переменной в сценарии оболочки, вы можете использовать
my_var="$(cat path/to/angular/file/controller)"
5. Его нет в сценарии оболочки. Мне нужно присвоить содержимое файла переменной в самом коде angularjs.