Jenkins为Laravel .env选择旧值



我已经创建了一个Jenkins管道并分享了下面的阶段。Jenkins服务器托管在一个EC2实例上,MySQL数据库托管在AWS RDS上。

stages {
stage("Build") {
steps {
sh 'php --version'
sh 'composer install'
sh 'composer --version'
}
}
stage("Unit test") {
steps {
sh "sed -i -e 's/r//g' .env.example"
sh 'cp .env.example .env'
sh "sed -i 's/^DB_DATABASE=.*/&${DB_DATABASE}/' .env"
sh "sed -i 's/^DB_USERNAME=.*/&${DB_USERNAME}/' .env"
sh "sed -i 's|^DB_HOST=.*|&${DB_HOST}|' .env"
sh script: $/
sed -i 's/^(DB_PASSWORD=*).*$/1"${DB_PASSWORD}"/' .env
sed -i 's/^(APP_ENV=*).*$/1"testing"/' .env
/$
sh 'php artisan migrate'
sh 'php artisan test'
}
}

问题是,当构建得到以下错误:

+ php artisan migrate
IlluminateDatabaseQueryException 
SQLSTATE[HY000] [2002] Connection timed out (SQL: select * from information_schema.tables where table_schema = **** and table_name = migrations and table_type = 'BASE TABLE')

原因是Jenkins为DB_HOST拾取了错误的先前的。env值,但在。env DB_HOST中,它有正确的值,php artisan migrate也可以从终端工作。

已执行命令清除应用程序缓存,通过终端配置:cache等。

如何从Jenkins解决这个问题?请帮助。

终于找到解决办法了。

确保Jenkinsfile中的变量名与.env的键名不相似。

在我的情况下,它是拾取与。env键匹配的Jenkinsfile变量名,而不是我传递的值。

因此,将Jenkinsfile中的DB_HOST更改为DIFF_DB_HOST,它工作正常。

相关内容

  • 没有找到相关文章

最新更新