前端自動上線系統

我還要吃四碗飯發表於2017-10-31

寫之前沒看到這個外掛的開發者已經在掘進上發了文章,我這個沒看懂或者需要更深入的檢視的,可以去他的頁面或者去官網看文件。
使用nodejs改進發布流程(上)


警告

被玩壞了,好了,下面linux上刪除檔案的命令我刪除了,我會加上這個工具開發者加的那個安全刪除,要不大家要是執行以下rm -rf *或者斜槓多個空格,估計下面警告都不用看了。

配置好的檔案不要用程式碼託管,因為配置檔案裡有你伺服器的資訊,丟了老大殺了你怎麼辦,我也很為難啊。

如果你還想好好活著,配置好的檔案不要發到網上,包括但不限於github等的網站,雖然你的爛程式碼沒人看,但是萬一呢。
如果你還想好好活著,配置好的檔案不要發到網上,包括但不限於github等的網站,雖然你的爛程式碼沒人看,但是萬一呢。

如何讓git或者svn忽略它們你自己查。

如果本文章讓你感到懵逼,可以去官網看看,我只是在官網文件找了一些我需要的配置。

首先全域性安裝fjpublish

npm i fjpublish -g
//或者
yarn global add fjpulish複製程式碼

然後把下面的配置檔案放到專案根目錄,檔名fjpublish.config.js

module.exports = {
  //modules開始   裡面可以配置多個環境,比如測試環境,預釋出環境,和正式環境,當然,也可以配置一個
  modules: [{     // 以下內容為假資料,到時候改成真實伺服器地址,
      name: '測試環境', // 設定釋出環境的名稱易於辨識,就是起個名字
      env: 'test',    // 釋出環境的唯一識別符號
      ssh: {          // 伺服器的ssh配置,不知道的自己問運維大哥
          host: '0.0.0.0',
          port: 22,
          user: 'root',
          userName: 'root',
          password: 'password',
      },
      buildCommand: 'build',  //這個意思是執行的時候可以自動構建,這個必須放你構建時候的程式碼,我這裡構建用的是npm run build,所以寫build
      localPath: 'dist',      // 要釋出的資料夾的根目錄,建議用相對路徑,如果當前不存在,build後產生的資料夾,也要寫這個不存在的資料夾名
      remotePath: '/data/d5-meal', // 要釋出到遠端伺服器的路徑,必須是一個二級及以上的絕對目錄路徑,
      tag: '123'                // 不解釋
  },{  // 以下內容為假資料,到時候改成真實伺服器地址
    name: '預釋出環境',
    env: 'pre_release',
    ssh: {
        host: '00.0.0.0',
        port: 22,
        user: 'root',
        userName: 'root',
        password: 'password',
    },
    buildCommand: 'build',
    localPath: 'dist',
    remotePath: '/data/d5-meal',
    tag: 'v1.0'
},{  // 以下內容為假資料,到時候改成真實伺服器地址
  name: '正式環境',
  env: 'publish',
  ssh: {
      host: '00.0.0.0',
      port: 22,
      user: 'root',
      userName: 'root',
      password: 'password',
  },
  buildCommand: 'build',
  localPath: 'dist',
  remotePath: '/data/d5-meal',
  tag: 'v1.0'
}],
  //modules結束
 // nobuild: true,     //  如果寫了,就不預設執行上線命令的時候執行npm run build
  tag: 'v1.0',           
  afterHooks: {  // 控制檯列印一些資訊,可有可無吧
    when: 'prompt',
    fn({ name, ssh: { host }, localPath = '.', localPathEntries = [], remotePath, nobackup = false, nobuild = false, merge = false }, env, next) {
        console.log(`Config: ...
                    name: %s
                    env: %s
                    host: %s
                    ======
                    local path: %s
                    local entries: %s
                    remote path: %s
                    ======
                    nobuild: %s
                    nobackup: %s
                    merge: %s
                    `, name, env, host, localPath, localPathEntries, remotePath, nobuild, nobackup, merge);
                            next();
                    },
          }
}複製程式碼

fjpublish env -s/-m 標準釋出

-s 以單選提示器的方式選擇釋出環境。vue用過 -m 以多選提示器的方式選擇釋出環境, 單選和多選只需要配置其中之一即可。記得按回車選定

-d 開啟差異化(diff)釋出,釋出專案時只上傳有改動或新增的檔案,這樣做能大大提升專案上傳的速度。自動開啟merge,和伺服器檔案對比,但是不能禁用歷史記錄功能。想想也好理解

--nobackup 釋出時是否備份舊檔案。預設進行備份,備份方式為例如abc檔案將被備份為abc.{時間戳}。 若選擇不備份,fjpublish為了安全起見是進行軟刪除, 即使用mv命名移動至shellTrashPath設定的目錄,預設為'/tmp/fjpublishTrashDir',例如備份/www/test/abc,則將其移動至/tmp/fjpublishTrashDir/www.test.abc.{時間戳} 。

還原

是可以還原的,有需要的看官網或者外掛作者部落格吧。

如何使用mac登入伺服器,

ssh root@0.0.0.0   //root 替換為伺服器管理員的username,後面的IP換成伺服器地址
// 然後輸入密碼就上去了
// 伺服器上刪除檔案  rm -rf 檔名   (千萬別用,大殺器)複製程式碼

如果你不像儲存以前的版本,那就往後加一個--nobackup吧。

結論

使用這個以後,以Vue-cli為例,只需要在上線的時候執行fjpublish env -s,然後選擇上線的環境,就好自動幫你build一份上傳到伺服器,對,就是這樣的,npm run build這個命令你都不需要輸入,下次有空說說伺服器上的nginx怎麼配。

相關文章