V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Weiney
V2EX  ›  Linux

在 Jenkins 执行 dotnet publish 编译脚本报错, 相同脚本直接在终端执行却正常

  •  
  •   Weiney · 2022-11-02 14:06:01 +08:00 · 1314 次点击
    这是一个创建于 750 天前的主题,其中的信息可能已经有所发展或是发生改变。

    尝试在 Jenkins 内执行.Net 的编译打包操作, 相同的编译命令, 在 Jenkins 的 shell 执行报错, 直接在终端用 Jenkins 的运行账户执行就没有问题.

    错误信息: error CS0227: Unsafe code may only appear if compiling with /unsafe

    查了下这个问题是需要改项目的.csproj, 增加 AllowUnsafeBlocks配置参数解决Compiler Error CS0227

    但是我检查了需要打包的项目, 这个配置是存在的, 我直接在终端执行编译命令也没问题, 单单是在 Jenkins 执行就报错了, 困扰了很久, 希望有大神给点解决思路

    有尝试将 Jenkins Job 执行时的临时文件 /tmp/jenkinsxxx.sh 拷贝出来在终端直接执行, 执行正常没有报错, 问题只出现在 Jenkins

    附上相关环境信息:

    Jenkins 2.361.2 dotnet 5.0.214

    7 条回复    2022-11-04 11:38:29 +08:00
    XXWHCA
        1
    XXWHCA  
       2022-11-02 14:10:46 +08:00
    感觉问题是出在 jenkins 的环境问题,jenkins 的环境和 path 环境配置的并不一样
    Weiney
        2
    Weiney  
    OP
       2022-11-02 14:17:56 +08:00
    @XXWHCA 这个有考虑过, Jenkins 执行 Shell 也是通过 系统创建的 jenkins 账户执行的, 我也尝试过登陆到 jenkins 的账户直接在 Job 的 workspace 执行 Jenkins 生成的脚本, 执行是没问题的.

    而且我有对比两种执行环境的 env, Jenkins 的 Shell 执行环境出了增加了部分 Jenkins 的系统环境变量, 其他的例如 Path 等都是一模一样的
    lqy2575395
        3
    lqy2575395  
       2022-11-02 14:31:42 +08:00
    hao lei ya
    wdwwtzy
        4
    wdwwtzy  
       2022-11-02 14:36:48 +08:00
    msbuild 后面加 /p:AllowUnsafeBlocks=true 参数试试呢
    lm93129
        5
    lm93129  
       2022-11-02 14:37:54 +08:00
    建议吧需要的环境变量在对应的脚本里面重新配置一次,这样在不同的环境中,也可以正常读取到环境变量
    wu00
        6
    wu00  
       2022-11-02 14:39:16 +08:00
    确定你 /tmp/jenkinsxxx.sh build 的目标是 jenkins workspace 下的项目,比如你在终端 build 的是 AllowUnsafeBlocks=true 的 csproj ,而 workspace 下的 csproj 是 false
    Weiney
        7
    Weiney  
    OP
       2022-11-04 11:38:29 +08:00
    解决了家人们,虽然我也不知道什么原因,因为项目是拉取 SVN 进行构建的,出问题时 SVN 的拉取策略是`Use 'svn update' as much as possible, with 'svn revert' before update`,修改为`Always check out a fresh copy`问题就解决了,反正现在能正常跑起来,但是每次构建都去全量拉项目的确实有点耗时
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4992 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:12 · PVG 09:12 · LAX 17:12 · JFK 20:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.