【GitLab CI/CD】Day 3 – Runner Server 與 App Server CD 前的設定

Runner 註冊好之後,如果已經寫好 CD 的 PowerShell script,執行的時候可能會遇到跟我一樣的問題。

以下整理了我解決問題有額外做的設定。

【連線問題】

  • Enable-PSRemoting -Force
    • App Server 設定即可
    • 可以先在 App Server 執行 Get-Service WinRM 確認 Status 是否為 running,不是 running 再執行 script。
    • 使用 -Force 會自動打開防火牆 TCP 5985(HTTP)和 TCP 5986(HTTPS)例外。
    • 設定完可以在 Runner Server 執行 Test-WsMan <App Server IP> 確認是否能連線。
    • 我是在 Runner Server 建立連線到 App Server 的時候遇到 error,錯誤訊息如下:
[XXX.XX.X.XXX] Connecting to remote server XXX.XX.X.XXX failed with the following error message : The WinRM
client cannot process the request. Default authentication may be used with an IP address under the following
conditions: the transport is HTTPS or the destination is in the TrustedHosts list, and explicit credentials are
provided. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be
authenticated. For more information on how to set TrustedHosts run the following command: winrm help config. For
more information, see the about_Remote_Troubleshooting Help topic.
  • winrm quickconfig
    • 如果連線還是失敗可以嘗試此 script,進行快速的 WinRM 設定。
  • Set-ExecutionPolicy RemoteSigned
    • 預設是 Restricted,表示只能執行本機的 PowerShell Script,改成 RemoteSigned 表示能執行從遠端來源經過簽署的 script。
    • Get-ExecutionPolicy 能確認目前的策略。
  • Set-Item WSMan:\localhost\Client\TrustedHosts -Value “*”
    • Runner server 設定即可。
    • 如果還是失敗,嘗試這個 script,設定接受所有 ip 的連線。
    • 也可以設定接受特定 ip 連線,多組則用逗號區隔
      Set-Item WSMan:\localhost\Client\TrustedHosts -Value “X.X.X.1, X.X.X.2”
    • Get-Item WSMan:\localhost\Client\TrustedHosts 檢查目前 TrustedHosts 的設定。

【語法支援問題】

  • PowerShell 升級到 5 以上
    • $PSVersionTable.PSVersion 查看 PowerShell 版本。
    • 確定版本太低就可以直接安裝 WMF 5.1,除了 PowerShell 升級,還包含其他功能更新。
    • Runner Server 跟 App Server 都需要升級。
    • 我是在執行 Copy-Item 的時候遇到 error,錯誤訊息如下:

經歷上次 Timeout 問題之後,這次的問題簡直是一塊小蛋糕,至少每次嘗試都看到不一樣的錯誤訊息,代表事情有進展啊!見招拆招即可,沒有上次瘋狂 Oh My God 的心境!
花時間鐵定有,但問題能解決,且沒有卡個3-5天的已經足以讓我笑呵呵了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *