[メモ] CircleCI_環境変数一覧（1.0&2.0）

![default img tag.png](https://qiita-image-store.s3.amazonaws.com/0/95804/3ef8a6c8-51f0-fc65-2ae6-9150937bef8a.png)

# きっかけ
CircleCIが1.0を廃止するので
2.0に移行に迫られ、ふと思って
1.0と2.0で使われる変数の一覧をまとめてみました。

# 参考
## CircleCI 1.0 to 2.0
https://circleci.com/blog/sunsetting-1-0/
https://circleci.com/docs/2.0/migrating-from-1-2/

## Environment Variables
| CircleCI | リンク |
|:-----------:|:------------|
| 1.0 | https://circleci.com/docs/1.0/environment-variables/ |
| 2.0 | https://circleci.com/docs/2.0/env-vars/ |


## react-native

パッと調べた感じ、`react-native`が一番
CircleCI2.0を使い込んでいそうだったので、そちらを参考にした。

| ツール | リンク |
|:-----------|:------------|
| Github | https://github.com/facebook/react-native |
| Circle | https://circleci.com/gh/facebook/react-native |

# CircleCIの例（react-native）

https://circleci.com/gh/facebook/react-native/39404

```
## Spin up Environment

Build-agent version 0.0.4775-4387c40 (2018-03-26T10:29:11+0000)
Starting container circleci/node:6
  image is cached as circleci/node:6, but refreshing...
6: Pulling from circleci/node
Digest: sha256:6c64433cd80bb347d5d95fada05743163eacbae3ceebeebfe81ae142d26bc57e
Status: Image is up to date for circleci/node:6
  using image circleci/node@sha256:6c64433cd80bb347d5d95fada05743163eacbae3ceebeebfe81ae142d26bc57e

Using build environment variables:
  BASH_ENV=/tmp/.bash_env-5ac535f77136c80007d1e06e-0-build
  CI=true
  CIRCLECI=true
  CIRCLE_BRANCH=master
  CIRCLE_BUILD_NUM=39404
  CIRCLE_BUILD_URL=https://circleci.com/gh/facebook/react-native/39404
  CIRCLE_COMPARE_URL=https://github.com/facebook/react-native/compare/3cd2b4342653...c787e0e25216
  CIRCLE_JOB=test_javascript_node6_compatibility
  CIRCLE_NODE_INDEX=0
  CIRCLE_NODE_TOTAL=1
  CIRCLE_PREVIOUS_BUILD_NUM=39403
  CIRCLE_PROJECT_REPONAME=react-native
  CIRCLE_PROJECT_USERNAME=facebook
  CIRCLE_PULL_REQUEST=https://github.com/Htc2ubusiness/react-native/pull/1
  CIRCLE_PULL_REQUESTS=https://github.com/Htc2ubusiness/react-native/pull/1
  CIRCLE_REPOSITORY_URL=git@github.com:facebook/react-native.git
  CIRCLE_SHA1=c787e0e25216d04a76ce2e3c0c88218ab9db3545
  CIRCLE_SHELL_ENV=/tmp/.bash_env-5ac535f77136c80007d1e06e-0-build
  CIRCLE_STAGE=test_javascript_node6_compatibility
  CIRCLE_USERNAME=facebook-github-bot
  CIRCLE_WORKFLOW_CONCURRENCY_MAP={}
  CIRCLE_WORKFLOW_ID=66a7325d-f222-41d5-a257-cc83bc8e6843
  CIRCLE_WORKFLOW_JOB_ID=e352e0cb-cb6b-4d1a-a631-c6cf13a575ae
  CIRCLE_WORKFLOW_UPSTREAM_JOB_IDS=
  CIRCLE_WORKFLOW_WORKSPACE_ID=66a7325d-f222-41d5-a257-cc83bc8e6843
  CIRCLE_WORKING_DIRECTORY=~/react-native
  CI_PULL_REQUEST=https://github.com/Htc2ubusiness/react-native/pull/1
  CI_PULL_REQUESTS=https://github.com/Htc2ubusiness/react-native/pull/1
```

# CircleCI変数一覧

| # | 変数名 | 2.0 | 1.0 | 説明 | 値 |
|:-----------:|:------------|:------------:|:------------:|:------------|:------------|
| 1 | CI | ◯ | ◯ | 現在の環境がCI環境であるかどうか | true |
| 2 | CIRCLECI | ◯ | ◯ | 現在の環境がCI環境であるかどうか | true |
| 3 | CIRCLE_BRANCH | ◯ | ◯ | build中のGitブランチの名前 | master |
| 4 | CIRCLE_NODE_TOTAL | ◯ | ◯ | build instancesの合計 | 1 |
| 5 | CIRCLE_NODE_INDEX | ◯ | ◯ | build instancesの番号 | 0 （CIRCLECI_NODE_TOTAL - 1） |
| 6 | CIRCLE_BUILD_NUM | ◯ | ◯ | CircleCIのbuild番号 | 39404 |
| 7 | CIRCLE_PREVIOUS_BUILD_NUM | ◯ | ◯ | 対象ブランチの過去のbuild回数 | 39403 |
| 8 | CIRCLE_BUILD_URL | ◯ | ◯ | buildのURL | https://circleci.com/gh/facebook/react-native/39404 |
| 9 | CIRCLE_SHA1 | ◯ | ◯ | buildの最後のSHA1ハッシュ | c787e0e25216d04a76ce2e3c0c88218ab9db3545 |
| 10 | CIRCLE_SHELL_ENV | ◯ | ？ | CircleCIのshellの環境変数のパス（たぶん。。） | /tmp/.bash_env-5ac535f77136c80007d1e06e-0-build |
| 11 | CIRCLE_USERNAME | ◯ | ◯ | buildを実行したユーザー | facebook-github-bot |
| 12 | CIRCLE_JOB | ◯ | × | ジョブ名 | test_javascript_node6_compatibility <br></br><br></br> (参考) https://circleci.com/docs/2.0/jobs-steps/#jobs-overview　 |
| 12 | CIRCLE_WORKING_DIRECTORY | ◯ | × | ジョブの作業ディレクトリ | ~/react-native |
| 13 | CIRCLE_COMPARE_URL | ◯ | ◯ | 前回のbuildからの差分を表すURL | https://github.com/facebook/react-native/compare/3cd2b4342653...c787e0e25216 |
| 14 | CIRCLE_REPOSITORY_URL | ◯ | ◯ | 対象リポジトリのURL | git@github.com:facebook/react-native.git |
| 15 | CIRCLE_PR_NUMBER （注1） | △ | △ | PR番号 | ※正常に機能しない場合がある。要確認。 <br></br><br></br> (参考) https://github.com/circleci/circleci-docs/pull/2107 |
| 16 | CIRCLE_PR_REPONAME （注1） | △ | △ | PRが行われたリポジトリ名 | ※正常に機能しない場合がある。要確認。 <br></br><br></br> (参考) https://github.com/circleci/circleci-docs/issues/2060 |
| 17 | CIRCLE_PR_USERNAME （注1） | △ | △ | PRを行ったユーザー名 | ※正常に機能しない場合がある。要確認。 <br></br><br></br> (参考) https://github.com/circleci/circleci-docs/issues/2060 |
| 18 | CIRCLE_PULL_REQUESTS | ◯ | × | buildに含まれるPRのURLのカンマ区切りのリスト | https://github.com/Htc2ubusiness/react-native/pull/1 |
| 19 | CIRCLE_PULL_REQUEST | ◯ | × | buildに含まれるPRのURLのどれか1つ（ランダム） | https://github.com/Htc2ubusiness/react-native/pull/1 |
| 20 | CI_PULL_REQUESTS | ◯ | ◯ | CIRCLE_PULL_REQUESTSと同じ。（1.0との下位互換性） | https://github.com/Htc2ubusiness/react-native/pull/1 |
| 21 | CI_PULL_REQUEST | ◯ | ◯ | CIRCLE_PULL_REQUESTと同じ。（1.0との下位互換性） | https://github.com/Htc2ubusiness/react-native/pull/1 |
| 22 | CIRCLE_TAG （注1） | ◯ | ◯ | build/test対象となるgit tag名 | - |
| 23 | CIRCLE_PROJECT_USERNAME | ◯ | ◯ | 対象プロジェクトのユーザー名or組織名 | facebook <br></br><br></br> cf. "facebook" in circleci.com/gh/facebook/react-native/39404. |
| 24 | CIRCLE_PROJECT_REPONAME | ◯ | ◯ | 対象プロジェクトのリポジトリ名 | react-native <br></br><br></br> cf. "react-native" in circleci.com/gh/facebook/react-native/39404. |
| 25 | CIRCLE_INTERNAL_TASK_DATA （注1） | ◯ | × | テストタイミングのデータが見つかるディレクトリ | - |
| 26 | CIRCLE_STAGE | ◯ | × | 実行中のジョブ | test_javascript_node6_compatibility |
| 26 | CIRCLE_WORKFLOW_CONCURRENCY_MAP | ◯ | × | 実行中のジョブ | test_javascript_node6_compatibility |
| 26 | CIRCLE_WORKFLOW_ID | ◯ | × | 現在実行しているジョブのワークフローのID | 66a7325d-f222-41d5-a257-cc83bc8e6843 |
| 26 | CIRCLE_WORKFLOW_JOB_ID | ◯ | × | 現在実行しているジョブのワークフローにおけるジョブID | e352e0cb-cb6b-4d1a-a631-c6cf13a575ae |
| 26 | CIRCLE_WORKFLOW_UPSTREAM_JOB_IDS | ◯ | × | 現在実行しているジョブのアップストリームID | - |
| 26 | CIRCLE_WORKFLOW_WORKSPACE_ID | ◯ | × | 現在実行しているジョブのワークスペースID | 66a7325d-f222-41d5-a257-cc83bc8e6843 |
| 27 | CIRCLE_ARTIFACTS （注1） | × | ◯ | build時の成果物が保存されるディレクトリ | /tmp/circle-artifacts.KcKmZNY |
| 28 | CIRCLE_TEST_REPORTS （注1） | × | ◯ | JUnitのメタデータとして処理されるディレクトリ | 1.0: /tmp/circle-junit.NF4bElV |
| 29 | CIRCLE_BUILD_IMAGE （注1） | × | ◯ | 実行されるbuild image | 1.0: ubuntu-14.04 |
| 30 | HOME （注1） | ◯ | ◯ | 省略 | 1.0: "/home/ubuntu" |
| 31 | DISPLAY （注1） | ？ | ◯ | 省略 | 1.0: ":99" |
| 32 | LANG （注1） | ？ | ◯ | 省略 | 1.0: "en_US.UTF-8" |
| 33 | PATH （注1） | ？ | ◯ | 省略 | 1.0: Includes "/home/ubuntu/bin" |

（注1）：「CircleCIの例（react-native）」にはない変数

# 所感
1. 新規追加された変数はあまり知見がないので、ググってもでてこない。
2. 2.0から、workflowやworkspace,upstreamの考え方が増えたので、若干難しい？
3. 「△」のやつとか使えるのか、使えないのかわからない。

まぁ、実際に、実行してみて、どういうものなのかわかったら、ちゃんと書こうと思う。