Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8833

環境変数を利用したコードのCI process.env.hogeってどうすればいいの?

$
0
0
はじめに Node.js(Express)でWeb APIをCallする際のAPI Keyを環境変数にしていた場合に、GitHub ActionsでJestによるCIを回そうとして躓いたのでその時の解決方法を備忘録として残しておく。 どんなテストをしようとしたか? Node.js(Express)で以下のようなソースコードを実装していて、これのAPIテスト(End Pointテスト)をJest×Supertestで実装し、それをCI上で回そうとしていた。 テスト対象のソースコード(抜粋)は以下。 ${process.env.COUNTRYSTATECITY_API_KRY}の部分で環境変数を使っている。 controller.js const axios = require('axios').default; // dotenv const dotenv = require('dotenv') dotenv.config(); // instance for get countries and cities const instance = axios.create({ baseURL: 'https://api.countrystatecity.in/v1/', timeout: 3000, headers: { 'X-CSCAPI-KEY': `${process.env.COUNTRYSTATECITY_API_KRY}` } }) const allCountries = async (req, res) => { try { const countries = await instance.get('countries') res.send({ countries: countries.data }) } catch (error) { errorHandler(res, error) } } // 省略 テストコードは以下。 test.js const request = require('supertest') const app = require('../../../src/server/app') describe('Get Endpoints (not mocking)', () => { it('/allCountries', async () => { const res = await request(app).get('/allCountries') expect(res.status).toEqual(200) expect(res.body.countries[0].name).toEqual('Afghanistan') }) // 省略 }) ソースコード全体は以下。 ※Jest×SupertestでのNode.js(Express)のAPIテストについてはこちらの記事を参照 解決方法(どうするのか?) GitHubのSecretsに環境変数の値を登録し、GitHub Actionsのパイプライン(yaml)でそれを読み込む。 yamlの方は以下のようになり、envコンテキストにCOUNTRYSTATECITY_API_KRY: ${{ secrets.COUNTRYSTATECITY_API_KRY }}を宣言する事で、Secretsに登録した値がsecrets.COUNTRYSTATECITY_API_KRYで取得でき、環境変数をCIのRunnerが動く環境に設定できる。 jest.yml name: Testing by Jest on: push: branches: - "**" jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: package-lockより環境構築 run: npm ci - name: テスト実行 env: GEO_NAME_USERNAME: ${{ secrets.GEO_NAME_USERNAME }} WAETHERBIT_API_KEY: ${{ secrets.WAETHERBIT_API_KEY }} PIXABAY_API_KEY: ${{ secrets.PIXABAY_API_KEY }} COUNTRYSTATECITY_API_KRY: ${{ secrets.COUNTRYSTATECITY_API_KRY }} run: npm test GitHub ActionsのSecretsはこんな感じになっており、secrets.で取得するkeyで値を登録してある。詳細は「ソースコード全体は以下」のリンクのリポジトリを参照。 実際のJob 上記の設定をせずCIを実行した失敗job : https://github.com/yuta-katayama-23/travel-app/actions/runs/902797963 上記の設定をしてCIを実行した成功job : https://github.com/yuta-katayama-23/travel-app/actions/runs/902827671 参考文献 React x Firebase のCIを Github Actions で組む方法

Viewing all articles
Browse latest Browse all 8833

Trending Articles