🎓
Github Actionsのコードカバレッジが失敗した件
ことのあらまし
pull requestを作成し、さあマージしようとしたら...
なんでかコードカバレッジの実行結果がずっと失敗する...なんでだ
エラー解析
detailの画面に進む
FAIL src/tests/integration/app.test.ts
● Test suite failed to run
TypeError: The "url" argument must be of type string. Received undefined
3 | dotenv.config()
4 |
> 5 | export const db = new Sequelize(process.env.DATABASE_URL, {
| ^
6 | models: [__dirname + '/../models/**/*'],
7 | logging: false,
8 | define: {
なるほど。
今回(というか当然だが).env
は.ignoreに含んでいるので、
Github Actionsの方でも環境変数が使えるように、
.env
で設定していた環境変数を、Githubリポジトリの方にも設定しないといけないらしい。
解決方法
Github Secretsの設定方法
- GithubリポジトリのSettingsタブを選択
- Secrets andvariables > Actionsを右タブから選択
- New repository secretをクリックし、以下のように設定
Name: DATABASE_URL
Value: <該当URL>
Github Actionsの設定ファイルの編集
Github Actionsの設定ファイルにも、今回Github Secretsに設定した環境変数を追加する
code-coverage.yml
name: Test and Coverage
on:
push:
branches:
- main
- develop
pull_request:
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '20'
- name: Install dependencies
run: cd backend && yarn install
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
- name: Run tests with coverage
run: cd backend && yarn coverage
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
- name: Upload coverage report
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: backend/coverage
これでもう一回プッシュする
コードカバレッジも成功!!
おわりに
先日Github Actionsの導入を始めて行ったので、
今後似たようなことがあったら勉強しながら設定ファイルなりリポジトリの設定を変えていきたい
Discussion