# 使用OTA程序做全廠更新 ## 目的 機台可以通過線上更新,未來只要在將新軟件(core/skin/manager)上傳至OTA Server之後,所有機台只要透過重啟的方式就可以進行軟件更新 ### 第一次執行前準備事項: 請依照本機的系統執行底下操作,確保可以進行操作:# 執行命令前,請先安裝 Git (確保可執行 git 指令) 例: 您的本機若為MacOS > $ brew install git > 例: 您的本機若為Ubuntu > $ sudo apt install git ### A.將新軟件上傳至Server步驟: #### Step1. 在本機上將欲上傳之軟件進行檔名更新: core的軟件原始檔名如下: > zhap_core_nanping_capacitor_wire_components-20xx.xx.xx-cp36-cp36m-linux_x86_64.whl > 請改成 > zhap_core-latest-cp36-cp36m-linux_x86_64.whl skin的軟件原始檔名如下: > setup_skin_general_xxxxxx_no_password.sh > 請改成 > setup_skin_general_latest.sh manager的軟件原始檔名如下: > manager_server > 不用改,仍保持 > manager_server #### Step2.底下分別說明三個軟件如何上傳至Server 2.1 上傳 zhap_core 2.1.1 本機上輸入底下命令: > $ git clone https://<gitlab_ip_domain>/<廠商帳號>/zhap_core.git Ex: > $ git clone https://update.aizhenhai.com/nanping_nantong_capacitor_wire_components/zhap_core.git #### 註: 上面那行如果無法連,可改用下面這行試試 (其它 project 以此類推) > git clone https://<廠商帳號>@<gitlab_ip_domain>/<廠商帳號>/zhap_core.git Ex: > $ git clone https://nanping_nantong_capacitor_wire_components@update.aizhenhai.com/nanping_nantong_capacitor_wire_components/zhap_core.git ![](https://upload.cc/i1/2021/07/13/0WgELl.png) 完成後如下圖所示. ![](https://upload.cc/i1/2021/07/13/wstILX.png) 2.1.2 繼續於本機上輸入底下命令: > $ cd zhap_core   #### 註1.上傳 zhap_core-latest-cp36-cp36m-linux_x86_64.whl 檔 (其它檔案、檔名無作用) > $ cp /path/to/zhap_core-latest-cp36-cp36m-linux_x86_64.whl . #### 註2.這裡的/path/to/是指本機存放檔案的路徑 > $ git add zhap_core-latest-cp36-cp36m-linux_x86_64.whl > $ git commit -am "Update: <更新內容隨你打>" #### 註3.更新的內容可以用於網站上做確認是否有上傳成功 > $ git push 完成後如下圖所示. ![](https://upload.cc/i1/2021/07/13/M265WT.png) 2.2 上傳zhap_skin 2.2.1 本機上輸入底下命令: > $ git clone https://nanping_nantong_capacitor_wire_components@update.aizhenhai.com/nanping_nantong_capacitor_wire_components/zhap_skin.git ![](https://upload.cc/i1/2021/07/13/awqXYg.png) 完成後如上圖所示. 2.2.2 繼續於本機上輸入底下命令: > $ cd zhap_skin > $ cp /path/to/setup_skin_general_latest.sh . #### 註1.上傳 setup_skin_general_latest.sh 檔 (其它檔案、檔名無作用) #### 註2.這裡的/path/to/是指本機存放檔案的路徑 > $ git add setup_skin_general_latest.sh > $ git commit -am "Update: <更新內容隨你打>" #### 註3.更新的內容可以用於網站上做確認是否有上傳成功 > $ git push 完成後如下圖所示. ![](https://upload.cc/i1/2021/07/13/riBZNM.png) 2.3上傳 zhap_manager 2.3.1 本機上輸入底下命令: > $ git clone https://nanping_nantong_capacitor_wire_components@update.aizhenhai.com/nanping_nantong_capacitor_wire_components/zhap_manager.git 完成後如下圖所示. ![](https://upload.cc/i1/2021/07/13/OGBsv1.png) 2.3.2 繼續於本機上輸入底下命令: > $ cd zhap_manager > $ cp /path/to/manager_server . > $ cp /path/to/rec_expiry . #### 註1.上傳 manager_server, rec_expiry 檔 (其它檔名無作用) #### 註2.這裡的/path/to/是指本機存放檔案的路徑 #### 註3.rec_expiry一般來說不會更新,有必要更新會特別提醒 > $ git add manager_server #### manager_server 執行檔 > $ git add rec_expiry #### rec_expiry 執行檔,有更新才需做 > $ git commit -am "Update: <更新內容隨你打>" #### 更新的內容可以用於網站上做確認是否有上傳成功 > $ git push 完成後如下圖所示. ![](https://upload.cc/i1/2021/07/13/mxgpEq.png) 2.4 確認軟件是否均已上傳 2.4.1進入 > https://update.aizhenhai.com/ ![](https://upload.cc/i1/2021/07/13/WucFCg.png) 帳號/密碼請洽相關人員 2.4.2 登入後可以看見3個project表示core/skin/manager,並可以個別點進去看到你剛剛上傳的檔案是否有成功 ![](https://upload.cc/i1/2021/07/13/QPXAGm.png) ![](https://upload.cc/i1/2021/07/13/Eh9ivM.png) ![](https://upload.cc/i1/2021/07/13/mlc5QK.png) ![](https://upload.cc/i1/2021/07/13/9Ix8Hl.png) ### B.如何將機台進行軟件更新: 通常在機台在進行第一次檢測系統安裝時,皆會安裝ota安裝包,請見`“導針檢測系統安裝手冊(離線版本)“`step4,安裝完畢後,在機台的`/opt/zhenhai/ota`路徑下會產生兩個腳本(`ota_client.sh`/`ota_download.sh`) ``` OTA的工作原理是: 每隔兩小時,背景程式便會自動到ota server上查詢是否有最新軟件的存在,若有,則下載最新軟件,並於下次開機時執行該 service 「一次」,就是去做更新的動作. 因此更新時,需要預留一段時間(先等ota_download.sh下載軟件),然後再進行電腦重啟,才會成功更新. ``` 如果要在機器運作時手動進行更新時,則要先下底下命令,先下載ota server上最新軟件 > $ bash ./ota_download.sh 再進行軟件更新的動作 > $ sudo service zhap_ota restart #### C.注意事項: 1.若使用git clone上傳更新軟件失敗,遇到底下問題時: ``` ! [rejected] master -> master (fetch first) error: 推送一些引用到 'https://update.aizhenhai.com/Zhenhai/zhap_core.git' 失敗 提示:因為遠端版本庫包含您本機尚不存在的提交,而導致更新被拒絕。這通常是因為另外 提示:一個版本庫已向該引用進行了推送。再次推送前,您可能需要先整合遠端變更 提示:(如 'git pull ...')。 提示:詳見 'git push --help' 中的 'Note about fast-forwards' 小節。 ``` 解決辦法: 將git clone所產生的zhap_core整個刪掉(ex: /Users/Mac/zhap_core),再重新執行一次 2.若機台重啟時不想執行ota軟件更新,則可以對機台`/opt/zhenhai/ota`底下的腳本改檔名(原始檔名分別為`ota_client.sh`/`ota_download.sh`) Ex: > $ sudo mv ota_client.sh ota_client_off.sh > 完成後如下圖 ![](https://upload.cc/i1/2021/07/13/pTwl6G.png)