Skip to content

Trigger user service CI build #2

Trigger user service CI build

Trigger user service CI build #2

name: User Service CI/CD
on:
push:
paths:
- 'monopoly/user-service/**'
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: ./monopoly/user-service
platforms: linux/amd64,linux/arm64
push: true
tags: jeffreyxu2025/monopoly-user-service:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Generate deployment manifest
run: |
mkdir -p infra-dev/manifests
cat > infra-dev/manifests/user-service.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: user-service
namespace: monopoly-game
labels:
app: user-service
spec:
replicas: 1
selector:
matchLabels:
app: user-service
template:
metadata:
labels:
app: user-service
spec:
containers:
- name: user-service
image: jeffreyxu2025/monopoly-user-service:${{ github.sha }}
ports:
- containerPort: 3002
env:
- name: PORT
value: "3002"
- name: DB_HOST
valueFrom:
secretKeyRef:
name: db-credentials
key: host
- name: DB_PORT
valueFrom:
secretKeyRef:
name: db-credentials
key: port
- name: DB_NAME
value: "monopoly_game"
- name: DB_USER
valueFrom:
secretKeyRef:
name: db-credentials
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: password
- name: JWT_SECRET
valueFrom:
secretKeyRef:
name: app-secrets
key: jwt-secret
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "200m"
livenessProbe:
httpGet:
path: /health/live
port: 3002
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /health/ready
port: 3002
initialDelaySeconds: 5
periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: user-service
namespace: monopoly-game
spec:
selector:
app: user-service
ports:
- port: 3002
targetPort: 3002
type: ClusterIP
EOF
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-west-2
- name: Deploy User Service
run: |
aws eks update-kubeconfig --region us-west-2 --name monopoly-dev-jxre
kubectl apply -f infra-dev/manifests/user-service.yaml