Skip to content

Change health.txt

Change health.txt #22

Workflow file for this run

name: CI/CD Pipeline
on:
push:
branches:
- main
workflow_dispatch:
jobs:
backend-build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Detect backend changes
id: changes
run: |
FILES=$(jq -r '
([.commits[].modified // [], .commits[].added // [], .commits[].removed // []] | add | unique)
' "$GITHUB_EVENT_PATH")
echo "Changed files:"
echo "$FILES"
if echo "$FILES" | grep -q "^backend/"; then
echo "CHANGED=true" >> $GITHUB_OUTPUT
else
echo "CHANGED=false" >> $GITHUB_OUTPUT
fi
- name: Debug result
run: echo "Backend changed? ${{ steps.changes.outputs.CHANGED }}"
- name: Exit if no backend changes
if: steps.changes.outputs.CHANGED == 'false'
run: |
echo "No backend changes — skipping backend build."
exit 0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
run: echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u "${{ secrets.DOCKER_HUB_USERNAME }}" --password-stdin
- name: Build Backend Image
run: docker build -t ${{ secrets.DOCKER_HUB_USERNAME }}/task-backend:latest ./backend
- name: Push Backend Image
run: docker push ${{ secrets.DOCKER_HUB_USERNAME }}/task-backend:latest
frontend-build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Detect frontend changes
id: changes
run: |
FILES=$(jq -r '
([.commits[].modified // [], .commits[].added // [], .commits[].removed // []] | add | unique)
' "$GITHUB_EVENT_PATH")
echo "Changed files:"
echo "$FILES"
if echo "$FILES" | grep -q "^frontend/"; then
echo "CHANGED=true" >> $GITHUB_OUTPUT
else
echo "CHANGED=false" >> $GITHUB_OUTPUT
fi
- name: Debug result
run: echo "Frontend changed? ${{ steps.changes.outputs.CHANGED }}"
- name: Exit if no frontend changes
if: steps.changes.outputs.CHANGED == 'false'
run: |
echo "No frontend changes — skipping frontend build."
exit 0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
run: echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u "${{ secrets.DOCKER_HUB_USERNAME }}" --password-stdin
- name: Build Frontend Image
run: docker build -t ${{ secrets.DOCKER_HUB_USERNAME }}/task-frontend:latest ./frontend
- name: Push Frontend Image
run: docker push ${{ secrets.DOCKER_HUB_USERNAME }}/task-frontend:latest
deploy:
runs-on: [self-hosted, ansible-master-controller]
needs: [backend-build, frontend-build]
if: |
needs.backend-build.result == 'success' ||
needs.frontend-build.result == 'success'
steps:
- name: Debug build results
run: |
echo "Backend build: ${{ needs.backend-build.result }}"
echo "Frontend build: ${{ needs.frontend-build.result }}"
echo "Deploying because at least one image was built."
- name: Checkout code
uses: actions/checkout@v3
- name: Run Ansible Deployment
run: |
cd ansible
ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml