Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions .github/workflows/deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: deployment
on: push
jobs:
Setup-kubeconfig:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up kubectl
uses: azure/setup-kubectl@v3
with:
version: latest
- name: Set up kubeconfig
run: echo "${{ secrets.KUBECONFIG }}" | base64 -d > kubeconfig

- name: Upload kubeconfig artifact
uses: actions/upload-artifact@v4
with:
name: kubeconfig
path: kubeconfig

Redis:
needs: Setup-kubeconfig
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: kubeconfig

- name: deploy-redis
run: kubectl --kubeconfig kubeconfig apply -f redis-deployment.yaml

- name: redis-services
run: kubectl --kubeconfig kubeconfig apply -f redis-svc.yaml

- name: redis-persitance
run: kubectl --kubeconfig kubeconfig apply -f redis-pvc.yaml

Backend:
runs-on: ubuntu-latest
needs: Redis
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: kubeconfig
- name: deploy-backend
run: kubectl --kubeconfig kubeconfig apply -f backend-deployment.yaml

- name: backend-services
run: kubectl --kubeconfig kubeconfig apply -f backend-svc.yaml

Frontend:
runs-on: ubuntu-latest
needs: Backend
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: kubeconfig
- name: deploy-frontend
run: kubectl --kubeconfig kubeconfig apply -f frontend-deployment.yaml

- name: frontend-services
run: kubectl --kubeconfig kubeconfig apply -f frontend-svc.yaml

Test-runnig:
runs-on: ubuntu-latest
needs: Frontend
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: kubeconfig
- name: test-frontend-deployment
run: kubectl --kubeconfig kubeconfig get pods -l app=frontend
- name: test-backend-deployment
run: kubectl --kubeconfig kubeconfig get pods -l app=backend
- name: test-redis-deployment
run: kubectl --kubeconfig kubeconfig get pods -l app=redis
42 changes: 42 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: simple-fortune-cookie
on:
push
jobs:
Test:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4

- name: Test Frontend
working-directory: frontend
run: go test ./...
Dockerpush:
needs: Test
name: push dockerimage to dockerhub
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: login to docker hub
id: docker-hub
env:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
run: |
docker login -u $username -p $password
- name: build the frontend docker image
id: build-frontend-docker-image
run: |
ls -la
docker build frontend -t jeppeha/frontenddocker:latest
- name: push the frontend docker image
id: push-frontend-docker-image
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/frontenddocker:latest
- name: build the backend docker image
id: build-backend-docker-image
run: |
ls -la
docker build backend -t jeppeha/backenddocker:latest
- name: push the backend docker image
id: push-backend-docker-image
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/backenddocker:latest
21 changes: 21 additions & 0 deletions backend-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend
spec:
selector:
matchLabels:
app: backend
template:
metadata:
labels:
app: backend
spec:
containers:
- name: backend
image: jeppeha/backenddocker:latest
ports:
- containerPort: 9000
env:
- name: REDIS_DNS
value: redis-service
11 changes: 11 additions & 0 deletions backend-svc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
selector:
app: backend
ports:
- port: 9000
targetPort: 9000
type: ClusterIP
6 changes: 6 additions & 0 deletions backend/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY . /app
RUN go mod download && go mod verify
RUN cd /app && go build -o goapp
ENTRYPOINT ["./goapp"]
30 changes: 30 additions & 0 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
services:
frontend-container:
image: jeppeha/frontenddocker:latest
ports:
- 8080:8080
depends_on:
- backend-container
environment:
BACKEND_PORT: 9000
BACKEND_DNS: backend-container


backend-container:
image: jeppeha/backenddocker:latest
ports:
- 9000:9000
depends_on:
- redis-container
environment:
REDIS_PORT: 6379
REDIS_DNS: redis-container


redis-container:
image: redis:7-alpine
ports:
- 6379:6379



24 changes: 24 additions & 0 deletions frontend-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
spec:
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: frontend
image: jeppeha/frontenddocker:latest
ports:
- containerPort: 8080
env:
- name: BACKEND_DNS
value: backend-service
- name: BACKEND_PORT
value: "9000"

11 changes: 11 additions & 0 deletions frontend-svc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: frontend-service
spec:
selector:
app: frontend
ports:
- port: 8080
targetPort: 8080
type: NodePort
6 changes: 6 additions & 0 deletions frontend/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY . /app
RUN go mod download && go mod verify
RUN cd /app && go build -o goapp
ENTRYPOINT ["./goapp"]
2 changes: 1 addition & 1 deletion frontend/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,5 +101,5 @@ func main() {

http.Handle("/", http.FileServer(http.Dir("./static")))
err := http.ListenAndServe(":8080", nil)
fmt.Println("%v", err)
fmt.Printf("%v", err)
}
Empty file added kubeconfig
Empty file.
27 changes: 27 additions & 0 deletions redis-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# redis-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
spec:
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
volumes:
- name: redis-pvc
persistentVolumeClaim:
claimName: redis-pvc
containers:
- name: redis
image: redis:7-alpine
ports:
- containerPort: 6379
volumeMounts:
- name: redis-pvc
mountPath: /data

11 changes: 11 additions & 0 deletions redis-pvc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-pvc
spec:
storageClassName: "gp3"
resources:
requests:
storage: 5Gi
accessModes:
- ReadWriteOnce
11 changes: 11 additions & 0 deletions redis-svc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: redis-service
spec:
selector:
app: redis
ports:
- port: 6379
targetPort: 6379
type: ClusterIP
1 change: 1 addition & 0 deletions workflowtest.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
workflowtest