2017-07-15 51 views
0

私はLaravelを始め、現在私の最初のプロジェクトに取り組んでいます。私は以前にCIで働いていましたが、Laravelでは決して使っていませんでした。そこで、私の開発サーバーのための私の展開スクリプトです。これが最善のアプローチであるかどうかは不明です。とにかく、移行部分が私にエラーを与えています。Laravelとの継続的な統合と開発

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 

がエラー:

私はこの作業を取得した後、私は

スクリプト下記参照、コードの品質、複製、ユニットテストなど

を分析するために、いくつかのPHPのプラグインをしてくださいしようとします

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

移行を実行する前にすべてのテーブルを削除する必要がありますか?もしそうなら、私は自動配備にそれらを使用するのに役立つ部分は何もわかりません。さらに、私たちのテーブルにはテストのためのデータが入っています(自動シードしたくないので手動で入力します)。

+0

移行が失敗した場合は、通常は、このメッセージが表示されます、あなたは再度移行するデータベースにしてみてください。 –

+0

@RossWilson、あなたは正しいようです。このような状況を回避するために移行が失敗した場合、どのように処理を進めるのですか? –

+0

通常、ローカルの/ dev環境でこれらのエラーを実行し、問題が本番環境に移行する前に修正します。あなたのdev envで発生すると、手動ですべてのテーブルを削除するか、移行テーブルにないテーブルが存在するかどうかを確認し、そのテーブルを削除してからロールバックして移行することができます。 –

答えて

0

移行を実行する前に、すべてのテーブルを削除しないでください。

このエラーはmigrationsテーブルからのもので、migrationsdatabase\migrationsフォルダに矛盾があります。

戻る前にこの競合を解決して、Jenkinsの設定を続行する必要があります。

私の提案:

あなたはあなたのプロジェクトのコントロールリリースバージョン用にRocketeerを使用する必要があります。

.envファイルをsharedというフォルダで共有できます。

デフォルトでは、Rocketeerの設定でcomposer installnpm installを実行できます。

インストールロケッティア:

$ 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/server-dev 
$ rocketeer ignite 
No connections have been set, please create one: (production)develop 
No host is set for [develop], please provide one:35.166.x.x 
No username is set for [develop], please provide one:ec2-user 
No password or SSH key is set for [develop], which would you use? (key) [key/password]key 
Please enter the full path to your key (/var/lib/jenkins/.ssh/id_rs/var/lib/jenkins/.ssh/xxx.pem 
If a keyphrase is required, provide it 
No repository is set for [repository], please provide one:[email protected]:xx/xxxxxx.git 
No username is set for [repository], please provide one:xxx 
No password is set for [repository], please provide one: 
develop/0 | Ignite (Creates Rocketeer's configuration) 
What is your application's name ? (drone-php)drone_deploy 
The Rocketeer configuration was created at server-dev/.rocketeer 

設定

$ 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([]); 

TEを実行している。ここ

は私の手順は、インストールと設定ロケッティアですST

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

enter image description here

関連する問題