Skip to content

Bug/35 Make production changes (#36) #109

Bug/35 Make production changes (#36)

Bug/35 Make production changes (#36) #109

Workflow file for this run

name: Deployment Pipeline
on:
push:
branches:
- main
- dev
- workflow-testing
pull_request:
branches: [main]
types: [opened, synchronize]
jobs:
test_lint_backend:
runs-on: ubuntu-20.04
defaults:
run:
working-directory: backend
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v2
with:
node-version: '16'
- name: create .env file
run: |
touch .env
echo DEV_MONGODB_URI=${{ secrets.DEV_MONGODB_URI }} >> .env
echo CLOUDINARY_NAME=${{ secrets.CLOUDINARY_NAME }} >> .env
echo CLOUDINARY_API_KEY=${{ secrets.CLOUDINARY_API_KEY }} >> .env
echo CLOUDINARY_API_SECRET=${{ secrets.CLOUDINARY_API_SECRET }} >> .env
echo JWT_SECRET=${{ secrets.JWT_SECRET }} >> .env
- name: npm install
run: npm install
- name: lint
run: npm run lint
- name: test
run: npm test
test_lint_frontend:
runs-on: ubuntu-20.04
defaults:
run:
working-directory: frontend
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v2
with:
node-version: '16'
- name: npm install
run: npm install
- name: lint
run: npm run lint
- name: test
run: npm test
- name: install backend dependencies, create .env (for cypress to run)
run: |
cd ../backend
touch .env
echo DEV_MONGODB_URI=${{ secrets.DEV_MONGODB_URI }} >> .env
echo CLOUDINARY_NAME=${{ secrets.CLOUDINARY_NAME }} >> .env
echo CLOUDINARY_API_KEY=${{ secrets.CLOUDINARY_API_KEY }} >> .env
echo CLOUDINARY_API_SECRET=${{ secrets.CLOUDINARY_API_SECRET }} >> .env
echo JWT_SECRET=${{ secrets.JWT_SECRET }} >> .env
npm install
- name: cypress tests
uses: cypress-io/github-action@v2
with:
start: npm run server:test, npm start
wait-on: 'http://localhost:3001/health, http://localhost:3000'
working-directory: ./frontend
deploy:
if: ${{ github.ref == 'refs/heads/main' }}
needs: [test_lint_backend, test_lint_frontend]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Login to Heroku Container registry
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
run: heroku container:login
- name: Set Heroku Config Vars
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
run: |
heroku config:set JWT_SECRET=${{ secrets.JWT_SECRET }} -a instaclone
heroku config:set CLOUDINARY_API_SECRET=${{ secrets.CLOUDINARY_API_SECRET }} -a instaclone
heroku config:set CLOUDINARY_API_KEY=${{ secrets.CLOUDINARY_API_KEY }} -a instaclone
heroku config:set CLOUDINARY_NAME=${{ secrets.CLOUDINARY_NAME }} -a instaclone
heroku config:set PROD_MONGODB_URI="${{ secrets.PROD_MONGODB_URI }}" -a instaclone
heroku config:set REACT_APP_SOCKET_URL="${{ secrets.REACT_APP_SOCKET_URL }}" -a instaclone
- name: Build and push
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
run: heroku container:push -a instaclone web
- name: Release
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
run: heroku container:release -a instaclone web
tag_release:
if: ${{ github.ref == 'refs/heads/main' }}
needs: [deploy]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- name: Bump version and push tag
uses: anothrNick/github-tag-action@1.36.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}