【问题标题】:Jenkins Pipeline - Laravel Unit TestingJenkins 流水线 - Laravel 单元测试
【发布时间】:2020-04-27 19:55:09
【问题描述】:

我已经开始了我的 laravel 项目,我正在尝试对我的代码进行单元测试并测试与 jankins 的数据库连接,这是我的 Jenkinsfile 以及我的配置方式:

pipeline {
    agent {
        dockerfile true
    }
    stages {
        stage("Build") {
            steps {
                sh 'php --version'
                sh 'composer install'
                sh 'composer --version'
                sh 'cp .env.example .env'
                sh 'php artisan key:generate'
            }
        }
        stage("Unit test") {
            steps {
                script {
                    docker.image('mysql:5.7').withRun('-e "MYSQL_DATABASE=testing" -e "MYSQL_ROOT_PASSWORD=root"') { c ->
                        docker.image('mysql:5').inside("--link ${c.id}:db") {
                            /* Wait until mysql service is up */
                            sh 'while ! mysqladmin ping -hdb --silent; do sleep 1; done'
                        }
                        sh "./vendor/bin/phpunit"
                    }
                }
            }
        }
    }
}

单元测试阶段一直报错,无法完成,请问是什么原因??

Docker 配置的所有项目。

【问题讨论】:

  • 你看到了什么错误?
  • 这个错误+ docker run -d -e MYSQL_DATABASE=testing -e DB_USERNAME=root -e DB_PASSWORD=root mysql:5.7 docker: error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or directory script returned exit code 127
  • 你能发布你的 docker 文件吗?
  • FROM php:7.3.1-fpm-stretch RUN apt-get update && apt-get install -y libmemcached-dev zlib1g-dev libssl-dev wget curl vim RUN apt-get install -y git zip unzip jpegoptim optipng pngquant gifsicle RUN apt-get update && apt-get install -y libpng-dev libjpeg62-turbo-dev libfreetype6-dev RUN docker-php-ext-install gd mbstring bcmath pdo pdo_mysql WORKDIR /usr/local/etc/php/conf.d/ RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer WORKDIR /var/www/html/

标签: laravel docker jenkins jenkins-pipeline dockerfile


【解决方案1】:

尝试将其添加到您的 dockerfile 中:“apt-get install -y libltdl7”。或者只是将额外的“libltdl7”添加到您现有的安装语句中。

我已经更新了你提供的 dockerfile(这是未经测试的):

FROM php:7.3.1-fpm-stretch 

RUN apt-get update \
    && apt-get install -y libmemcached-dev zlib1g-dev libssl-dev wget curl vim libltdl7

RUN apt-get install -y git zip unzip jpegoptim optipng pngquant gifsicle 

RUN apt-get update \
    && apt-get install -y libpng-dev libjpeg62-turbo-dev libfreetype6-dev 

RUN docker-php-ext-install gd mbstring bcmath pdo pdo_mysql 

WORKDIR /usr/local/etc/php/conf.d/ 

RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer 

WORKDIR /var/www/html/

【讨论】:

  • 我已经这样做了,但不幸的是我在运行测试时遇到了新错误。运行此命令时 => ./vendor/bin/phpunit php_network_getaddresses: getaddrinfo failed: Name or service not known (SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE')
  • 嗯,这不是您在被问及时分享的错误。您看到的这个额外错误可能是因为您没有在您的环境中正确设置 DB_HOST。不过,您可能会遇到与单元测试相关的更大问题。您可能实际上不应该将数据库调用作为单元测试的一部分,您应该考虑模拟。
猜你喜欢
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 2022-09-26
  • 2017-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多