5959 BRANCH_SAFE=${BRANCH//\//-}
6060 echo "tag=$BRANCH_SAFE" >> $GITHUB_OUTPUT
6161 echo "api_url=https://$BRANCH_SAFE.api.whiteboard.student.k8s.aet.cit.tum.de" >> $GITHUB_OUTPUT
62- echo "base_url=https://$BRANCH_SAFE.whiteboard.student.k8s.aet.cit.tum.de" >> $GITHUB_OUTPUT
63-
62+ echo "base_url=https://$BRANCH_SAFE.whiteboard.student.k8s.aet.cit.tum.de" >> $GITHUB_OUTPUT
6463 echo "genai_url=https://$BRANCH_SAFE.genai.whiteboard.student.k8s.aet.cit.tum.de" >> $GITHUB_OUTPUT
6564 fi
6665
@@ -141,15 +140,55 @@ jobs:
141140 build-args : API_URL=${{ needs.setup.outputs.api_url }}
142141 platforms : linux/amd64
143142
143+ build-genai :
144+ needs : setup
145+ runs-on : ubuntu-latest
146+ steps :
147+ - uses : actions/checkout@v3
148+ with :
149+ fetch-depth : 0
150+ ref : ${{ needs.setup.outputs.merge_commit || github.sha }}
151+
152+ - name : Set up Docker Buildx
153+ uses : docker/setup-buildx-action@v2
154+
155+ - name : Log in to GHCR
156+ uses : docker/login-action@v2
157+ with :
158+ registry : ghcr.io
159+ username : ${{ github.actor }}
160+ password : ${{ secrets.GITHUB_TOKEN }}
161+
162+ - name : Cache Docker layers
163+ uses : actions/cache@v3
164+ with :
165+ path : /tmp/.buildx-cache-genai
166+ key : ${{ runner.os }}-genai-${{ github.sha }}
167+ restore-keys : |
168+ ${{ runner.os }}-genai-
169+
170+ - name : Build and push genai image
171+ uses : docker/build-push-action@v3
172+ with :
173+ context : ./genai
174+ file : ./genai/Dockerfile
175+ push : true
176+ tags : ghcr.io/${{ needs.setup.outputs.repo }}/genai:${{ needs.setup.outputs.tag }}
177+ build-args : API_URL=${{ needs.setup.outputs.api_url }}
178+ platforms : linux/amd64
179+
180+
144181 deploy :
145182 needs :
146183 - build-client
147184 - build-server
185+ - build-genai
148186 runs-on : ubuntu-latest
149187 outputs :
150188 client_url : ${{ steps.set-vars.outputs.CLIENT_URL }}
151189 server_url : ${{ steps.set-vars.outputs.SERVER_URL }}
152190 auth_url : ${{ steps.set-vars.outputs.AUTH_URL }}
191+ genai_url : ${{ steps.set-vars.outputs.GENAI_URL }}
153192 steps :
154193 - name : Checkout repository
155194 uses : actions/checkout@v3
@@ -165,13 +204,15 @@ jobs:
165204 CLIENT_URL=whiteboard.student.k8s.aet.cit.tum.de
166205 SERVER_URL=api.whiteboard.student.k8s.aet.cit.tum.de
167206 AUTH_URL=auth.whiteboard.student.k8s.aet.cit.tum.de
207+ GENAI_URL=genai.whiteboard.student.k8s.aet.cit.tum.de
168208 echo "NAMESPACE=production" >> $GITHUB_ENV
169209 echo "IMAGE_TAG=latest" >> $GITHUB_ENV
170210 echo "VALUES_FILE=./infrastructure/whiteboard-app/production.values.yaml" >> $GITHUB_ENV
171211 elif [[ "$BRANCH" == "develop" ]]; then
172212 CLIENT_URL=staging.whiteboard.student.k8s.aet.cit.tum.de
173213 SERVER_URL=staging.api.whiteboard.student.k8s.aet.cit.tum.de
174214 AUTH_URL=staging.auth.whiteboard.student.k8s.aet.cit.tum.de
215+ GENAI_URL=staging.genai.whiteboard.student.k8s.aet.cit.tum.de
175216 echo "NAMESPACE=staging" >> $GITHUB_ENV
176217 echo "IMAGE_TAG=develop" >> $GITHUB_ENV
177218 echo "VALUES_FILE=./infrastructure/whiteboard-app/staging.values.yaml" >> $GITHUB_ENV
@@ -180,6 +221,7 @@ jobs:
180221 CLIENT_URL=$BRANCH_SAFE.whiteboard.student.k8s.aet.cit.tum.de
181222 SERVER_URL=$BRANCH_SAFE.api.whiteboard.student.k8s.aet.cit.tum.de
182223 AUTH_URL=$BRANCH_SAFE.auth.whiteboard.student.k8s.aet.cit.tum.de
224+ GENAI_URL=$BRANCH_SAFE.genai.whiteboard.student.k8s.aet.cit.tum.de
183225 echo "NAMESPACE=$BRANCH_SAFE" >> $GITHUB_ENV
184226 echo "IMAGE_TAG=$BRANCH_SAFE" >> $GITHUB_ENV
185227 echo "VALUES_FILE=./infrastructure/whiteboard-app/pullrequest.values.yaml" >> $GITHUB_ENV
@@ -188,10 +230,13 @@ jobs:
188230 echo "CLIENT_URL=$CLIENT_URL" >> $GITHUB_ENV
189231 echo "SERVER_URL=$SERVER_URL" >> $GITHUB_ENV
190232 echo "AUTH_URL=$AUTH_URL" >> $GITHUB_ENV
233+ echo "GENAI_URL=$GENAI_URL" >> $GITHUB_ENV
234+ echo "OPEN_WEB_UI_API_KEY=${{ secrets.OPEN_WEB_UI_API_KEY }}" >> $GITHUB_ENV
191235
192236 echo "CLIENT_URL=$CLIENT_URL" >> $GITHUB_OUTPUT
193237 echo "SERVER_URL=$SERVER_URL" >> $GITHUB_OUTPUT
194238 echo "AUTH_URL=$AUTH_URL" >> $GITHUB_OUTPUT
239+ echo "GENAI_URL=$GENAI_URL" >> $GITHUB_OUTPUT
195240
196241 - name : Set up Kubeconfig
197242 run : |
@@ -230,9 +275,12 @@ jobs:
230275 --set namespace="${{ env.NAMESPACE }}" \
231276 --set server.image.tag="${{ env.IMAGE_TAG }}" \
232277 --set client.image.tag="${{ env.IMAGE_TAG }}" \
278+ --set genai.image.tag="${{ env.IMAGE_TAG }}" \
233279 --set client.url="${{ env.CLIENT_URL }}" \
234280 --set server.url="${{ env.SERVER_URL }}" \
235- --set auth.url="${{ env.AUTH_URL }}"
281+ --set auth.url="${{ env.AUTH_URL }}" \
282+ --set genai.url="${{ env.GENAI_URL }}" \
283+ --set genai.apiKey="${{ env.OPEN_WEB_UI_API_KEY }}" \
236284
237285 comment-pr :
238286 needs : deploy
@@ -242,6 +290,7 @@ jobs:
242290 CLIENT_URL : ${{ needs.deploy.outputs.client_url }}
243291 SERVER_URL : ${{ needs.deploy.outputs.server_url }}
244292 AUTH_URL : ${{ needs.deploy.outputs.auth_url }}
293+ GENAI_URL : ${{ needs.deploy.outputs.genai_url }}
245294 steps :
246295 - name : Comment on Pull Request with URLs
247296 uses : actions/github-script@v6
@@ -252,6 +301,7 @@ jobs:
252301 const clientUrl = `https://${process.env.CLIENT_URL}`;
253302 const serverUrl = `https://${process.env.SERVER_URL}`;
254303 const authUrl = `https://${process.env.AUTH_URL}`;
304+ const genaiUrl = `https://${process.env.GENAI_URL}`;
255305
256306 // Check existing comments to avoid duplicates
257307 const { data: comments } = await github.rest.issues.listComments({
@@ -269,6 +319,7 @@ jobs:
269319 - **Client:** [${clientUrl}](${clientUrl})
270320 - **Server:** [${serverUrl}/swagger-ui/index.html](${serverUrl}/swagger-ui/index.html)
271321 - **Keycloak:** [${authUrl}](${authUrl})
322+ - **GenAI:** [${genaiUrl}/docs](${genaiUrl}/docs)
272323 `;
273324
274325 await github.rest.issues.createComment({
0 commit comments