Skip to content

docs: Comprehensive README with badges and full feature list #24

docs: Comprehensive README with badges and full feature list

docs: Comprehensive README with badges and full feature list #24

Workflow file for this run

name: CI/CD Pipeline
on:
push:
branches: [master, main, develop]
pull_request:
branches: [master, main]
permissions:
contents: read
packages: write
security-events: write
env:
JAVA_VERSION: '21'
REGISTRY: ghcr.io
IMAGE_PREFIX: ${{ github.repository }}
jobs:
# ============================================
# Build & Test
# ============================================
build:
name: Build & Test
runs-on: ubuntu-latest
services:
postgres:
image: postgres:18-alpine
env:
POSTGRES_DB: testdb
POSTGRES_USER: test
POSTGRES_PASSWORD: test
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
mongodb:
image: mongo:8.2
ports:
- 27017:27017
options: >-
--health-cmd "mongosh --eval 'db.adminCommand({ping: 1})'"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK ${{ env.JAVA_VERSION }}
uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: 'temurin'
cache: 'maven'
- name: Build with Maven
run: mvn clean compile -DskipTests -B
- name: Run tests in demo mode
run: mvn test -B -Ddemo.mode=true
env:
DEMO_MODE: true
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results
path: '**/target/surefire-reports/*.xml'
# ============================================
# Code Quality
# ============================================
code-quality:
name: Code Quality
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK ${{ env.JAVA_VERSION }}
uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: 'temurin'
cache: 'maven'
- name: Check code compilation warnings
run: mvn clean compile -B
# ============================================
# Security Scan
# ============================================
security:
name: Security Scan
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
scan-ref: '.'
format: 'table'
exit-code: '0'
# ============================================
# Build Docker Images
# ============================================
docker:
name: Build Docker Images
runs-on: ubuntu-latest
needs: build
if: false
permissions:
contents: read
packages: write
strategy:
matrix:
service:
- api-gateway
- base-station-service
- monitoring-service
- notification-service
- auth-service
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK ${{ env.JAVA_VERSION }}
uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: 'temurin'
cache: 'maven'
- name: Build JAR
run: mvn clean package -DskipTests -pl ${{ matrix.service }} -am -B
- name: Log in to Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Docker image
run: |
IMAGE_NAME=$(echo "${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/${{ matrix.service }}:latest" | tr '[:upper:]' '[:lower:]')
docker build -f ${{ matrix.service }}/Dockerfile -t $IMAGE_NAME .
docker push $IMAGE_NAME