Merge pull request #116 from COS301-SE-2024/develop #8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy Codebase | |
on: | |
push: | |
branches: [ main ] | |
jobs: | |
publish-containers: | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: eu-west-2 | |
- name: Login to Amazon ECR | |
id: login-ecr | |
uses: aws-actions/amazon-ecr-login@v1 | |
- name: Create .env file | |
run: | | |
echo PG_USER=${{ secrets.PG_USER }} >> .env | |
echo PG_HOST=${{ secrets.PG_HOST }} >> .env | |
echo PG_DATABASE=${{ secrets.PG_DATABASE }} >> .env | |
echo PG_PASSWORD=${{ secrets.PG_PASSWORD }} >> .env | |
echo PG_PORT=${{ secrets.PG_PORT }} >> .env | |
echo JSON_SECRET=${{ secrets.JSON_SECRET }} >> .env | |
echo REFRESH_SECRET=${{ secrets.REFRESH_SECRET }} >> .env | |
echo NEXT_PUBLIC_API_KEY=${{ secrets.NEXT_PUBLIC_API_KEY }} >> .env | |
echo NEXT_PUBLIC_AUTH_DOMAIN=${{ secrets.NEXT_PUBLIC_AUTH_DOMAIN }} >> .env | |
echo NEXT_PUBLIC_PROJECT_ID=${{ secrets.NEXT_PUBLIC_PROJECT_ID }} >> .env | |
echo NEXT_PUBLIC_STORAGE_BUCKET=${{ secrets.NEXT_PUBLIC_STORAGE_BUCKET }} >> .env | |
echo NEXT_PUBLIC_MESSAGING_SENDER_ID=${{ secrets.NEXT_PUBLIC_MESSAGING_SENDER_ID }} >> .env | |
echo NEXT_PUBLIC_APP_ID=${{ secrets.NEXT_PUBLIC_APP_ID }} >> .env | |
echo NEXT_PUBLIC_MEASUREMENT_ID=${{ secrets.NEXT_PUBLIC_MEASUREMENT_ID }} >> .env | |
- name: Create .env file | |
run: | | |
echo PG_USER=${{ secrets.PG_USER }} >> CoVAR-app/.env | |
echo PG_HOST=${{ secrets.PG_HOST }} >> CoVAR-app/.env | |
echo PG_DATABASE=${{ secrets.PG_DATABASE }} >> CoVAR-app/.env | |
echo PG_PASSWORD=${{ secrets.PG_PASSWORD }} >> CoVAR-app/.env | |
echo PG_PORT=${{ secrets.PG_PORT }} >> CoVAR-app/.env | |
echo JSON_SECRET=${{ secrets.JSON_SECRET }} >> CoVAR-app/.env | |
echo REFRESH_SECRET=${{ secrets.REFRESH_SECRET }} >> CoVAR-app/.env | |
echo NEXT_PUBLIC_API_KEY=${{ secrets.NEXT_PUBLIC_API_KEY }} >> CoVAR-app/.env | |
echo NEXT_PUBLIC_AUTH_DOMAIN=${{ secrets.NEXT_PUBLIC_AUTH_DOMAIN }} >> CoVAR-app/.env | |
echo NEXT_PUBLIC_PROJECT_ID=${{ secrets.NEXT_PUBLIC_PROJECT_ID }} >> CoVAR-app/.env | |
echo NEXT_PUBLIC_STORAGE_BUCKET=${{ secrets.NEXT_PUBLIC_STORAGE_BUCKET }} >> CoVAR-app/.env | |
echo NEXT_PUBLIC_MESSAGING_SENDER_ID=${{ secrets.NEXT_PUBLIC_MESSAGING_SENDER_ID }} >> CoVAR-app/.env | |
echo NEXT_PUBLIC_APP_ID=${{ secrets.NEXT_PUBLIC_APP_ID }} >> CoVAR-app/.env | |
echo NEXT_PUBLIC_MEASUREMENT_ID=${{ secrets.NEXT_PUBLIC_MEASUREMENT_ID }} >> CoVAR-app/.env | |
- name: create-json | |
id: create-json | |
uses: jsdaniell/create-json@1.1.2 | |
with: | |
name: "server/covar-7c8b5-firebase-adminsdk-85918-b6654147c1.json" | |
json: ${{ secrets.FIREBASE_SDK }} | |
- name: Create DB Schema | |
run: | | |
echo ${{ secrets.SCHEMA }} > schema.sql | |
- name: Create Pem Files | |
run: | | |
echo ${{ secrets.PUBLIC }} > server/public.pem | |
echo ${{ secrets.PRIVATE }} > server/private.pem | |
echo ${{ secrets.REFRESH_PUBLIC }} > server/refreshPublic.pem | |
echo ${{ secrets.REFRESH_PRIVATE }} > server/refreshPrivate.pem | |
- name: Build and push Docker images | |
run: | | |
cd CoVAR-app && npm i && npm run build && cd .. | |
docker build -t 211125691345.dkr.ecr.eu-west-2.amazonaws.com/covar_api:latest ./server | |
docker build -t 211125691345.dkr.ecr.eu-west-2.amazonaws.com/covar_client:latest ./CoVAR-app | |
docker build -t 211125691345.dkr.ecr.eu-west-2.amazonaws.com/covar_nginx:latest ./nginx | |
docker push 211125691345.dkr.ecr.eu-west-2.amazonaws.com/covar_api:latest | |
docker push 211125691345.dkr.ecr.eu-west-2.amazonaws.com/covar_client:latest | |
docker push 211125691345.dkr.ecr.eu-west-2.amazonaws.com/covar_nginx:latest | |
deploy-containers: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
needs: publish-containers | |
steps: | |
- name: Deploy using ssh | |
uses: appleboy/ssh-action@master | |
with: | |
host: ${{ secrets.HOST }} | |
username: ${{ secrets.USERNAME }} | |
key: ${{ secrets.SSH_PRIVATE_KEY }} | |
script: | | |
cd /home/CoVAR | |
git pull | |
aws ecr get-login-password --region eu-west-2 | docker login --username AWS --password-stdin 211125691345.dkr.ecr.eu-west-2.amazonaws.com | |
docker-compose -f docker-compose.prod.yml down | |
docker system prune -f | |
docker-compose -f docker-compose.prod.yml pull | |
docker-compose -f docker-compose.prod.yml up -d | |