zawatech

Gitlab-CIでビルド時に環境変数CIが原因でエラーになる時の対処法

カテゴリ
CI/CDGitLab
Xこの記事をポストする
この記事をLINEでシェア

GitLabのCI/CDを用いて、GitLab側でビルド&AWSのS3へデプロイをしようとしたときに
以下のようなエラーが起きました。


yarn build

Treating warnings as errors because process.env.CI = true.
Most CI servers set it automatically.
Failed to compile.

Githubの解決方法はいくつか見つけましたが、Gitlabの解決方法が日本の記事で見つからなかったのでまとめました。

TL;DR

build_job:
 stage: build
 variables:
  CI: false
 script:
  - yarn
  - yarn build

原因は環境変数のCIがtrueになっているせいで、ビルド時のwarningがerrorとして処理されるためです。

ジョブのvariablesにCI: falseを定義することで、実行モードがCIと認識されなくなり、ビルドが通ります。

今回の事象と原因

事象

Gitlab-CIを使いgitlab-ci.ymlを元に、Gitlab上でビルドのジョブを実行していた時に、冒頭で書いた以下のエラーが出ました。


yarn build

Treating warnings as errors because process.env.CI = true.
Most CI servers set it automatically.
Failed to compile.

要約すると、

process.env.CI = true であるため、ビルド時に出るwarningをerrorとして扱います。
ほとんどのCIサーバーでは自動的にtrueにセットされています。

とのことです。

原因

今回の自分のケースでは、TypeScriptで書いていてtypescript-eslintという構文エラーの検証パッケージを入れています。

ローカルではany型を多用していたのですが、typescript-eslintでは「any型を使うな!ちゃんと型定義をしろ!」とwarningで警告されていました。

ですがとりあえず出来れば良いの精神だったので、このwarningを無視していたわけですが(ダメ、絶対)
このwarningが、gitlab上でbuildした時にerrorとして認識されてしまった訳です。

解決方法

gitlab-ci.ymlで記述したものがGitlab上で実行されるのですが、その中でCIの環境変数をfalseと定義してあげることでwarningをerrorとして処理させなくしています。

build_job:
 stage: build
 variables:
  CI: false
 script:
  - yarn
  - yarn build

gitlab-ci.ymlの書き方の問題ですが、ジョブのvariablesにCIを定義してあげる必要があるんですね。

(↓GitLab公式ドキュメント 定義済みの環境変数)
https://gitlab-docs.creationline.com/ee/ci/variables/predefined_variables.html

ちなみにgithubの方では以下のような書き方で解決できるようです。

jobs:
  build:
    name: Build
    runs-on: alpine-latest
    steps:
      - name: Checkout
        uses: actions/checkout@master
      - name: Install
        run: yarn
      - name: Build
        run: yarn build
        env:
          CI: false
Xこの記事をポストする
この記事をLINEでシェア
zawa1205

zawa1205

Qiita
GitHub
mail

webフロントエンドエンジニア