GitHub Codespacesで開発して、GitHub Actionsにデプロイするときにデプロイ先なのかローカル(とは言わなそう)なのかの判定をして処理を振り分けたい時があります。
コピペ用振り分け
こんな感じで環境変数で振り分けができました。 2023/8/4時点の環境なので仕様が変わる可能性はあります。
if(process.env.CODESPACES){
//Codespacesでの実行
}else if(process.env.GITHUB_ACTIONS){
//GitHub Actionsでの実行
}
それぞれ独自の環境変数
GitHub Codespacesの場合は環境変数に{"CODESPACES": 'ture' }
があり、GitHub Actionsの場合は{"GITHUB_ACIONS": 'ture' }
が入っています。
- Codespaces
- Actions
GitHub Actionsの環境変数
参考までに出力した値を載せておきます。
{
"GITHUB_STATE": "XXXXX",
"STATS_TRP": "true",
"DEPLOYMENT_BASEPATH": "/opt/runner",
"DOTNET_NOLOGO": "1",
"USER": "XXXXX",
"npm_config_version_commit_hooks": "true",
"npm_config_user_agent": "yarn/1.22.19 npm/? node/v20.5.0 linux x64",
"CI": "true",
"npm_config_bin_links": "true",
"RUNNER_ENVIRONMENT": "github-hosted",
"GITHUB_ENV": "XXXXX",
"PIPX_HOME": "/opt/pipx",
"npm_node_execpath": "/opt/hostedtoolcache/node/20.5.0/x64/bin/node",
"npm_config_init_version": "1.0.0",
"JAVA_HOME_8_X64": "/usr/lib/jvm/temurin-8-jdk-amd64",
"SHLVL": "1",
"HOME": "XXXXX",
"RUNNER_TEMP": "XXXXX",
"GITHUB_EVENT_PATH": "XXXXX",
"JAVA_HOME_11_X64": "/usr/lib/jvm/temurin-11-jdk-amd64",
"PIPX_BIN_DIR": "/opt/pipx_bin",
"GITHUB_REPOSITORY_OWNER": "XXXXX",
"npm_config_init_license": "MIT",
"GRADLE_HOME": "/usr/share/gradle-8.2.1",
"ANDROID_NDK_LATEST_HOME": "/usr/local/lib/android/sdk/ndk/25.2.9519653",
"STATS_RDCL": "true",
"GITHUB_RETENTION_DAYS": "90",
"YARN_WRAP_OUTPUT": "false",
"npm_config_version_tag_prefix": "v",
"GITHUB_REPOSITORY_OWNER_ID": "XXXXX",
"POWERSHELL_DISTRIBUTION_CHANNEL": "GitHub-Actions-ubuntu22",
"AZURE_EXTENSION_DIR": "/opt/az/azcliextensions",
"GITHUB_HEAD_REF": "",
"SYSTEMD_EXEC_PID": "662",
"npm_package_dependencies_dotenv": "^16.3.1",
"npm_package_dependencies_dayjs": "^1.11.9",
"npm_package_dependencies__notionhq_client": "^2.2.10",
"GITHUB_GRAPHQL_URL": "https://api.github.com/graphql",
"npm_package_description": "XXXXX",
"GOROOT_1_20_X64": "/opt/hostedtoolcache/go/1.20.6/x64",
"NVM_DIR": "XXXXX",
"npm_package_readmeFilename": "readme.md",
"DOTNET_SKIP_FIRST_TIME_EXPERIENCE": "1",
"JAVA_HOME_17_X64": "/usr/lib/jvm/temurin-17-jdk-amd64",
"ImageVersion": "20230728.3.0",
"RUNNER_OS": "Linux",
"GITHUB_API_URL": "https://api.github.com",
"SWIFT_PATH": "/usr/share/swift/usr/bin",
"RUNNER_USER": "XXXXX",
"STATS_V3PS": "true",
"CHROMEWEBDRIVER": "/usr/local/share/chromedriver-linux64",
"JOURNAL_STREAM": "8:16374",
"GITHUB_WORKFLOW": "60分ごと実行",
"_": "/usr/local/bin/yarn",
"npm_config_registry": "https://registry.yarnpkg.com",
"GITHUB_RUN_ID": "XXXXX",
"GITHUB_REF_TYPE": "branch",
"BOOTSTRAP_HASKELL_NONINTERACTIVE": "1",
"GITHUB_WORKFLOW_SHA": "XXXXX",
"GITHUB_BASE_REF": "",
"ImageOS": "ubuntu22",
"npm_package_scripts_start": "node app.js",
"npm_config_ignore_scripts": "",
"GITHUB_WORKFLOW_REF": "XXXXX",
"PERFLOG_LOCATION_SETTING": "RUNNER_PERFLOG",
"GOROOT_1_18_X64": "/opt/hostedtoolcache/go/1.18.10/x64",
"GITHUB_ACTION_REPOSITORY": "",
"PATH": "XXXXX",
"NODE": "/opt/hostedtoolcache/node/20.5.0/x64/bin/node",
"ANT_HOME": "/usr/share/ant",
"DOTNET_MULTILEVEL_LOOKUP": "0",
"RUNNER_TRACKING_ID": "github_90121ade-274c-493e-9782-752f7e7a40c5",
"INVOCATION_ID": "254f81b7aa8c4cbbb7ffbc34543084ec",
"RUNNER_TOOL_CACHE": "/opt/hostedtoolcache",
"GOROOT_1_19_X64": "/opt/hostedtoolcache/go/1.19.11/x64",
"npm_package_name": "notion2discord",
"GITHUB_ACTION": "__run_2",
"GITHUB_RUN_NUMBER": "XXXXX",
"GITHUB_TRIGGERING_ACTOR": "XXXXX",
"RUNNER_ARCH": "X64",
"XDG_RUNTIME_DIR": "/run/user/1001",
"AGENT_TOOLSDIRECTORY": "/opt/hostedtoolcache",
"LANG": "C.UTF-8",
"VCPKG_INSTALLATION_ROOT": "/usr/local/share/vcpkg",
"CONDA": "/usr/share/miniconda",
"RUNNER_NAME": "GitHub Actions 2",
"XDG_CONFIG_HOME": "XXXXX",
"STATS_VMD": "true",
"GITHUB_REF_NAME": "main",
"GITHUB_REPOSITORY": "XXXXX",
"npm_lifecycle_script": "node app.js",
"npm_package_main": "index.js",
"STATS_UE": "true",
"ANDROID_NDK_ROOT": "/usr/local/lib/android/sdk/ndk/25.2.9519653",
"GITHUB_ACTION_REF": "",
"DEBIAN_FRONTEND": "noninteractive",
"npm_config_version_git_message": "v%s",
"GITHUB_REPOSITORY_ID": "XXXXX",
"GITHUB_ACTIONS": "true",
"STATS_NM": "true",
"npm_lifecycle_event": "start",
"npm_package_version": "1.0.1",
"GITHUB_REF_PROTECTED": "false",
"npm_config_argv": "{\"remain\":[],\"cooked\":[\"run\",\"start\"],\"original\":[\"start\"]}",
"GITHUB_WORKSPACE": "XXXXX",
"ACCEPT_EULA": "Y",
"GITHUB_JOB": "build",
"RUNNER_PERFLOG": "/home/runner/perflog",
"GITHUB_SHA": "XXXXX",
"GITHUB_RUN_ATTEMPT": "2",
"npm_config_version_git_tag": "true",
"npm_config_version_git_sign": "",
"GITHUB_REF": "refs/heads/main",
"GITHUB_ACTOR": "XXXXX",
"ANDROID_SDK_ROOT": "/usr/local/lib/android/sdk",
"npm_package_license": "ISC",
"npm_config_strict_ssl": "true",
"LEIN_HOME": "/usr/local/lib/lein",
"GITHUB_PATH": "XXXXX",
"JAVA_HOME": "/usr/lib/jvm/temurin-11-jdk-amd64",
"PWD": "XXXXX",
"GITHUB_ACTOR_ID": "XXXXX",
"RUNNER_WORKSPACE": "XXXXX",
"npm_execpath": "/usr/local/lib/node_modules/yarn/bin/yarn.js",
"HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS": "3650",
"STATS_TIS": "mining",
"GITHUB_EVENT_NAME": "push",
"HOMEBREW_NO_AUTO_UPDATE": "1",
"ANDROID_HOME": "/usr/local/lib/android/sdk",
"GITHUB_SERVER_URL": "https://github.com",
"GECKOWEBDRIVER": "/usr/local/share/gecko_driver",
"LEIN_JAR": "/usr/local/lib/lein/self-installs/leiningen-2.10.0-standalone.jar",
"GHCUP_INSTALL_BASE_PREFIX": "/usr/local",
"GITHUB_OUTPUT": "XXXXX",
"EDGEWEBDRIVER": "/usr/local/share/edge_driver",
"STATS_EXT": "true",
"npm_config_save_prefix": "^",
"npm_config_ignore_optional": "",
"ANDROID_NDK": "/usr/local/lib/android/sdk/ndk/25.2.9519653",
"SGX_AESM_ADDR": "1",
"CHROME_BIN": "/usr/bin/google-chrome",
"npm_package_scripts_deploy": "git add . && git commit -m 'deploy' && git push origin main",
"SELENIUM_JAR_PATH": "/usr/share/java/selenium-server.jar",
"STATS_EXTP": "https://provjobdsettingscdn.blob.core.windows.net/settings/provjobdsettings-0.5.154/provjobd.data",
"INIT_CWD": "XXXXX",
"ANDROID_NDK_HOME": "/usr/local/lib/android/sdk/ndk/25.2.9519653",
"GITHUB_STEP_SUMMARY": "XXXXX"
}
よもやま
ChatGPTにマスクしてーってお願いしたけどマスクしてくれてるのだろうか