Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
2b1a33a
setup openapi generator
leon-liang May 23, 2025
1bb274a
update .gitattributes
leon-liang May 23, 2025
e7211c5
update .gitattributes
leon-liang May 23, 2025
355edca
create shape component
xhulia028 May 25, 2025
d10016b
Add text component to the whiteboard
ArmanpreetGhotra May 25, 2025
848ad7f
Rename TextNode and implement PR feedback
ArmanpreetGhotra May 25, 2025
cd6d62c
Merge pull request #26 from AET-DevOps25/22-implement-text-component
xhulia028 May 29, 2025
86ff558
add missing files
xhulia028 May 29, 2025
72b63b6
Merge remote-tracking branch 'origin/feature_branch' into 16-implemen…
xhulia028 May 29, 2025
49621d6
add docker-to-ghrc github action
xhulia028 May 29, 2025
a86a398
chnage branch name on action
xhulia028 May 29, 2025
62219dc
github repo name to lower case
xhulia028 May 29, 2025
8249787
github repo name to lower case bash
xhulia028 May 29, 2025
e217eac
add gitkeep to client/public
xhulia028 May 29, 2025
a4c6763
remove working dir = /app from client dockerfile
xhulia028 May 29, 2025
cad25ff
helm for prod staging and pipeline
xhulia028 May 29, 2025
6521498
Merge branch 'develop' into pipeline
xhulia028 May 29, 2025
c060b59
push tgz
xhulia028 May 30, 2025
9b89da0
Merge remote-tracking branch 'origin/pipeline' into pipeline
xhulia028 May 30, 2025
676b64d
make deplz?coker push on main and chnage helm command for k8
xhulia028 May 30, 2025
7178827
Merge pull request #33 from AET-DevOps25/pipeline
xhulia028 May 30, 2025
8038510
fix Deploy App with Helm command
xhulia028 May 30, 2025
a60de3e
Merge remote-tracking branch 'origin/develop' into develop
xhulia028 May 30, 2025
cbcdd74
fix indent
xhulia028 May 30, 2025
1375bae
remove kubeconfig
xhulia028 May 30, 2025
1c827d2
remove kubeconfig
xhulia028 May 30, 2025
a3d159d
add kubeconfig
xhulia028 May 30, 2025
70166a9
change path to ./helm
xhulia028 May 30, 2025
a5ec645
change value files names
xhulia028 May 30, 2025
65d2b93
merge textnode and shapenode, add sidebar, fix style bar
xhulia028 Jun 4, 2025
4a283bc
Merge pull request #25 from AET-DevOps25/16-implement-shape-component
xhulia028 Jun 6, 2025
2f93c66
fix pipeline
leon-liang Jun 14, 2025
9080651
run formatter
leon-liang Jun 14, 2025
f69a466
update to node 24.2
leon-liang Jun 14, 2025
80a6467
rerun openapi generate
leon-liang Jun 14, 2025
ed22362
Merge branch 'main' into 23-setup-openapi-generated-client
leon-liang Jun 14, 2025
a2d6495
comment out deploy docker gh action
leon-liang Jun 14, 2025
942cb6a
Merge remote-tracking branch 'origin/develop' into 23-setup-openapi-g…
leon-liang Jun 15, 2025
4226c6c
update dependencies
leon-liang Jun 15, 2025
a86410d
move allowed origin to env
leon-liang Jun 15, 2025
639b4cf
Merge pull request #24 from AET-DevOps25/23-setup-openapi-generated-c…
leon-liang Jun 15, 2025
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
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
client/src/api/generated/ linguist-generated=true
1 change: 1 addition & 0 deletions .github/workflows/build_docker_image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ name: Build Docker Images

on:
push:
- mainx

jobs:
test:
Expand Down
4 changes: 0 additions & 4 deletions .github/workflows/client-linters.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,5 @@ jobs:
run: npx prettier --check "src/**/*.{ts,tsx}"
working-directory: client

- name: Fix Prettier formatting
run: npm run format
working-directory: client
if: failure()


82 changes: 82 additions & 0 deletions .github/workflows/deploy-to-k8.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Build and Publish Docker Image to GHCR

on:
push:
branches:
- main
- develop

jobs:
build-and-push:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Log in to GHCR
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-

- name: Set REPO, TAG, NAMESPACE, and VALUES_FILE environment variables
run: |
echo "REPO=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV
if [[ "${GITHUB_REF##*/}" == "main" ]]; then
echo "TAG=latest" >> $GITHUB_ENV
echo "NAMESPACE=tsd-prod" >> $GITHUB_ENV
echo "VALUES_FILE=./helm/whiteboard-app/production.values.yaml" >> $GITHUB_ENV
elif [[ "${GITHUB_REF##*/}" == "develop" ]]; then
echo "TAG=develop" >> $GITHUB_ENV
echo "NAMESPACE=tsd-staging" >> $GITHUB_ENV
echo "VALUES_FILE=./helm/whiteboard-app/staging.values.yaml" >> $GITHUB_ENV
fi

- name: Client -> Build and push Docker image
uses: docker/build-push-action@v3
with:
context: ./client
file: ./client/Dockerfile
push: true
tags: ghcr.io/${{ env.REPO }}/client:${{ env.TAG }}
platforms: linux/amd64

- name: Server -> Build and push Docker image
uses: docker/build-push-action@v3
with:
context: ./server
file: ./server/Dockerfile
push: true
tags: ghcr.io/${{ env.REPO }}/server:${{ env.TAG }}
platforms: linux/amd64


- name: Set up Kubeconfig
run: |
echo "${{ secrets.KUBECONFIG }}" > kubeconfig
echo "KUBECONFIG=$(pwd)/kubeconfig" >> $GITHUB_ENV

- name: Install Helm
uses: azure/setup-helm@v3

- name: Deploy App with Helm
run: |
helm upgrade whiteboard ./helm/whiteboard-app/ \
-f ${{ env.VALUES_FILE }} \
-n ${{ env.NAMESPACE }} \
--install \
--atomic \
--kubeconfig ${{ env.KUBECONFIG }}
96 changes: 48 additions & 48 deletions .github/workflows/deploy_docker.yml
Original file line number Diff line number Diff line change
@@ -1,48 +1,48 @@
name: Deploy Docker Images

on:
push:

jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: AWS
url: 'https://client.${{ vars.EC2_PUBLIC_IP }}.nip.io'
steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Copy Docker Compose File From Repo to VM Host
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ vars.EC2_PUBLIC_IP }}
username: ${{ vars.AWS_EC2_USER }}
key: ${{ secrets.AWS_EC2_PRIVATE_KEY }}
source: "./compose.aws.yml"
target: /home/${{ vars.AWS_EC2_USER }}

- name: SSH to VM and Create .env.prod
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ vars.EC2_PUBLIC_IP }}
username: ${{ vars.AWS_EC2_USER }}
key: ${{ secrets.AWS_EC2_PRIVATE_KEY }}
script: |
rm .env.prod
touch .env.prod
echo "CLIENT_HOST=client.${{ vars.EC2_PUBLIC_IP }}.nip.io" >> .env.prod
echo "SERVER_HOST=api.${{ vars.EC2_PUBLIC_IP }}.nip.io" >> .env.prod
echo "PUBLIC_API_URL=https://api.${{ vars.EC2_PUBLIC_IP }}.nip.io/api" >> .env.prod

- name: SSH to VM and Execute Docker-Compose Up
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ vars.EC2_PUBLIC_IP }}
username: ${{ vars.AWS_EC2_USER }}
key: ${{ secrets.AWS_EC2_PRIVATE_KEY }}
script: |
echo "Logging into Docker registry..."
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
echo "Starting Docker Compose..."
docker compose -f compose.aws.yml --env-file=.env.prod up --pull=always -d
#name: Deploy Docker Images
#
#on:
# push:
#
#jobs:
# deploy:
# runs-on: ubuntu-latest
# environment:
# name: AWS
# url: 'https://client.${{ vars.EC2_PUBLIC_IP }}.nip.io'
# steps:
# - name: Checkout Code
# uses: actions/checkout@v4
#
# - name: Copy Docker Compose File From Repo to VM Host
# uses: appleboy/scp-action@v0.1.7
# with:
# host: ${{ vars.EC2_PUBLIC_IP }}
# username: ${{ vars.AWS_EC2_USER }}
# key: ${{ secrets.AWS_EC2_PRIVATE_KEY }}
# source: "./compose.aws.yml"
# target: /home/${{ vars.AWS_EC2_USER }}
#
# - name: SSH to VM and Create .env.prod
# uses: appleboy/ssh-action@v1.0.3
# with:
# host: ${{ vars.EC2_PUBLIC_IP }}
# username: ${{ vars.AWS_EC2_USER }}
# key: ${{ secrets.AWS_EC2_PRIVATE_KEY }}
# script: |
# rm .env.prod
# touch .env.prod
# echo "CLIENT_HOST=client.${{ vars.EC2_PUBLIC_IP }}.nip.io" >> .env.prod
# echo "SERVER_HOST=api.${{ vars.EC2_PUBLIC_IP }}.nip.io" >> .env.prod
# echo "PUBLIC_API_URL=https://api.${{ vars.EC2_PUBLIC_IP }}.nip.io/api" >> .env.prod
#
# - name: SSH to VM and Execute Docker-Compose Up
# uses: appleboy/ssh-action@v1.0.3
# with:
# host: ${{ vars.EC2_PUBLIC_IP }}
# username: ${{ vars.AWS_EC2_USER }}
# key: ${{ secrets.AWS_EC2_PRIVATE_KEY }}
# script: |
# echo "Logging into Docker registry..."
# echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
# echo "Starting Docker Compose..."
# docker compose -f compose.aws.yml --env-file=.env.prod up --pull=always -d
1 change: 1 addition & 0 deletions client/.env.local
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
NEXT_PUBLIC_API_URL=https://api.teamserverdown.devops.aet.cit.tum.de
8 changes: 5 additions & 3 deletions client/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Install dependencies only when needed
FROM node:18-alpine AS deps
FROM node:24.2-bullseye-slim AS deps

RUN apt update && apt install --yes --no-install-recommends curl default-jre

# Set working directory
WORKDIR /app
Expand All @@ -9,7 +11,7 @@ COPY package.json package-lock.json ./
RUN npm ci

# Rebuild the source code only when needed
FROM node:20-slim AS builder
FROM node:24.2-slim AS builder
WORKDIR /app

COPY . .
Expand All @@ -20,7 +22,7 @@ COPY --from=deps /app/node_modules ./node_modules
RUN npm run build

# Production image
FROM node:20-alpine AS runner
FROM node:24.2-alpine3.21 AS runner
WORKDIR /app

ENV NODE_ENV=production
Expand Down
10 changes: 10 additions & 0 deletions client/next.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@ import type { NextConfig } from "next";

const nextConfig: NextConfig = {
/* config options here */
webpack(config) {
// Configure SVG files to be imported as React components
config.module.rules.push({
test: /\.svg$/,
use: ['@svgr/webpack'],
});

return config;
},
};


export default nextConfig;
7 changes: 7 additions & 0 deletions client/openapitools.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
"spaces": 2,
"generator-cli": {
"version": "7.13.0"
}
}
Loading
Loading