Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 与Laravel的持续集成和开发_Php_Laravel_Jenkins_Continuous Integration_Laravel 5.4 - Fatal编程技术网

Php 与Laravel的持续集成和开发

Php 与Laravel的持续集成和开发,php,laravel,jenkins,continuous-integration,laravel-5.4,Php,Laravel,Jenkins,Continuous Integration,Laravel 5.4,我是拉威尔的新手,目前正在做我的第一个项目。我以前曾与CI合作过,但从未与Laravel合作过。下面是我为我们的开发服务器部署的脚本。不确定这是否是最好的方法。无论如何,迁移部分给了我一个错误。在我完成这项工作后,我将尝试使用一些php插件来分析代码质量、复制、单元测试等 请看下面 脚本: rsync -a . /var/www/html/dev/ cd /var/www/html/dev/ # cfg file for dev cp .env.dev .env # run compose

我是拉威尔的新手,目前正在做我的第一个项目。我以前曾与CI合作过,但从未与Laravel合作过。下面是我为我们的开发服务器部署的脚本。不确定这是否是最好的方法。无论如何,迁移部分给了我一个错误。在我完成这项工作后,我将尝试使用一些php插件来分析代码质量、复制、单元测试等

请看下面

脚本:

rsync -a . /var/www/html/dev/

cd /var/www/html/dev/

# cfg file for dev
cp .env.dev .env

# run composer
composer clearcache
composer install --optimize-autoloader

# optimize
php artisan cache:clear
php artisan optimize
php artisan route:cache | true 

# migrate DB
php artisan migrate
错误:

[Illuminate\Database\QueryException]                                         
  SQLSTATE[42S01]: Base table or view already exists:

我应该在迁移之前删除所有表吗?如果是这样,我看不出使用它们进行自动部署有什么好处。此外,我们的表中填充了用于测试的数据(手动填充,因为我们不想自动种子)。

在运行迁移之前,您不应该删除所有表

此错误来自您的
migrations
表和位于
database\migrations
文件夹的
migrations
发生冲突

您应该在返回继续配置Jenkins之前解决此冲突

我的建议是:

您应该为项目的控制发布版本使用

您可以通过
shared
文件夹共享
.env
文件

默认情况下,您可以运行
composer安装
npm安装

以下是我安装和配置Rocketeer的步骤:

$ wget http://rocketeer.autopergamene.eu/versions/rocketeer.phar
$ chmod +x rocketeer.phar
$ mv rocketeer.phar /usr/local/bin/rocketeer
//TODO Install PHP for Jenkins server
$ sudo apt-get install php
//TODO Check rocketeer
$ rocketeer check
No connections have been set, please create one: (production) <~ Succeed
安装火箭转向器:

$ wget http://rocketeer.autopergamene.eu/versions/rocketeer.phar
$ chmod +x rocketeer.phar
$ mv rocketeer.phar /usr/local/bin/rocketeer
//TODO Install PHP for Jenkins server
$ sudo apt-get install php
//TODO Check rocketeer
$ rocketeer check
No connections have been set, please create one: (production) <~ Succeed
配置

$ cd /var/lib/jenkins/drone-deploy/drone-deploy/drone-php
$ nano .rocketeer/config.php
Replace connections name production --> develop //It's Rocketeer bug
$ nano .rocketeer/remote.php
'root_directory' => '/var/www/html/',
'shared'         => [
        'storage/logs',
        'storage/framework/sessions',
        '.env',
    ],
'permissions'    => [

        // The folders and files to set as web writable
        'files'    => [
            //'app/database/production.sqlite',
            'bootstrap',
            'storage',
            'public',
        ],

        // Here you can configure what actions will be executed to set
        // permissions on the folder above. The Closure can return
        // a single command as a string or an array of commands
        'callback' => function ($task, $file) {
            return [
                sprintf('chmod -R 777 %s', $file),
                sprintf('chmod -R g+s %s', $file),
                sprintf('chown -R ec2-user:ec2-user %s', $file),
            ];
        },

    ],
$ nano .rocketeer/strategies.php
    //'test'         => 'Phpunit',
    'test'         => '',
    //return $composer->install([], ['--no-interaction' => null, '--no-dev' => null, '--prefer-dist' => null]);
    return $composer->install([]);
运行试验

rocketeer deploy --on="develop" --tests

通常只有在迁移失败后,您才收到此消息,然后尝试重新迁移数据库。@RossWilson,您似乎是对的。那么,当某些迁移失败时,如何继续以避免这种情况呢?您通常会在本地/dev环境中遇到这些错误,并在问题进入生产之前解决问题。当它发生在您的dev env中时,您可以手动删除所有表,或者只检查存在哪些表不在迁移表中,然后简单地删除该表,然后回滚并迁移。