gpt4 book ai didi

node.js - 如何使用 Docker 在我的 CI 中运行 jshint

转载 作者:行者123 更新时间:2023-12-02 19:44:45 25 4
gpt4 key购买 nike

我正在尝试在我们的 Azure 管道中创建一个任务来验证我们的 javascript。
我们有一个 Node 容器,它在启动时执行 npm 安装:

  node:
image: node:12-alpine
user: "node"
working_dir: /home/node/app
environment:
- NODE_ENV=development
volumes:
- ./:/home/node/app
expose:
- "8081"
command: "npm install"
为了执行我的任务,我在 Makefile 中创建了一个 make 命令:
js-check: ## Run Jshint
docker-compose run node npm install && npm run jshint
然后我在构建作业中调用如下:
- script: make js-check
displayName: 'Run JSHint'
在本地,当我调用 make js-check 时,它会执行安装,然后是输出 0 个发现的漏洞的 jshint。但是,当管道远程到达此任务时,它无法声称缺少对/home/node/app 的写访问权限
npm WARN checkPermissions Missing write access to /home/node/app
npm ERR! code EACCES
npm ERR! syscall access
npm ERR! path /home/node/app
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, access '/home/node/app'
npm ERR! [Error: EACCES: permission denied, access '/home/node/app'] {
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'access',
npm ERR! path: '/home/node/app'
npm ERR! }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.

最佳答案

您的 Makefile 运行两个命令; shell 解释 &&在到达 Docker 之前标记。该命令相当于:

js-check: ## Run Jshint
docker-compose run node npm install
npm run jshint # (without Docker)
看起来您的环境已经安装了 Node。您需要解决权限问题(通常 CI 系统会将源代码树作为可以运行命令的用户 check out ),然后您可以使用此原生 Node:
js-install: package.json
npm install
js-check: js-install
npm run jshint
这样做的好处是只依赖普通的Javascript开发工具;你不需要额外的 docker-compose.yml文件或管理员权限只是为了运行您的单元测试。
如果你真的需要在 Docker 中运行它,你可以将它作为两个单独的命令运行,或者将单个容器命令设置为可以解释 && 的 shell。本身:
js-install1: package.json docker-compose.yml
docker-compose run node npm install
js-check1: js-install1
docker-compose run node npm run jshint
js-check2: package.json docker-compose.yml
docker-compose run node \
sh -c "npm install && npm run jshint"

关于node.js - 如何使用 Docker 在我的 CI 中运行 jshint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64245951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com