設定 Octopus Server 時 ServerNode 建立失敗

前言

在上一篇w4560000 - Octopus Deploy [2] 設定 Octopus Server的設定過程中,發現一個地雷在此紀錄一下

異常狀況描述

  1. 所有任務都在queue中 不執行

  2. 切至 Configuration-Nodes 找不到Node
    http://localhost/app#/Spaces-1/configuration/nodes

  3. 切至 Configuration-Diagnostics 查看 Log
    http://localhost/app#/Spaces-1/configuration/diagnostics
    發現在對Octopus Server node 執行healthCheck會發生錯誤

  4. 查看DB Table OctopusServerNode 沒有資料

    sqlcmd -S localhost\SQLEXPRESS -E -y 30 -Y 30
    SELECT * FROM [OctopusDeploy-OctopusServer].[dbo].[OctopusServerNode]
    GO
    

發生問題原因

目前建置錯誤的deviceName = octopus-deploy-server-1

查看
Install script 第一行 發現建立的serverNodeName會抓deviceName

“C:\Program Files\Octopus Deploy\Octopus\Octopus.Server.exe” create-instance –instance “OctopusServer” –config “C:\Octopus\OctopusServer.config” –serverNodeName “OCTOPUS-DEPLOY-“

驗證錯誤原因

測試是否為 deviceName字數上限影響

修改deviceName = aaabbbcccdddeeefffggghhh

Install script 第一行 serverNodeName = AAABBBCCCDDDEEE (只取15個deviceName字元)
"C:\Program Files\Octopus Deploy\Octopus\Octopus.Server.exe" create-instance --instance "OctopusServer" --config "C:\Octopus\OctopusServer.config" --serverNodeName "AAABBBCCCDDDEEE"

查看 DB Table Node 資料正常

不是deviceName字數上限影響

測試是否為 deviceName 含有 dash字元(-)影響

修改deviceName = aa–b-c-c–deeefffggghhh
Install script 第一行 serverNodeName = AA–B-C-C–DEEE
"C:\Program Files\Octopus Deploy\Octopus\Octopus.Server.exe" create-instance --instance "OctopusServer" --config "C:\Octopus\OctopusServer.config" --serverNodeName "AA--B-C-C--DEEE"

查看 DB Table Node 資料正常

不是deviceName 含有 dash字元(-)影響

測試是否為 deviceName 結尾 dash字元(-)影響

修改deviceName = aaabbbcccdddee-fffggghhh
Install script 第一行 serverNodeName = AAABBBCCCDDDEE-
"C:\Program Files\Octopus Deploy\Octopus\Octopus.Server.exe" create-instance --instance "OctopusServer" --config "C:\Octopus\OctopusServer.config" --serverNodeName "AAABBBCCCDDDEE-"

查看 DB Table Node 發現沒有資料

查看 Configuration-Diagnostics Log 發現能重現錯誤
http://localhost/app#/Spaces-1/configuration/diagnostics

重現錯誤

結論

Octopus Deploy 建置 Self-hosted Octopus Server時,會抓取當前的 deviceName(hostName) 當作 ServerNodeName 且自動轉為大寫

而 ServerNodeName 有15個字數上限且最後一位字元不能為dash字元(-) 🔥🔥🔥


轉載請註明來源,若有任何錯誤或表達不清楚的地方,歡迎在下方評論區留言,也可以來信至 leozheng0621@gmail.com
如果文章對您有幫助,歡迎斗內(donate),請我喝杯咖啡

斗內💰

×

歡迎斗內

github