web-dev-qa-db-ja.com

JSリンティングを使用したGitLabCI

GitLab継続的インテグレーションの経験がなく、.jsファイルでESLintを実行するジョブを設定する必要があります。

GitLab CIとパイプラインのドキュメントをいくつかのGitフックと一緒に読んだことがありますが、これを設定する方法がまだわからないため、最初から詳細な回答をいただければ幸いです。

8
KadoBOT

まず、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パイプラインを開始して、上記の手順を実行する必要があります。

14
Jawad

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)$
1
Kate Kasinskaya