首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Jenkinsfile中从纱线上运行玩笑从一个分支得到“玩笑:找不到”,从另一个分支得到成功。

在Jenkinsfile中从纱线上运行玩笑从一个分支得到“玩笑:找不到”,从另一个分支得到成功。
EN

Stack Overflow用户
提问于 2018-11-12 18:39:23
回答 1查看 4.1K关注 0票数 5

我是一个非常有经验的Java,我为Java构建了大量的构建自动化工作。我在前端构建方面做得不多,所以我不熟悉大多数前端构建工具中的问题空间。

在一种情况下,我从Jenkins的一个普通管道脚本构建的代码失败了,原因如下:

代码语言:javascript
复制
[xxx-feature%2F...] Running shell script
+ yarn test:coverage -u
yarn run v1.3.2
warning package.json: No license field
$ jest --env=jsdom --coverage -u
/bin/sh: 1: jest: not found

这来自于拉请求分支的构建。同样的管道脚本用于主分支的构建,尽管它执行了一些附加步骤。当主构建到达脚本中的相同点时,它不会失败。

此失败不特定于特定的拉请求分支。在许多拉请求构建中,我都看到了同样的错误。我怀疑他们中的任何一个已经通过了。

我比较过"package.json“文件,它们是相同的。

我还应该看什么来诊断这个问题呢?

更新

我在这件事上没有取得真正的进展。此后,我添加了在“主”构建和“拉请求”构建中运行的其他诊断信息。我认为获得线索的最好机会是在它之前运行"env“。不幸的是,我认为在这些微小的差异中没有任何用处。路径甚至都没有设置。

更新

为了强调不同之处,下面是来自“主”构建的同一个管道脚本的输出:

代码语言:javascript
复制
[...] Running shell script
+ yarn --verbose test:coverage -u
yarn run v1.3.2
warning package.json: No license field
$ jest --env=jsdom --coverage -u
[BABEL] Note: The code generator has deoptimised the styling ...

单元测试在主构建中工作得很好,尽管它在PR构建中没有找到"jest“。

更新

一位评论者认为“纱线安装”在这里可能很重要。该生成不直接运行“纱线安装”,但它运行的“纱线”,运行“纱安装”下的封面。我还注意到,这不是它运行的第一个“纱线”命令。我只是改变了脚本,首先做了,但它没有解决问题。我将在这里包括一个经过大量编辑的输出,显示“纱线安装”到失败的调用。也许这里面会有一些相关的线索。

代码语言:javascript
复制
+ yarn
yarn install v1.3.2
warning package.json: No license field
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@1.2.4: The platform "linux" is incompatible with this module.
info "fsevents@1.2.4" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning " > react-router@4.3.1" has unmet peer dependency "react@>=15".
warning " > enzyme-adapter-react-16@1.7.0" has unmet peer dependency "react@^16.0.0-0".
warning " > enzyme-adapter-react-16@1.7.0" has unmet peer dependency "react-dom@^16.0.0-0".
warning "enzyme-adapter-react-16 > enzyme-adapter-utils@1.9.0" has unmet peer dependency "react@0.13.x || 0.14.x || ^15.0.0-0 || ^16.0.0-0".
warning "enzyme-adapter-react-16 > react-test-renderer@16.6.3" has unmet peer dependency "react@^16.6.3".
warning "jest > jest-cli > jest-environment-jsdom > jsdom > request-promise-native@1.0.5" has unmet peer dependency "request@^2.34".
warning "jest > jest-cli > jest-environment-jsdom > jsdom > request-promise-native > request-promise-core@1.1.1" has unmet peer dependency "request@^2.34".
[4/4] Building fresh packages...
Done in 29.01s.
+ yarn cache clean
yarn cache v1.3.2
warning package.json: No license field
success Cleared cache.
Done in 2.08s.
+ yarn clean:all
yarn run v1.3.2
warning package.json: No license field
$ yarn clean:lib && yarn clean:temp
warning package.json: No license field
$ rimraf ./build
/bin/sh: 1: rimraf: not found
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
+ yarn upgrade --scope @idp
yarn upgrade v1.3.2
warning package.json: No license field
[1/4] Resolving packages...
warning css-loader > cssnano > postcss-merge-rules > browserslist@1.7.7: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
warning css-loader > cssnano > autoprefixer > browserslist@1.7.7: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
warning css-loader > cssnano > postcss-merge-rules > caniuse-api > browserslist@1.7.7: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
warning enzyme > rst-selector-parser > nearley > nomnom@1.6.2: Package no longer supported. Contact support@npmjs.com for more info.
[2/4] Fetching packages...
info fsevents@1.2.4: The platform "linux" is incompatible with this module.
info "fsevents@1.2.4" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning " > react-router@4.3.1" has unmet peer dependency "react@>=15".
warning " > enzyme-adapter-react-16@1.7.0" has unmet peer dependency "react@^16.0.0-0".
warning " > enzyme-adapter-react-16@1.7.0" has unmet peer dependency "react-dom@^16.0.0-0".
warning "enzyme-adapter-react-16 > enzyme-adapter-utils@1.9.0" has unmet peer dependency "react@0.13.x || 0.14.x || ^15.0.0-0 || ^16.0.0-0".
warning "enzyme-adapter-react-16 > react-test-renderer@16.6.3" has unmet peer dependency "react@^16.6.3".
warning "jest > jest-cli > jest-environment-jsdom > jsdom > request-promise-native@1.0.5" has unmet peer dependency "request@^2.34".
warning "jest > jest-cli > jest-environment-jsdom > jsdom > request-promise-native > request-promise-core@1.1.1" has unmet peer dependency "request@^2.34".
[4/4] Rebuilding all packages...
success Saved lockfile.
success Saved 1294 new dependencies.
├─ @types/jest@21.1.10
├─ babel-jest@22.4.4
├─ babel-plugin-jest-hoist@22.4.4
├─ babel-preset-jest@22.4.4
├─ jest-changed-files@22.4.3
├─ jest-cli@22.4.4
├─ jest-config@22.4.4
├─ jest-diff@22.4.3
├─ jest-docblock@22.4.3
├─ jest-environment-jsdom@22.4.3
├─ jest-environment-node@22.4.3
├─ jest-get-type@22.4.3
├─ jest-haste-map@22.4.3
├─ jest-jasmine2@22.4.4
├─ jest-leak-detector@22.4.3
├─ jest-matcher-utils@22.4.3
├─ jest-message-util@22.4.3
├─ jest-mock@22.4.3
├─ jest-regex-util@22.4.3
├─ jest-resolve-dependencies@22.4.3
├─ jest-resolve@22.4.3
├─ jest-runner@22.4.4
├─ jest-runtime@22.4.4
├─ jest-serializer@22.4.3
├─ jest-snapshot@22.4.3
├─ jest-util@22.4.3
├─ jest-validate@22.4.4
├─ jest-worker@22.4.3
├─ jest@22.4.4
├─ ts-jest@22.4.6
Done in 49.89s.
+ yarn upgrade --scope @idse
yarn upgrade v1.3.2
warning package.json: No license field
[1/4] Resolving packages...
warning css-loader > cssnano > postcss-merge-rules > browserslist@1.7.7: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
warning css-loader > cssnano > postcss-merge-rules > caniuse-api > browserslist@1.7.7: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
warning css-loader > cssnano > autoprefixer > browserslist@1.7.7: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
warning enzyme > rst-selector-parser > nearley > nomnom@1.6.2: Package no longer supported. Contact support@npmjs.com for more info.
[2/4] Fetching packages...
info fsevents@1.2.4: The platform "linux" is incompatible with this module.
info "fsevents@1.2.4" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning " > react-router@4.3.1" has unmet peer dependency "react@>=15".
warning " > enzyme-adapter-react-16@1.7.0" has unmet peer dependency "react@^16.0.0-0".
warning " > enzyme-adapter-react-16@1.7.0" has unmet peer dependency "react-dom@^16.0.0-0".
warning "enzyme-adapter-react-16 > enzyme-adapter-utils@1.9.0" has unmet peer dependency "react@0.13.x || 0.14.x || ^15.0.0-0 || ^16.0.0-0".
warning "enzyme-adapter-react-16 > react-test-renderer@16.6.3" has unmet peer dependency "react@^16.6.3".
warning "jest > jest-cli > jest-environment-jsdom > jsdom > request-promise-native@1.0.5" has unmet peer dependency "request@^2.34".
warning "jest > jest-cli > jest-environment-jsdom > jsdom > request-promise-native > request-promise-core@1.1.1" has unmet peer dependency "request@^2.34".
[4/4] Rebuilding all packages...
success Saved lockfile.
success Saved 1294 new dependencies.
├─ @types/jest@21.1.10
├─ babel-jest@22.4.4
├─ babel-plugin-jest-hoist@22.4.4
├─ babel-preset-jest@22.4.4
├─ jest-changed-files@22.4.3
├─ jest-cli@22.4.4
├─ jest-config@22.4.4
├─ jest-diff@22.4.3
├─ jest-docblock@22.4.3
├─ jest-environment-jsdom@22.4.3
├─ jest-environment-node@22.4.3
├─ jest-get-type@22.4.3
├─ jest-haste-map@22.4.3
├─ jest-jasmine2@22.4.4
├─ jest-leak-detector@22.4.3
├─ jest-matcher-utils@22.4.3
├─ jest-message-util@22.4.3
├─ jest-mock@22.4.3
├─ jest-regex-util@22.4.3
├─ jest-resolve-dependencies@22.4.3
├─ jest-resolve@22.4.3
├─ jest-runner@22.4.4
├─ jest-runtime@22.4.4
├─ jest-serializer@22.4.3
├─ jest-snapshot@22.4.3
├─ jest-util@22.4.3
├─ jest-validate@22.4.4
├─ jest-worker@22.4.3
├─ jest@22.4.4
├─ ts-jest@22.4.6
Done in 34.56s.
+ yarn --verbose test:coverage -u
yarn run v1.3.2
$ jest --env=jsdom --coverage -u
/bin/sh: 1: jest: not found
verbose 0.383 Error: Command failed with exit code 127.
    at /usr/share/yarn/lib/cli.js:35620:15
    at Generator.throw (<anonymous>)
    at step (/usr/share/yarn/lib/cli.js:92:30)
    at /usr/share/yarn/lib/cli.js:105:13
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
error Command failed with exit code 127.

更新

一位评论者要求我展示“node_node/..bin”的内容。我添加了该内容,以及该清单中引用的另一个目录的内容。

代码语言:javascript
复制
+ ls -lt node_modules/.bin
total 0
lrwxrwxrwx 1 81050 20059 18 Dec  3 17:25 which -> ../which/bin/which
lrwxrwxrwx 1 81050 20059 47 Dec  3 17:25 webpack-dev-server -> ../webpack-dev-server/bin/webpack-dev-server.js
...
lrwxrwxrwx 1 81050 20059 35 Dec  3 17:25 jest-runtime -> ../jest-runtime/bin/jest-runtime.js
lrwxrwxrwx 1 81050 20059 23 Dec  3 17:25 jest -> ../jest-cli/bin/jest.js
...
+ ls -lt node_modules/jest-cli/bin
total 4
-rwxr-xr-x 1 81050 20059 416 Dec  3 17:25 jest.js

我看不出有什么不对劲。

更新

我刚找到了解决办法,但我还是不明白根本原因是什么。

我已经挣扎了将近一个月,没有决心,然后在周五,我注意到,两个相同的拉请求已经通过了这个。在该PR的构建之后运行的构建继续失败。我重新创建了一个已经通过的构建,然后它又通过了。PR的变化并没有什么显著的变化。唯一与所有其他PRs不同的是分支名称的形式。

本项目中几乎所有其他分支都采用了“feature/.”的形式。或“错误/.”或“释放/.”。传递者使用的名称中没有"/“。我在构建脚本中有一种机制,通过将分支名称附加到工作区目录来确保PR构建的工作区是唯一的,但是由于我不希望"feature/“表示目录级别,所以我首先对分支名进行URL编码,从而生成”Feature%2F.“。我在基于Java的构建中这样做,这是非常好的。

由于我非常肯定这一点,我知道这在某种程度上导致了问题,所以我更改了脚本,而只是将"/“替换为"-”。这个解决了问题。我不知道为什么。

EN

回答 1

Stack Overflow用户

发布于 2020-02-11 12:10:18

看起来这确实与包含特殊字符的路径名有关。您可以将workspacedir更改为其他内容,这将解决问题。

代码语言:javascript
复制
workspaceDir = "workspace/${env.JOB_NAME}/${env.BRANCH_NAME}-${env.BUILD_ID}".replace('%2F', '_').replace(' ', '_')
ws(workspaceDir) {
    ...
}

如果您正在管道内使用docker,也可以修复此问题--我将workspacedir安装到另一个文件夹。

代码语言:javascript
复制
def workspace = pwd()
docker.image('node:12.15.0').inside("-v ${workspace}:/app"){
   sh """
      cd /app
      npm install
      npm run test
   """
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53268194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档