ローカル環境では全部通るのに GitHub Actions で何故かタイムアウトしてしまう Jest テストに困り果ててたら、よく見るとエラーメッセージが出てる!!!!
MongooseServerSelectionError: Error: connect ECONNREFUSED 127.0.0.1:27017
ありがとう、console.log()
。あまりに上にいたから全然見てなくて一時間ぐらい無駄にしたけどこれのおかげで助かった。
公式を読めばわかる。
最終的にわたしのワークフローファイルはこんな感じになったということだけを晒す。
環境変数で苦労した記事のときと比べて
Start MongoDB
のステップが増えたり他のステップにも名前つけたからだいぶ可読性が上がったと思う。
name: Run unit tests
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
mongodb-version: ["4.2"]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
- name: Start MongoDB
uses: supercharge/mongodb-github-action@1.6.0
with:
mongodb-version: ${{ matrix.mongodb-version }}
- name: Create .env file
run: |
touch .env
echo NODE_ENV = 'test' >> .env
echo MONGO_URI = ${{ secrets.MONGO_URI }} >> .env
echo PORT = ${{ secrets.PORT }} >> .env
echo BASE_URI = ${{ secrets.BASE_URI }} >> .env
echo PASSPORT_GITHUB_CALLBACK_URL = ${{ secrets.PASSPORT_GITHUB_CALLBACK_URL }} >> .env
echo PASSPORT_GITHUB_CLIENT_ID = ${{ secrets.PASSPORT_GITHUB_CLIENT_ID }} >> .env
echo PASSPORT_GITHUB_CLIENT_SECRET = ${{ secrets.PASSPORT_GITHUB_CLIENT_SECRET }} >> .env
echo SESSION_SECRET = ${{ secrets.SESSION_SECRET }} >> .env
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build --if-present
- name: Run tests
run: npm test
結論、mongoDB を使うときは GitHub Actions でもスタートしよう。