Skip to content

Merge pull request #102 from gogixweb/settingsbaseurl #14

Merge pull request #102 from gogixweb/settingsbaseurl

Merge pull request #102 from gogixweb/settingsbaseurl #14

name: Deploy FE
on:
push:
branches:
- main
# workflow_dispatch:
# inputs:
# environment:
# required: true
# type: string
# description: 'The environment to deploy to'
env:
FRONTEND_IMAGE: ghcr.io/$(echo $GITHUB_REPOSITORY | tr '[:upper:]' '[:lower:]')/frontend
BAHEA_CAL_DEPLOY_TOKEN: ${{ secrets.GHCR_PAT }}
ENVIRONMENT: ${{ vars.REACT_ENVIRONMENT }}
jobs:
build:
name: Build Docker Images
environment:
name: staging-bahea-cal-fe
runs-on: ubuntu-latest
steps:
- name: Checkout main
uses: actions/checkout@v2
- name: Add environment variables to .env
run: |
echo REACT_APP_GOOGLE_CLIENT_ID=$(echo ${{ secrets.REACT_APP_GOOGLE_CLIENT_ID }} ) >> .env
echo REACT_APP_GOOGLE_CLIENT_API_KEY=$(echo ${{ secrets.REACT_APP_GOOGLE_CLIENT_API_KEY }} ) >> .env
echo REACT_APP_API_URL=$(echo ${{ vars.REACT_APP_API_URL }} ) >> .env
mv ./.env ./frontend/.env
- name: Set environment variables
run: |
echo "FRONTEND_IMAGE=$(echo ${{ env.FRONTEND_IMAGE }} )" >> $GITHUB_ENV
echo "BAHEA_CAL_STAGING_DEPLOY_TOKEN=$(echo ${{ secrets.BAHEA_CAL_STAGING_DEPLOY_TOKEN }} )" >> $GITHUB_ENV
echo "ENVIRONMENT=$(echo ${{ vars.DJANGO_ENVIRONMENT }} )" >> $GITHUB_ENV
- name: Log in to GitHub Packages
uses: docker/login-action@v2
with:
registry: ghcr.io
username: gogixweb
password: ${{ secrets.GHCR_PAT }}
- name: Pull images
run: |
docker pull ${{ env.FRONTEND_IMAGE }} || true
- name: Build images
run: |
cd frontend
docker build . -f Dockerfile -t ${{ env.FRONTEND_IMAGE }}:latest
- name: Push images
run: |
docker push ${{ env.FRONTEND_IMAGE }}:latest
deploy:
name: Deploy to DigitalOcean
environment:
name: staging-bahea-cal-fe
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout main
uses: actions/checkout@v2
- name: Add environment variables to .env
run: |
echo BAHEA_CAL_DEPLOY_TOKEN=${{ env.BAHEA_CAL_DEPLOY_TOKEN }} >> .env
echo ENVIRONMENT=${{ env.ENVIRONMENT }} >> .env
echo FRONTEND_IMAGE=${{ env.FRONTEND_IMAGE }} >> .env
- name: Add the private SSH key to the ssh-agent
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
mkdir -p ~/.ssh
ssh-agent -a $SSH_AUTH_SOCK > /dev/null
ssh-keyscan github.com >> ~/.ssh/known_hosts
ssh-add - <<< "${{ secrets.DEPLOY_KEY }}"
- name: Build and deploy images on DigitalOcean
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
scp -o StrictHostKeyChecking=no -r ./.env root@${{ secrets.DIGITAL_OCEAN_IP_ADDRESS }}:/app/fe/${{ env.ENVIRONMENT }}
ssh -o StrictHostKeyChecking=no root@${{ secrets.DIGITAL_OCEAN_IP_ADDRESS }} << 'ENDSSH'
cd /app/fe/${{ env.ENVIRONMENT }}
source .env
docker login ghcr.io -u gogixweb -p $BAHEA_CAL_DEPLOY_TOKEN
docker pull $FRONTEND_IMAGE
docker stop bahea-cal-frontend-${{ env.ENVIRONMENT }} || true
docker rm bahea-cal-frontend-${{ env.ENVIRONMENT }} || true
docker run -p 23000:3000 -d --name bahea-cal-frontend-${{ env.ENVIRONMENT }} $FRONTEND_IMAGE
ENDSSH