我对GitLab持续集成有0次经验,我需要设置一个作业来在.js文件上运行ESLint。
我已经阅读了GitLab CI和Pipeline文档以及一些Git Hooks,但我仍然不知道如何设置这个,所以任何详细的,从一开始的答案开始就会受到赞赏。
谢谢,
答案 0 :(得分:13)
首先,您需要设置CI并让一些跑步者可用,以便他们可以运行您的持续集成作业。最简单的方法是使用gitlab-ci-multi-runner
(项目为here以及documentation)以及将在docker容器中运行CI作业的docker执行程序。一旦你为你的Gitlab项目配置了一些跑步者add,他们就可以开始工作了。
一旦完成了这项工作,您需要在项目中添加.gitlab-ci.yml
文件。此文件用于描述在持续集成期间需要运行的作业等。以下是一个示例(假设您使用eslint
安装npm
)
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管道应该启动并运行上述步骤。
答案 1 :(得分:0)
如果您想对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
您还可以单独运行linters:
- vendor/ruby/bin/pronto run -r eslint_npm -f gitlab -c origin/dev --exit-code
这一段-f gitlab -c origin/dev
告诉linter者仅检查成对的代码行。
如果您使用pronto-eslint_npm
,并且想检查特定文件夹中的文件,则添加
.pronto_eslint_npm.yml
将包含所需的正则表达式。 (在我的情况下,它具有下一行)
files_to_lint: app\/frontend\/\S*(\.js|\.es6|\.jsx)$