GitLab継続的インテグレーションの経験がなく、.jsファイルでESLintを実行するジョブを設定する必要があります。
GitLab CIとパイプラインのドキュメントをいくつかのGitフックと一緒に読んだことがありますが、これを設定する方法がまだわからないため、最初から詳細な回答をいただければ幸いです。
まず、CIをセットアップし、継続的インテグレーションジョブを実行できるようにいくつかのランナーを利用できるようにする必要があります。これを行う最も簡単な方法は、DockerコンテナでCIジョブを実行するDockerエグゼキュータとともにgitlab-ci-multi-runner
(プロジェクトは ここ と ドキュメント )を使用することです。いくつかのランナーを構成したら、 add それらをGitlabプロジェクトに追加して、ジョブを実行できるようにします。
それが処理されたら、プロジェクトに.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パイプラインを開始して、上記の手順を実行する必要があります。
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)$