spelling #3
This file contains hidden or 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: 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 |