GitLab CI 与 JS Linting

GitLab CI with JS Linting

我在 GitLab 持续集成方面的经验为 0,我需要在 .js 文件上设置 运行 ESLint 作业。

我已经阅读了 GitLab CI 和 Pipeline 文档,以及一些 Git Hooks,但我仍然不知道如何设置它,所以任何详细的并从一开始的答案表示赞赏。

首先,您需要设置 CI 并有一些 运行 可用的人员,以便他们可以 运行 您的持续集成工作。最简单的方法是使用 gitlab-ci-multi-runner(项目是 here along with documentation) along with the docker executor that will run your CI jobs in docker containers. Once you have configured some runners, add 它们到您的 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 管道应该开始并且 运行 上述步骤。

如果您想对您的 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 告诉 linters 只检查更改的代码行。

此外,如果您使用 pronto-eslint_npm 并想检查特定文件夹中的文件,请添加

.pronto_eslint_npm.yml 将包含所需的正则表达式。 (在我的例子中它有下一行)

files_to_lint: app\/frontend\/\S*(\.js|\.es6|\.jsx)$