You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins共享库流水线在从节点执行yarn命令报tsc不存在

Jenkins共享库流水线Node命令执行异常问题

问题描述

  • 问题持续时长3周,多次尝试修复未解决
  • 本地环境执行yarn typecheck、prettier:check、test、ci等命令全部正常
  • 通过自定义共享库编写的Jenkins流水线,在docker-nodejs-slave从节点执行上述命令全部失败
  • 执行yarn typecheck时的报错信息如下:
+yarn typecheck
yarn run v1.22.17
$ tsc --noEmit
/bin/sh: tsc: command not found
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

故障流水线代码(共享库实现)

def jenkins

DuploPipeline(jenkins) {
  this.jenkins = jenkins
}

jenkins.steps.node('docker-nodejs-slave') {
  jenkins.steps.withEnv(['NODEJS_VERSION=16','NPM_AUTH_KEY = ""','NPM_EMAIL = ""',]) {
    jenkins.steps.stage('Install dependencies') {
      jenkins.steps.sh 'yarn'
    }

    jenkins.steps.stage('Check types') {
      jenkins.steps.checkout jenkins.scm
      jenkins.steps.sh '''
        export PATH=$(npm bin -g):$PATH >> ~/.profile
        echo $PATH
        which yarn
        ls -l /tools/nodejs/node-v16-linux-x64/bin
        yarn typecheck;
      '''
    }
  }
}

已完成排查项

  • 确认PATH环境变量已包含Node.js 16安装路径,PATH输出内容如下:
/tools/nodejs/node-v16-linux-x64/bin:/tools/fortify/Fortify_SCA_and_Apps_19.2.0/bin:/tools/awscli/awscli-1/lib/aws/bin:/tools/awscli/sessionmanagerplugin/bin:/tools/nodejs/node-v16-linux-x64/bin:/tools/fortify/Fortify_SCA_and_Apps_20.1.4/bin:/tools/awscli/awscli-1/lib/aws/bin:/tools/awscli/sessionmanagerplugin/bin:/usr/local/bin:/usr/bin:/tools/awscli/aws-cli-saml:/tools/awscli/aws-cli-saml
  • 检查Node.js bin目录/tools/nodejs/node-v16-linux-x64/bin的文件列表,确认存在node、npm、yarn等可执行文件
  • which yarn命令返回路径为/tools/nodejs/node-v16.14.0-linux-x64/bin/yarn,全局环境配置表面无异常,但报错始终存在

对照验证结果

使用完全相同的从节点编写普通声明式流水线,所有yarn命令可正常运行,样例代码如下:

pipeline {
  agent none
  stages {
    stage('NodeJS Build') {
      agent {
        node { label 'docker-nodejs-slave' }
      }
      steps {
        script {
          env.NPM_AUTH_KEY = ' '
          env.NPM_EMAIL = ' '
          sh '''
            export NODEJS_VERSION=16
            source /etc/profile.d/jenkins.sh
            npm -v
            node -v
            yarn typecheck;
          '''
        }
      }
    }
  }
}

该样例流水线构建成功,执行输出如下:

+npm -v
8.3.1
+node -v
v16.14.0
+yarn typecheck
yarn run v1.22.17
$ tsc --noEmit
Done in 17.01s.
+yarn prettier:check
yarn run v1.22.17
$ prettier -l 'src/**/*.{js,ts,tsx}'
Done in 7.18s.
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // stage
[Pipeline] End of Pipeline
Finished: SUCCESS

待解决问题

两次构建使用完全相同的从节点,目前无法定位基于共享库的API流水线中缺失的配置项,需协助排查问题根因。


内容的提问来源于stack exchange,提问作者Sunil N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 19:54:20