差異處
這裏顯示兩個版本的差異處。
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]] | ||
===== ===== | ===== ===== |