GitLab CI与JS Linting

11

我对GitLab持续集成没有任何经验,需要设置一个任务来运行.eslint检查.js文件。

我已经阅读了GitLab CI和Pipeline文档以及一些Git Hooks,但我仍然不知道如何设置它,所以任何详细的、从最基础开始的答案都将得到赞赏。


首先要形成一个合适的答案,需要先问几个问题:您是否已经设置了运行器?如果是,那么它是哪种类型? - Stefan van Gastel
不,我不是@StefanvanGastel。 - KadoBOT
2个回答

23

首先,您需要设置您的CI并准备一些运行器以便它们可以运行您的持续集成作业。这方面最简单的方法是使用 gitlab-ci-multi-runner(项目位于此处,还有文档),以及Docker执行程序,该程序将在Docker容器中运行您的CI作业。一旦您配置了一些运行器,请添加它们到您的GitLab项目中,以便它们可用于运行作业。

完成上述步骤之后,您需要向您的项目添加一个.gitlab-ci.yml文件。该文件用于描述需要在持续集成等过程中运行的作业。以下是一个示例(假设您使用npm安装了eslint

image: node:latest

stages:
  - lint

eslint:
  stage: lint
  script:
    # Install ESLint in this docker container
    - npm install -g eslint
    # Configure ESLint (will read your .eslintrc file)
    - eslint --init
    # Run ESLint
    - eslint <your_js_file>

将您的.gitlab-ci.yml文件添加,提交并推送更改。 CI流水线应该启动并运行上述步骤。


如果需要检查需要其他 linter 或 validator 的内容,您也可以使用 Ubuntu 镜像,然后像这样安装 npm(抱歉,在注释中没有格式):image: ubuntu:artful before_script: - apt-get update -qq && apt-get install -y -qq npm - ywarnier
除此之外,您需要知道的是,您需要一个Gitlab CI Runner(这是一个可以通过Gitlab安装和运行CI Runner的服务器)。 - Basav
如何在所有文件上运行eslint? - Žilvinas
9
eslint --init 命令不会读取现有的 eslintrc 文件,而是通过交互式向导创建它,因此这不应该成为流程的一部分。 - x539
答案很好,但是当你处理数百个文件时,<你的js文件>并不实用。有没有更好的解决方案? - staminna
4
eslint . 会递归地对当前目录中的所有文件运行 eslint。 - AlexM

1
如果您希望在PR中添加评论,这里有一个使用eslint和pronto的示例。(我们有Ruby应用程序,因此我们也检查Ruby代码风格)
image: 'circleci/ruby:2.5.1-node-browsers'

codestyle:
  script:
  - sudo apt -y install cmake
  # install eslint dependencies
  - sudo npm install -g eslint
  - sudo npm install -g eslint-plugin-babel
  - sudo npm install -g eslint-plugin-react
  - sudo npm install -g eslint-plugin-import
  - sudo npm install -g babel-eslint
  - sudo npm install -g eslint-config-airbnb
  - sudo npm install -g eslint-plugin-jsx-a11y
  # install pronto runners
  - gem install pronto --no-ri
  - gem install pronto-rubocop --no-ri
  - gem install rubocop-rspec --no-ri
  - gem install pronto-eslint_npm --no-ri
  # run linters
  - vendor/ruby/bin/pronto run -f gitlab -c origin/dev --exit-code

您还可以单独运行代码检查工具:
- vendor/ruby/bin/pronto run -r eslint_npm -f gitlab -c origin/dev --exit-code 这段代码 "-f gitlab -c origin/dev" 告诉代码检查工具只检查更改的代码行。
另外,如果您使用 "pronto-eslint_npm" 并想要检查特定文件夹中的文件,请添加 ".pronto_eslint_npm.yml" 文件,其中包含所需的正则表达式。(在我的情况下,它有下一行)
files_to_lint: app\/frontend\/\S*(\.js|\.es6|\.jsx)$

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接