<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                * * * * * [TOC] ## 簡介 [Laravel Envoy](https://github.com/laravel/envoy)?為定義在遠程服務器上運行的通用任務提供了一種簡潔、輕便的語法。它使用了 Blade 風格的語法,讓你可以很方便的啟動任務來進行項目部署、Artisan 命令運行等操作。目前,Envoy 只支持 Mac 及 Linux 操作系統。 ### 安裝 首先,使用 Composer?`global require`?命令來安裝 Enovy : ~~~ composer global require "laravel/envoy=~1.0" ~~~ 因為 Composer 的全局庫有時會導致包的版本沖突,所以你可以考慮使用?`cgr`?,它是?`composer global require`?命令的一種替代實現?`cgr`?庫的安裝指導可以在?[GitHub上找到](https://github.com/consolidation-org/cgr)。 > {note} 一定要確保?`~/.composer/vendor/bin`?目錄加入到了你的 PATH 中,這樣才能在命令行運行?`envoy`?。 #### 更新 Envoy 你也可以使用 Composer 來更新 Envoy 到最新版本。 要注意?`composer global update`?命令是更新你所有在全局安裝的包: ~~~ composer global update ~~~ ## 編寫任務 所有的 Envoy 任務都必須定義在項目根目錄的?`Envoy.blade.php`?文件中,這里有個例子: ~~~ @servers(['web' => ['user@192.168.1.1']]) @task('foo', ['on' => 'web']) ls -la @endtask ~~~ 如你所見,?`@servers`?的數組被定義在文件的起始位置處,讓你在聲明任務時可以在?`on`?選項里參照使用這些服務器。在你的?`@task`?聲明里,你可以放置當任務運行時想要在遠程服務器運行的 Bash 命令。 你可以通過指定服務器的 IP 地址為?`127.0.0.1`?來執行本地任務: ~~~ @servers(['localhost' => '127.0.0.1']) ~~~ ### 任務啟動 有時,你可能想在任務啟動前運行一些 PHP 代碼。這時可以使用?`@setup`?區塊在 Envoy 文件中聲明變量以及運行普通的 PHP 程序: ~~~ @setup $now = new DateTime(); $environment = isset($env) ? $env : "testing"; @endsetup ~~~ 如果你想在任務執行前引入其他 PHP 文件,可以直接在?`Envoy.blade.php`?文件起始位置使用?`@include`?: ~~~ @include('vendor/autoload.php') @task('foo') # ... @endtask ~~~ ### 任務變量 如果需要的話,你也可以通過命令行選項來傳遞變量至 Envoy 文件,以便自定義你的任務: ~~~ envoy run deploy --branch=master ~~~ 你可以通過 Blade 的「echo」語法使用這些選項, 當然也能在任務里用「if」 和循環操作。舉例來說,我們在執行?`git pull`?命令前,先檢查?`$branch`?變量是否存在: ~~~ @servers(['web' => '192.168.1.1']) @task('deploy', ['on' => 'web']) cd site @if ($branch) git pull origin {{ $branch }} @endif php artisan migrate @endtask ~~~ ### 任務故事 任務故事通過一個統一的、便捷的名字來劃分一組任務,來讓你把小而專的子任務合并到大的任務里。比如說,一個名為`deploy`?的任務故事可以在它定義范圍內列出子任務名字?`git`?和?`composer`?來運行各自對應的任務: ~~~ @servers(['web' => '192.168.1.1']) @story('deploy') git composer @endstory @task('git') git pull origin master @endtask @task('composer') composer install @endtask ~~~ 當 story 寫好后,像運行普通任務一樣運行它就好了: ~~~ envoy run deploy ~~~ ### 多個服務器 你可以在多個服務器上運行任務。首先,增加額外的服務器至你的?`@servers`?聲明,每個服務器必須分配一個唯一的名稱。一旦你定義好其它服務器,就能夠在任務聲明的?`on`?數組中列出這些服務器: ~~~ @servers(['web-1' => '192.168.1.1', 'web-2' => '192.168.1.2']) @task('deploy', ['on' => ['web-1', 'web-2']]) cd site git pull origin {{ $branch }} php artisan migrate @endtask ~~~ #### 并行運行 默認情況下,任務會按照順序在每個服務器上運行。這意味著任務會在第一個服務器運行完后才跳到第二個。如果你想在多個服務器上并行運行任務,只需簡單的在任務聲明里加上?`parallel`?選項即可: ~~~ @servers(['web-1' => '192.168.1.1', 'web-2' => '192.168.1.2']) @task('deploy', ['on' => ['web-1', 'web-2'], 'parallel' => true]) cd site git pull origin {{ $branch }} php artisan migrate @endtask ~~~ ## 運行任務 要想運行一個在?`Envoy.blade.php`?文件中定義好的任務或者故事,就執行 Envoy 的?`run`?命令,并將這個任務的名字傳遞給它。Envoy 會去執行這個任務并且把任務執行過程中的輸出給打印出來: ~~~ envoy run task ~~~ ### 任務確認 如果你想要在運行任務之前進行提示確認,則可以增加?`confirm`?命令到任務聲明。這個選項對于破壞性的操作來說是相當有用的: ~~~ @task('deploy', ['on' => 'web', 'confirm' => true]) cd site git pull origin {{ $branch }} php artisan migrate @endtask ~~~ ## 通知 ### Slack Envoy 也支持任務執行完畢后發送通知至?[Slack](https://slack.com/)。`@slack`?命令接收 Slack hook 網址和頻道名稱。你可以通在在 Slack 的控制面板上創建 「Incoming WebHooks」 時來檢索 webhook 網址。webhook-url 參數必須是?`@slack`?的 Incoming WebHooks 所提供的完整網址: ~~~ @finished @slack('webhook-url', '#bots') @endfinished ~~~ 你可以選擇下方的任意一個來作為 channel 參數: * 如果要發送通知至一個頻道:?`#channel` * 如果要發送通知給一位用戶:?`@user`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看