差異處

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

連向這個比對檢視

Both sides previous revision 前次修改
下次修改
前次修改
java:ant:execute_job_with_scp [2017/01/08 13:27]
tony [register the sshd as a service]
java:ant:execute_job_with_scp [2023/06/25 09:48] (目前版本)
行 8: 行 8:
 ===== Thinking ===== ===== Thinking =====
 基於以上需求,我開始思考有哪些做法:​ 基於以上需求,我開始思考有哪些做法:​
-  - 拆解build job: 將步驟拆成多個build job。signtool server為jenkins slave,其中一個job可以將產生的installer丟過去執行。+  - 拆解build job: 將步驟拆成多個build job。signtool server為jenkins slave,其中一個job可以將產生的installer丟過去執行。
   - 不拆解build job: 讓Signtool Server上有類似jenkins slave的程式,可以接收我們的指令,而動作可以在一個build流成內完成。   - 不拆解build job: 讓Signtool Server上有類似jenkins slave的程式,可以接收我們的指令,而動作可以在一個build流成內完成。
 使用第一種做法,我需要refactor build script,並且要考慮installer傳輸或放置在可抓取位置問題。而第二個做法呢?​ 考慮容易且可以傳輸檔案、執行指令的protocol:​ 使用第一種做法,我需要refactor build script,並且要考慮installer傳輸或放置在可抓取位置問題。而第二個做法呢?​ 考慮容易且可以傳輸檔案、執行指令的protocol:​
行 26: 行 26:
 在成功啟動apache sshd後,可以透過putty連線測試一下。 在成功啟動apache sshd後,可以透過putty連線測試一下。
 ==== register the sshd as a service ==== ==== register the sshd as a service ====
 +(此部分需參考後記)\\
 將程式註冊為service有不少方法,最簡單的方法是透過mssm。首先透過mssm執行:​ 將程式註冊為service有不少方法,最簡單的方法是透過mssm。首先透過mssm執行:​
 <code bash> <code bash>
行 32: 行 33:
 接著會出現如下圖畫面,去選擇你sshd.bat:​\\ 接著會出現如下圖畫面,去選擇你sshd.bat:​\\
 (後記: 預設Logon帳號為System Account,但在sign certificate上會有問題,需特別指定帳號。可參考下個章節。)\\ (後記: 預設Logon帳號為System Account,但在sign certificate上會有問題,需特別指定帳號。可參考下個章節。)\\
-{{:​java:​ant:​mssm_register_sshd.png|}}+{{:​java:​ant:​mssm_register_sshd.png|}}\\
 安裝完成後,可以透過sc指令確認並啟動:​ 安裝完成後,可以透過sc指令確認並啟動:​
 <code bash> <code bash>
行 43: 行 44:
   - 可透過putty連線。   - 可透過putty連線。
 ==== run scp with ant ==== ==== run scp with ant ====
-ant scp的task會基於[[https://​sourceforge.net/​projects/​jsch/​|jsch]],請記得先下載並放於ANT_HOME/​lib下。以下為我client side的ant script:+ant scp的task會基於[[https://​sourceforge.net/​projects/​jsch/​|jsch]],請記得先下載並放於ANT_HOME/​lib下。以下為我client side的ant script:
 <code xml> <code xml>
 <project name="​test-sign">​ <project name="​test-sign">​
行 93: 行 94:
 然後改用原本的sshexec,果不其然,成功了:​\\ 然後改用原本的sshexec,果不其然,成功了:​\\
 {{:​java:​ant:​run_signtool_without_psexe.png|}} {{:​java:​ant:​run_signtool_without_psexe.png|}}
 +===== 後記 =====
 +某天正式開始啟用此功能後,發現傳大檔案都會發生問題。經過trace,發現是由於nssm註冊為service後,會一分鐘重新啟動一次:​\\
 +{{:​java:​ant:​nssm_with_sshd_bat_crashed_period.png|}}\\
 +詳細原因我沒有深究,但我把啟動的prcoess由bat改為exe就正常了:​\\
 +{{:​java:​ant:​nssm_install_sshd_with_java_exe.png|}}\\
 +使用的Arguments如下,請改成你自己對應路徑,我是echo bat內容複製貼上的:​
 +<code bash>
 +-server -Xmx512M -Dcom.sun.management.jmxremote ​ -classpath ";​D:​\apache-sshd-1.2.0\scripts\..\lib\bcpg-jdk15on-1.54.jar;​D:​\apache-sshd-1.2.0\scripts\..\lib\bcpkix-jdk15on-1.54.jar;​D:​\apache-sshd-1.2.0\scripts\..\lib\bcprov-jdk15on-1.54.jar;​D:​\apache-sshd-1.2.0\scripts\..\lib\slf4j-api-1.7.16.jar;​D:​\apache-sshd-1.2.0\scripts\..\lib\slf4j-jdk14-1.7.16.jar;​D:​\apache-sshd-1.2.0\scripts\..\lib\sshd-core-1.2.0.jar;​D:​\apache-sshd-1.2.0\scripts\..\lib\tomcat-apr-5.5.23.jar"​ -Dsshd.home="​D:​\apache-sshd-1.2.0\scripts\.."​ org.apache.sshd.server.SshServer
 +</​code>​
 ===== Reference ===== ===== Reference =====
   * [[https://​mina.apache.org/​sshd-project/​|apache sshd]]   * [[https://​mina.apache.org/​sshd-project/​|apache sshd]]
行 101: 行 111:
   * [[https://​technet.microsoft.com/​en-us/​sysinternals/​pxexec.aspx|psexe]]   * [[https://​technet.microsoft.com/​en-us/​sysinternals/​pxexec.aspx|psexe]]
   * [[https://​dotblogs.com.tw/​kevinya/​2016/​02/​16/​153912|遠端執行程式(psexec)]]   * [[https://​dotblogs.com.tw/​kevinya/​2016/​02/​16/​153912|遠端執行程式(psexec)]]
 +  * [[https://​docs.microsoft.com/​zh-tw/​dotnet/​framework/​tools/​signtool-exe|timestamp server]]
  
 =====    ===== =====    =====