# 使用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

完成後如下圖所示.

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
完成後如下圖所示.

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

完成後如上圖所示.
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
完成後如下圖所示.

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
完成後如下圖所示.

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
完成後如下圖所示.

2.4 確認軟件是否均已上傳
2.4.1進入
> https://update.aizhenhai.com/

帳號/密碼請洽相關人員
2.4.2 登入後可以看見3個project表示core/skin/manager,並可以個別點進去看到你剛剛上傳的檔案是否有成功




### 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
>
完成後如下圖
