Skip to content

spelling

spelling #3

Workflow file for this run

name: newTest
on:
push:
branches:
- dev
- main
jobs:
# Backend Tests
backend-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Docker
uses: docker/setup-buildx-action@v3
- name: Install Docker Compose
run: |
sudo apt-get update
sudo apt-get install -y docker-compose
- name: Set up Docker Compose
run: docker-compose up --abort-on-container-exit test-runner
- name: Verify Backend Test Results
id: verify-tests
run: |
docker-compose logs test-runner | grep -q "Test Run Successful" || exit 1
- name: Create GitHub Issue on Failure
if: failure()
uses: peter-evans/create-issue-from-file@v2
with:
title: Backend Test Failure
content-filepath: ./Backend-test-failure-log.txt
labels: bug, backend
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Clean up resources
if: always()
run: docker-compose down
# Frontend Tests
frontend-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install Dependencies
working-directory: ./Frontend
run: npm install
- name: Run Frontend Tests
id: run-tests
working-directory: ./Frontend
run: npm test -- --ci
- name: Create GitHub Issue on Failure
if: failure()
uses: peter-evans/create-issue-from-file@v2
with:
title: Frontend Test Failure
content-filepath: ./Frontend-test-failure-log.txt
labels: bug, frontend
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Save Test Logs
if: failure()
run: npm test -- --ci > ./Frontend-test-failure-log.txt
# Deployment (only on main)
deploy:
runs-on: ubuntu-latest
needs: [backend-tests, frontend-tests]
if: github.ref == 'refs/heads/main'
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up Docker
uses: docker/setup-buildx-action@v3
- name: Install Docker Compose
run: |
sudo apt-get update
sudo apt-get install -y docker-compose
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.HUB_USER }}
password: ${{ secrets.HUB_PASSWORD }}
- name: Build and Tag Docker Images
run: |
echo VITE_API_URL=${{ secrets.VITE_API_URL }} >> .env
echo CONNECTION_STRING=${{ secrets.CONNECTION_STRING }} >> .env
echo POSTGRES_DB=${{ secrets.POSTGRES_DB }} >> .env
echo POSTGRES_USER=${{ secrets.POSTGRES_USER }} >> .env
echo POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} >> .env
export $(grep -v '^#' .env | xargs)
docker-compose --env-file .env -f docker-compose.yml up --build -d
docker tag devops-fullstack_backend:latest ${{ secrets.HUB_USER }}/backend:latest
docker tag devops-fullstack_frontend:latest ${{ secrets.HUB_USER }}/frontend:latest
- name: Push Docker Images
run: |
docker push ${{ secrets.HUB_USER }}/backend:latest
docker push ${{ secrets.HUB_USER }}/frontend:latest
docker-compose -f docker-compose.yml push
- name: Set up SSH
uses: webfactory/ssh-agent@v0.5.1
with:
ssh-private-key: ${{ secrets.DEPLOY_KEY }}
- name: Deploy to Server
run: |
ssh -o StrictHostKeyChecking=no ${{secrets.SERVER_USER}}@${{ secrets.SERVER_HOST }} << 'EOF'
cd /home/azureuser/DevOps-fullstack
export $(grep -v '^#' .env.prod | xargs)
docker-compose --env-file .env.prod -f docker-compose.prod.yml up -d
EOF