差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

java:ant:execute_job_with_scp [2017/01/08 12:13]
tony [register the sshd as a service]
java:ant:execute_job_with_scp [2023/06/25 09:48]
行 1: 行 1:
-{{tag>​jenkins ant cygwin signtool}} +
-====== 透過SCP執行某些跨平台工作 ====== +
-===== Problem ===== +
-某天我們有了要在exe檔上sign certificate的需求,然而我們的build server是在linux上的jenkins。整理一下目前狀況:​ +
-  * Signtool Server: Windows Server 2003,32位元。 +
-  * Build Server: CentOS6,64位元。 +
-  * 簡化後的Build Process: 從版控系統checkout code後,開始編譯,產生各專案artifacts;透過installanywhre產生出installer;計算CRC code,並包成一個壓縮檔。 +
-===== Thinking ===== +
-基於以上需求,我開始思考有哪些做法:​ +
-  - 拆解build job: 將步驟拆成多個build job,透過jenkins slave將產生的installer丟到Signtool Server上執行。 +
-  - 不拆解build job: 讓Signtool Server上有類似jenkins slave的程式,可以接收我們的指令,而動作可以在ant script內完成。 +
-使用第一種做法,我需要refactor build script,並且要考慮installer放置可抓取位置的問題。而第二個做法呢?​ 考慮可以傳輸檔案、執行指令:​ +
-  - 透過ssh server: 可使用cygwin或其它現有的ssh server。 +
-  - 透過rest api: 可基於[[https://​spring.io/​guides/​gs/​rest-service/​|sprint restapi]]去實作。 +
-為了簡單也不需要額外實作,我選擇了ssh server的方式。 +
-===== How to? ===== +
-==== select ssh server - apache sshd ==== +
-在ssh server的選擇上,首先我使用了cygwin。在Signtool Server上安裝cygwin後,首先遇到類似以下的訊息 +
-<​code>​ +
-could not be located in the dynamic link library KERNEL32.dll +
-</​code>​ +
-嘗試過不同版本的cygwin依然無法解決,接著改用[[https://​mina.apache.org/​sshd-project/​|apache sshd]]。我使用的是1.2.0的版本,我遇到以下問題:​ +
-  - sshd.bat找不到main class: 從source code得知,bat launch的class名稱需改為org.apache.sshd.server.SshServer。 +
-  - 連線後該如何登入:​ 從source code得知,只要給一個帳號與密碼是相同即可登入。如果有疑慮就需要自己override PasswordAuthenticator,可以參考[[https://​mina.apache.org/​sshd-project/​configuring_security.html|link]]。 +
-  - 執行發生找不到jvm.dll的問題:​ 由於apache sshd必須使用java7以上,且windows 2003不支援java8,因此我使用java 7。而這個問題只要將jre7/​bin/​client複製到jre7/​bin/​server後,即可解決。 +
-在成功啟動apache sshd後,可以透過putty連線測試一下。 +
-==== register the sshd as a service ==== +
-將程式註冊為service有不少方法,最簡單的方法是透過mssm。首先透過mssm執行:​ +
-<code bash> +
-mssm.exe install apache-sshd +
-</​code>​ +
-接著會出現如下圖畫面,去選擇你sshd.bat:​\\ +
-{{:​java:​ant:​mssm_register_sshd.png|}} +
-安裝完成後,可以透過sc指令確認並啟動:​ +
-<code bash> +
-sc query apache-sshd +
-sc start apache-sshd +
-</​code>​ +
-{{:​java:​ant:​sc_query_apache_sshd.png|}}\\ +
-確認沒問題後,請記得再次確認:​ +
-  - 重新啟動後會自動啟動。 +
-  - 可透過putty連線。 +
-===== Reference ===== +
-  * [[https://​mina.apache.org/​sshd-project/​|apache sshd]] +
-  * [[http://​stackoverflow.com/​questions/​3582108/​create-windows-service-from-executable|NSSM - the Non-Sucking Service Manager]] +
-  * [[http://​stackoverflow.com/​questions/​18123144/​missing-server-jvm-java-jre7-bin-server-jvm-dll|missing-server-jvm-java-jre7-bin-server-jvm-dll]]+