Skip to content

Infra: k8s pubsub and cache left setup #26

Infra: k8s pubsub and cache left setup

Infra: k8s pubsub and cache left setup #26

Workflow file for this run

name: πŸš€ CI Pipeline for Monorepo
on:
push:
branches:
- main
jobs:
detect-changes:
runs-on: ubuntu-latest
outputs:
services: ${{ steps.filter.outputs.services }}
steps:
- name: πŸ“₯ Checkout Repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: πŸ” Detect Changed Microservices
id: filter
run: |
changed_services=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }} | grep '^backend/' | cut -d'/' -f2 | sort -u | jq -R . | jq -s -c .)
echo "Detected changes in: $changed_services"
# Ensure valid JSON
if [[ -z "$changed_services" || "$changed_services" == "[]" ]]; then
services_json="[]"
else
services_json="$changed_services"
fi
echo "services=$services_json" >> "$GITHUB_OUTPUT"
build:
needs: detect-changes
runs-on: ubuntu-latest
environment: opinex
if: needs.detect-changes.outputs.services != '[]'
steps:
- name: πŸ“₯ Checkout Code
uses: actions/checkout@v3
- name: βš™οΈ Set up Node.js Environment
uses: actions/setup-node@v3
with:
node-version: '22'
- name: πŸ“¦ Install Node.js Dependencies
run: |
npm install -g turbo
npm install
- name: 🌟 Setup Backend Environment (Variables)
run: |
cd scripts/
chmod +x start.sh
./start.sh
- name: βœ… Docker Network creations
run: |
docker network ls | grep main_network || docker network create main_network
- name: πŸš€ Run common docker Resources (like pubsub)
run: |
cd docker
cd common
docker compose up -d
echo " πŸš€ Docker common resources running"
- name: 🐳 Configure Resources in Docker
run: |
docker compose -f 'docker/docker-compose.resources.yaml' up -d --build --wait
- name: βœ… Verify Running Containers
run: docker compose -f 'docker/docker-compose.resources.yaml' ps
- name: πŸ› Debug Logs on Failure
if: failure()
run: docker compose -f 'docker/docker-compose.resources.yaml' logs --tail=100
- name: ⚑ Start Turbo Dev Mode
run: |
turbo build
tmux new-session -d -s turbo_session "turbo dev"
- name: ⏳ Wait Until All Servers are Up
run: |
cd scripts/
chmod +x checkservice.sh
./checkservice.sh
- name: πŸ”¬ Run Tests in /packages/test
run: |
cd packages/test
npm run test
- name: πŸ›‘ Stop Turbo Dev
run: |
tmux kill-session -t turbo_session || echo "Turbo session not running"
- name: 🧹 Cleanup Resources
run: |
docker compose -f 'docker/docker-compose.resources.yaml' down -v
- name: πŸ—οΈ Build Images
run: |
cd scripts/
chmod +x build_images.sh
./build_images.sh
- name: 🐳 Configure Docker Images + Resources
run: |
docker compose -f 'docker/docker-compose.yaml' up -d --build --wait
- name: βœ… Verify Running Containers
run: docker compose -f 'docker/docker-compose.yaml' ps
- name: πŸ› Debug Logs on Failure
if: failure()
run: docker compose -f 'docker/docker-compose.yaml' logs --tail=100
- name: ⏳ Wait Until All Servers are Up (Docker)
run: |
cd scripts/
chmod +x checkservice.sh
./checkservice.sh
- name: πŸ”¬ Run Tests in /packages/test
run: |
cd packages/test
npm run test
- name: πŸ”„ Convert JSON to Space-Separated List
id: format_services
run: |
services_list=$(echo '${{ needs.detect-changes.outputs.services }}' | jq -r '.[]' | tr '\n' ' ')
echo "services_list=$services_list" >> "$GITHUB_ENV"
- name: πŸ”‘ Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: 🏷️ Tag Images
run: |
cd scripts/
chmod +x tag_images.sh
./tag_images.sh ${{ secrets.DOCKER_USERNAME }} ${{ github.sha }} $services_list