兩種方式
容器部署
本地部署
?容器部署
可自動實現,服務器重啟,容器自動運行
主要將dockerfile 寫好
?本地部署
1.服務器重啟自動運行代理
參考下面的鏈接,只是把程序換成 java程序,提前確認好需要的jdk版本
Ubuntu20.04 設置開機自啟_ubuntu進bos系統-CSDN博客
2.這種方式重啟后,會發現,編譯 dotnet 程序報錯,錯誤如下:
/usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: The "WarnForInvalidProjectsTask" task failed unexpectedly. [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: System.InvalidOperationException: Required environment variable 'HOME' is not set. Try setting 'DOTNET_CLI_HOME' or 'HOME' and running the operation [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.NuGetEnvironment.GetValueOrThrowMissingEnvVarsDotnet(Func`1 getValue, String home, String dotnetHome) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.NuGetEnvironment.GetHome() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.NuGetEnvironment.<>c.<.cctor>b__20_0() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at System.Lazy`1.CreateValue() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.NuGetEnvironment.GetFolderPath(SpecialFolder folder) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.NuGetEnvironment.GetFolderPath(NuGetFolderPath folder) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.PathUtility.CheckIfFileSystemIsCaseInsensitive() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at System.Lazy`1.CreateValue() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.PathUtility.get_IsFileSystemCaseInsensitive() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.PathUtility.GetStringComparerBasedOnOS() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Build.Tasks.WarnForInvalidProjectsTask.Execute() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Execute() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(TaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] Build FAILED. /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: The "WarnForInvalidProjectsTask" task failed unexpectedly. [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: System.InvalidOperationException: Required environment variable 'HOME' is not set. Try setting 'DOTNET_CLI_HOME' or 'HOME' and running the operation [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.NuGetEnvironment.GetValueOrThrowMissingEnvVarsDotnet(Func`1 getValue, String home, String dotnetHome) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.NuGetEnvironment.GetHome() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.NuGetEnvironment.<>c.<.cctor>b__20_0() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at System.Lazy`1.CreateValue() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.NuGetEnvironment.GetFolderPath(SpecialFolder folder) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.NuGetEnvironment.GetFolderPath(NuGetFolderPath folder) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.PathUtility.CheckIfFileSystemIsCaseInsensitive() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at System.Lazy`1.CreateValue() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.PathUtility.get_IsFileSystemCaseInsensitive() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Common.PathUtility.GetStringComparerBasedOnOS() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at NuGet.Build.Tasks.WarnForInvalidProjectsTask.Execute() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Execute() [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] /usr/share/dotnet/sdk/8.0.404/NuGet.targets(490,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(TaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask) [/home/jenkins/agent/ /workspace/開發服1/FishServer/Server.sln] 0 Warning(s) 1 Error(s) Time Elapsed 00:00:00.75
Build step 'Execute shell' marked build as failure
Skipped archiving because build is not successful
SSH: Current build result is [FAILURE], not going to run.
Performing Post build task...
Match found for : : True
Logical operation result is TRUE
本人,進入這個代理工作目錄,編譯是可以的,但是不知道為什么,代理無法編譯
3.ps查看代理的啟動用戶:
root 835 1.1 1.4 12800956 469660 ? Sl 13:00 1:03 java -jar agent.jar -url ...
確實為root,應該不是權限的問題,查找報錯日志,也未發現 Permission 或?Deny 相關內容
4.1現在只能先看最上面一條錯誤,看看有沒有什么線索
MSB4018:
MSB4018 - MSBuild | Microsoft Learn
再加上?
Required environment variable 'HOME' is not set. Try setting 'DOTNET_CLI_HOME' or 'HOME' and running the operation
?可以確定第一條錯誤應該是找不到這個條件變量
4.2HOME其實就是用戶的家目錄
原來我手動啟動 jenkins代理,使用的是 ubuntu, 所以,HOME=/home/ubuntu
5.3是否可以在 配置 開啟啟動時,配置 環境變量,編輯?/etc/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no# 在這里添加環境變量,可添加多個
Environment=HOME=/home/ubuntu[Install]
WantedBy=multi-user.target
Alias=rc-local.service
從其服務器后,編譯正常