Как заполнить файл параметров в конвейерах bitbucket

#symfony #continuous-integration #continuous-deployment #bitbucket-pipelines

Вопрос:

Я должен заполнить файл parameters.yml переменными в моем конвейере. Это около 60 строк, необходимых в файле. Поэтому я попытался использовать около 60 операторов echo для заполнения файла и его легкой настройки, но при использовании валидатора он говорит, что мой файл конвейеров недействителен, потому что мне нужно использовать либо строку, либо канал.

Есть ли другой вариант, который позволил бы мне передать многострочную строку в файл, или другой вариант для заполнения этого файла переменными среды?

Вот как я попробовал это сейчас:

 pipelines:  default:  - step:  name: install and test  caches:  - composer  - node  - vendor  script:  - npm install  - npm install -g gulp  - echo "parameters:" gt; app/config/parameters.yml  - echo " database_driver: pdo_mysql" gt;gt; app/config/parameters.yml  - echo " database_host: $DB_HOST" gt;gt; app/config/parameters.yml  - echo " database_port: $DB_PORT" gt;gt; app/config/parameters.yml  - echo " database_name: $DB_NAME" gt;gt; app/config/parameters.yml  - echo " database_user: $DB_USER" gt;gt; app/config/parameters.yml  - echo " database_password: $DB_PASS" gt;gt; app/config/parameters.yml  - echo " redis.dsn.cache: "$REDIS"/0" gt;gt; app/config/parameters.yml  - echo " redis.dsn.doctrine: "$REDIS/1"" gt;gt; app/config/parameters.yml  - echo " redis.dsn.session: "$REDIS/2"" gt;gt; app/config/parameters.yml  - echo " mailer_transport: $MAIL_TRANSPORT" gt;gt; app/config/parameters.yml  - echo " mailer_host: $MAIL_HOST" gt;gt; app/config/parameters.yml  - echo " mailer_user: $MAIL_USER" gt;gt; app/config/parameters.yml  - echo " mailer_password: $MAIL_PASS" gt;gt; app/config/parameters.yml  - echo " mailer_port: $MAIL_PORT" gt;gt; app/config/parameters.yml  

Ответ №1:

Я думаю, что у валидатора возникли некоторые проблемы с тем, что я повторил yaml в конфигурации. Вот как я это исправил:

 pipelines:  default:  - step:  name: install and test  caches:  - composer  - node  - vendor  script:  - npm install  - npm install -g gulp  - echo "parameters:" gt; app/config/parameters.yml  - echo " database_driver: pdo_mysql" gt;gt; app/config/parameters.yml  - echo " database_host: $DB_HOST" gt;gt; app/config/parameters.yml  - echo " database_port: $DB_PORT" gt;gt; app/config/parameters.yml  - echo " database_name: $DB_NAME" gt;gt; app/config/parameters.yml  - echo " database_user: $DB_USER" gt;gt; app/config/parameters.yml  - echo " database_password: $DB_PASS" gt;gt; app/config/parameters.yml  - echo " redis.dsn.cache: "$REDIS/0"" gt;gt; app/config/parameters.yml  - echo " redis.dsn.doctrine: "$REDIS/1"" gt;gt; app/config/parameters.yml  - echo " redis.dsn.session: "$REDIS/2"" gt;gt; app/config/parameters.yml  - echo " mailer_transport: $MAIL_TRANSPORT" gt;gt; app/config/parameters.yml  - echo " mailer_host: $MAIL_HOST" gt;gt; app/config/parameters.yml  - echo " mailer_user: $MAIL_USER" gt;gt; app/config/parameters.yml  - echo " mailer_password: $MAIL_PASS" gt;gt; app/config/parameters.yml  - echo " mailer_port: $MAIL_PORT" gt;gt; app/config/parameters.yml  - sed -i 's/\ / /g' app/config/parameters.yml  

В принципе, я не мог воспроизвести действительный yaml, поэтому я исправил его, используя sed, чтобы изменить файл, чтобы yaml стал действительным.