簡體   English   中英

與Laravel的持續集成和開發

[英]Continuous Integration and Development with Laravel

我是Laravel的新手,目前從事我的第一個項目。 我之前曾與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表,您的migrationsdatabase\\migrations文件夾中有沖突。

您應該解決此沖突,然后再返回以繼續配置Jenkins。

我的建議:

您應該將Rocketeer用於項目的控制發行版。

您可以通過shared文件夾共享您的.env文件。

您可以默認配置Rocketeer來運行composer installnpm install

這是我安裝和配置Rocketeer的步驟:

安裝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

設置遠程服務器信息

$ 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:git@bitbucket.org: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([]);

運行測試

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

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM