I am trying to build an CI pipeline for my node.js server using github actions.
I just need to solve one issue.
I need to set environment variable, so that my node.js server can access the env variable via process.env
Below is the github action workflow file.
name: Build and Deploy to GKE
on:
pull_request:
branches:
- master
# Environment variables available to all jobs and steps in this workflow
env:
ENGINE_API_KEY: ${{ secrets.ENGINE_API_KEY }}
jobs:
setup-build-publish-deploy:
name: Setup, Build, Publish, and Deploy
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Apollo Schema Update
env:
ENGINE_API_KEY: ${{ secrets.ENGINE_API_KEY }}
run: |
sudo npm install
sudo npm install -g apollo
sudo npm run dev &
sleep 3
sudo apollo service:push --serviceURL=http://auth-cluster-ip-service --serviceName=auth --tag=master --endpoint=http://localhost:3051
I have tried declaring environment variable both workflow level and job's level, but when I console.log(process.env.ENGINE_API_KEY)
, it returns undefined
.
I also tried ENGINE_API_KEY=$ENGINE_API_KEY npm run dev &
instead of npm run dev &
. This works on my macbook, but with github action, it still returns undefined
.
(I did store ENGINE_API_KEY in settings -> secret. worked fine for other variables)
Create an .env
file that can be read by your node server and pass in your repository secret that way. This should be done after your checkout step:
- name: create env file
run: |
touch .env
echo ENGINE_API_KEY=${{ secrets.ENGINE_API_KEY }} >> .env