direnvをGitHub Actionsの作業工程に組み込んで.envrcファイルから環境変数を管理できます。 これが特に便利なのは以下の用途です。
.envrcファイルを再利用するためdirenv export ghaコマンドはGitHub Actionsにより要求される形式で環境変数を出力します。 以下は基本的な例です。
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install direnv
run: |
curl -sfL https://direnv.net/install.sh | bash
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Load environment variables
run: |
direnv allow .
direnv export gha > "$GITHUB_ENV"
- name: Run tests
run: |
# .envrcからの環境変数は使えるようになっています
echo "DATABASE_URL=$DATABASE_URL"
make test
GitHub Actionsの作業工程でdirenvをインストールするにはいくつかの方法があります。
- name: Install direnv
run: |
curl -sfL https://direnv.net/install.sh | bash
echo "$HOME/.local/bin" >> $GITHUB_PATH
Ubuntuの実行器上では以下です。
- name: Install direnv
run: sudo apt-get update && sudo apt-get install -y direnv
macOSの実行器では以下です。
- name: Install direnv
run: brew install direnv
- name: Install direnv
run: |
wget -O direnv https://github.com/direnv/direnv/releases/download/v2.34.0/direnv.linux-amd64
chmod +x direnv
sudo mv direnv /usr/local/bin/
direnv allowを使ってください : CIであっても、direnvは.envrcファイルを読み込むための陽な許可を要求します。GitHubの環境ファイルへ上塗りするために> "$GITHUB_ENV"を使っていることを確かめてください。
# 正
direnv export gha > "$GITHUB_ENV"
# 誤――標準出力へ印字されるだけ
direnv export gha
direnvが実行可能でありPATHにあることを確かめてください。
- name: Install and setup direnv
run: |
curl -sfL https://direnv.net/install.sh | bash
echo "$HOME/.local/bin" >> $GITHUB_PATH
# 現在の工程でPATHを強制的に更新
export PATH="$HOME/.local/bin:$PATH"
direnv allow .
direnv export gha >> "$GITHUB_ENV"
問題の不具合に対応する上で、direnvが何をしているのか調べられます。
- name: Debug direnv
run: |
direnv version
direnv status
cat .envrc
direnv allow .
direnv export gha
以下はNode.jsプロジェクトの完全な例です。
name: Node.js CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x, 20.x]
steps:
- uses: actions/checkout@v4
- name: Install direnv
run: |
curl -sfL https://direnv.net/install.sh | bash
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Setup Node.js $
uses: actions/setup-node@v4
with:
node-version: $
- name: Load environment
run: |
# 存在しなければ .envrc を作成
if [ ! -f .envrc ]; then
cat > .envrc <<'EOF'
export NODE_ENV=test
export DATABASE_URL="postgresql://localhost/test_db"
PATH_add node_modules/.bin
EOF
fi
direnv allow .
direnv export gha >> "$GITHUB_ENV"
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- name: Run linter
run: npm run lint
この日本語訳の原文はSetupです。
本文書の使用許諾は原文に従います。 翻訳の著作情報は以下の通りです。
MIT licence - Copyright (C) 2026 @gemmaro