Jenkins 代理自动化-dotnet程序

两种方式

容器部署

本地部署

容器部署

可自动实现,服务器重启,容器自动运行

主要将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查看代理的启动用户:

bash 复制代码
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

bash 复制代码
[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

从其服务器后,编译正常

相关推荐
may_一一7 分钟前
Jenkins插件下载慢解决办法
运维·jenkins
爱的叹息8 分钟前
AI应用开发平台 和 通用自动化工作流工具 的详细对比,涵盖定义、核心功能、典型工具、适用场景及优缺点分析
运维·人工智能·自动化
Pseudo…1 小时前
linux Shell编程之函数与数组(四)
linux·运维·服务器
杰瑞学AI1 小时前
Devops之GitOps:什么是Gitops,以及它有什么优势
运维·git·云原生·kubernetes·devops·argocd
写代码的小阿帆1 小时前
内网Windows挂载目录到公网服务器
运维·服务器
日日行不惧千万里1 小时前
远程登录一个Linux系统,如何用命令快速知道该系统属于Linux的哪个发行版,以及该服务器的各种配置参数,运行状态?
linux·运维·服务器
F36_9_1 小时前
质量问题频发,如何提升源头把控
大数据·运维
云原生应用市场2 小时前
一键私有化部署Dify,轻松搞定 AI 智能客服机器人
运维·前端·后端
飞翔中文网3 小时前
CentOS下,Xftp中文文件名乱码的处理方式
linux·运维·centos
AI服务老曹3 小时前
优化运营、降低成本、提高服务质量的智慧物流开源了
运维·人工智能·学习·开源·能源