yii - Jenkins - parametrise .php file -
i configuring jenkins in order make build project. checks out source code, installs required libs etc..
my application configuration stored in params.php file (yii 1.x style), looks following way:
return array( 'dbhost' => 'dbhostvalueplaceholder', 'dbpasssword' => 'dbpasswordvalueplaceholder', /* other values go here */ ); obviously need replace dbpasswordvalueplaceholder password set when starting parametrised build.
current solution i've found running shell command:
sed -i s/dbpasswordvalueplaceholder/$db_password/g $workspace/protected/config/params.php where $db_password corresponding variable.
this solution work simple strings, password may a1@2";$&^*&-=+/*-:'/.,,,,,,,,^^^^^ - in case sed fails because of unescaped characters.
i have searched different jenkins plugins, there plugins work other formats .xml etc, , neither works .php files.
i need avoid moving config values out of .php file other format.
is there way replace described tokens in .php file build parameters values ?
update
as @stanjer recommended, have tried set param value to:
a1@2";$&^*&-=+/*-:\'/.,,,,,,,,^^^^^ so, in case, following code in php right, valid:
'universalpassword' => 'a1@2";$&^*&-=+/*-:\'/.,,,,,,,,^^^^^', it not help, here output:
[build.int] $ /bin/sh -xe /tmp/hudson642312569695847678.sh + sed -i s/defaultuniversalpassword/a1@2";$&^*&-=+/*-:\'/.,,,,,,,,^^^^^/g /var/www/build.int/protected/config/params.php sed: -e expression #1, char 43: unknown option `s' build step 'execute shell' marked build failure finished: failure
thanks updated question.
in case should show it's escaped providing $'string'.
so command like:
$ sed s#dbpasswordvalueplaceholder#$'"a1@2";$&^*&-=+/*-:\'/.,,,^^^"'#g test.php
and output be:
<?php return array( 'dbhost' => 'dbhostvalueplaceholder', 'dbpassword' => '"a1@2";$dbpasswordvalueplaceholder^*dbpasswordvalueplaceholder-=+/*-:'/.,,,,,,,,^^^^^"', /* other values go here */ ); ?> if using variable:
export newpass=$'"a1@2";$&^*&-=+/*-:\'/.,,,^^^"'
sed "s#dbpasswordvalueplaceholder#$newpass#g" test.php
Comments
Post a Comment