Skip to content
Merged
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
95 changes: 95 additions & 0 deletions .github/workflows/build-and-push-docker-image-local.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
name: Build and Push Docker Image

on:
workflow_call:
inputs:
image-name:
type: string
default: ${{ github.repository }}
description: "The name for the docker image (Default: Repository name)"
docker-file:
type: string
default: Dockerfile
description: "The path to the Dockerfile (Default: ./Dockerfile)"
docker-context:
type: string
default: .
description: "The context for the Docker build (Default: .)"
build-args:
type: string
description: "List of additional build contexts (e.g., name=path)"
required: false
platforms:
type: string
description: "List of platforms for which to build the image"
default: linux/amd64,linux/arm64
registry:
type: string
default: ghcr.io
description: "The registry to push the image to (Default: ghcr.io)"

outputs:
image_tag:
description: "The tag of the image that was built"
value: ${{ jobs.build.outputs.image_tag }}

secrets:
registry-user:
required: false
registry-password:
required: false

jobs:
build:
name: Build Docker Image for ${{ inputs.image-name }}
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
outputs:
image_tag: "${{ steps.output-image-tag.outputs.image_tag }}"
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: all

- name: Install Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ inputs.registry }}
username: ${{ secrets.registry-user || github.actor }}
password: ${{ secrets.registry-password || secrets.GITHUB_TOKEN }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ inputs.registry }}/${{ inputs.image-name }}
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=ref,event=branch
type=ref,event=pr

- name: Build and push Docker Image
uses: docker/build-push-action@v6
with:
context: ${{ inputs.docker-context }}
file: ${{ inputs.docker-file }}
platforms: ${{ inputs.platforms }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: ${{ inputs.build-args }}
push: true

- id: output-image-tag
run: |
echo "image_tag=${{ steps.meta.outputs.version }}" >> "$GITHUB_OUTPUT"
4 changes: 2 additions & 2 deletions .github/workflows/build-and-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ on:
jobs:
build-and-push:
strategy:
fail-fast: false
matrix:
include:
- image-name: ls1intum/tease
Expand All @@ -23,7 +22,8 @@ jobs:
- image-name: ls1intum/tease-server
docker-file: ./server/Dockerfile
docker-context: ./server
uses: ls1intum/.github/.github/workflows/build-and-push-docker-image.yml@v1.1.1
uses: ./.github/workflows/build-and-push-docker-image-local.yml
secrets: inherit
with:
image-name: ${{ matrix.image-name }}
docker-file: ${{ matrix.docker-file }}
Expand Down
2 changes: 1 addition & 1 deletion client/angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
"base": "dist/tease"
},
"index": "src/index.html",
"polyfills": ["zone.js", "./window-global-fix.ts"],
"polyfills": ["zone.js", "./window-global-fix.ts", "@angular/localize/init"],
"tsConfig": "tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": ["src/assets"],
Expand Down
62 changes: 52 additions & 10 deletions client/docs/mockoon.json

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions client/docs/openapi_spec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ info:
---
Using this API you can retrieve information on students and their associated attributes.
servers:
- url: https://prompt.ase.cit.tum.de/api
- url: https://prompt.aet.cit.tum.de/team-allocation/api
paths:
/tease/course-iterations/{courseIterationId}/projects:
/tease/course_phase/{courseIterationId}/projects:
get:
tags:
- Projects
Expand All @@ -31,7 +31,7 @@ paths:
type: array
items:
$ref: '#/components/schemas/Project'
/tease/course-iterations/{courseIterationId}/students:
/tease/course_phase/{courseIterationId}/students:
get:
tags:
- Students
Expand All @@ -53,7 +53,7 @@ paths:
type: array
items:
$ref: '#/components/schemas/Student'
/tease/course-iterations/{courseIterationId}/allocations:
/tease/course_phase/{courseIterationId}/allocations:
post:
tags:
- Allocations
Expand Down Expand Up @@ -97,7 +97,7 @@ paths:
type: array
items:
$ref: '#/components/schemas/Allocation'
/tease/course-iterations/{courseIterationId}/skills:
/tease/course_phase/{courseIterationId}/skills:
get:
tags:
- Skills
Expand All @@ -119,7 +119,7 @@ paths:
type: array
items:
$ref: '#/components/schemas/Skill'
/course-iterations:
/tease/course-phases:
get:
tags:
- Course Iterations
Expand Down
7 changes: 4 additions & 3 deletions client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
"private": true,
"license": "MIT",
"author": {
"name": "ASE TUM",
"name": "AET TUM",
"email": "krusche@tum.de",
"url": "https://ase.cit.tum.de"
"url": "https://aet.cit.tum.de"
},
"scripts": {
"ng": "ng",
Expand Down Expand Up @@ -61,7 +61,8 @@
"papaparse": "5.4.1",
"rxjs": "7.8.1",
"tslib": "2.6.3",
"uuid": "^10.0.0"
"uuid": "^10.0.0",
"zone.js": "^0.14.10"
},
"overrides": {
"semver": "7.5.4",
Expand Down
2 changes: 1 addition & 1 deletion client/src/app/api/api-configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { Injectable } from '@angular/core';
providedIn: 'root',
})
export class ApiConfiguration {
rootUrl: string = `${window.location.origin}/api`;
rootUrl: string = `${window.location.origin}/team-allocation/api`;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ import { RequestBuilder } from '../../request-builder';

import { Allocation } from '../../models/allocation';

export interface TeaseCourseIterationsCourseIterationIdAllocationsGet$Params {
export interface TeaseCoursePhaseCourseIterationIdAllocationsGet$Params {

/**
* Unique identifier of the course iteration
*/
courseIterationId: string;
}

export function teaseCourseIterationsCourseIterationIdAllocationsGet(http: HttpClient, rootUrl: string, params: TeaseCourseIterationsCourseIterationIdAllocationsGet$Params, context?: HttpContext): Observable<StrictHttpResponse<Array<Allocation>>> {
const rb = new RequestBuilder(rootUrl, teaseCourseIterationsCourseIterationIdAllocationsGet.PATH, 'get');
export function teaseCoursePhaseCourseIterationIdAllocationsGet(http: HttpClient, rootUrl: string, params: TeaseCoursePhaseCourseIterationIdAllocationsGet$Params, context?: HttpContext): Observable<StrictHttpResponse<Array<Allocation>>> {
const rb = new RequestBuilder(rootUrl, teaseCoursePhaseCourseIterationIdAllocationsGet.PATH, 'get');
if (params) {
rb.path('courseIterationId', params.courseIterationId, {});
}
Expand All @@ -32,4 +32,4 @@ export function teaseCourseIterationsCourseIterationIdAllocationsGet(http: HttpC
);
}

teaseCourseIterationsCourseIterationIdAllocationsGet.PATH = '/tease/course-iterations/{courseIterationId}/allocations';
teaseCoursePhaseCourseIterationIdAllocationsGet.PATH = '/tease/course_phase/{courseIterationId}/allocations';
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { RequestBuilder } from '../../request-builder';

import { Allocation } from '../../models/allocation';

export interface TeaseCourseIterationsCourseIterationIdAllocationsPost$Params {
export interface TeaseCoursePhaseCourseIterationIdAllocationsPost$Params {

/**
* Unique identifier of the course iteration
Expand All @@ -17,8 +17,8 @@ export interface TeaseCourseIterationsCourseIterationIdAllocationsPost$Params {
body?: Array<Allocation>
}

export function teaseCourseIterationsCourseIterationIdAllocationsPost(http: HttpClient, rootUrl: string, params: TeaseCourseIterationsCourseIterationIdAllocationsPost$Params, context?: HttpContext): Observable<StrictHttpResponse<void>> {
const rb = new RequestBuilder(rootUrl, teaseCourseIterationsCourseIterationIdAllocationsPost.PATH, 'post');
export function teaseCoursePhaseCourseIterationIdAllocationsPost(http: HttpClient, rootUrl: string, params: TeaseCoursePhaseCourseIterationIdAllocationsPost$Params, context?: HttpContext): Observable<StrictHttpResponse<void>> {
const rb = new RequestBuilder(rootUrl, teaseCoursePhaseCourseIterationIdAllocationsPost.PATH, 'post');
if (params) {
rb.path('courseIterationId', params.courseIterationId, {});
rb.body(params.body, 'application/json');
Expand All @@ -34,4 +34,4 @@ export function teaseCourseIterationsCourseIterationIdAllocationsPost(http: Http
);
}

teaseCourseIterationsCourseIterationIdAllocationsPost.PATH = '/tease/course-iterations/{courseIterationId}/allocations';
teaseCoursePhaseCourseIterationIdAllocationsPost.PATH = '/tease/course_phase/{courseIterationId}/allocations';
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,25 @@ import { RequestBuilder } from '../../request-builder';

import { CourseIteration } from '../../models/course-iteration';

export interface CourseIterationsGet$Params {
}
export interface TeaseCoursePhasesGet$Params {}

export function courseIterationsGet(http: HttpClient, rootUrl: string, params?: CourseIterationsGet$Params, context?: HttpContext): Observable<StrictHttpResponse<Array<CourseIteration>>> {
const rb = new RequestBuilder(rootUrl, courseIterationsGet.PATH, 'get');
export function teaseCoursePhasesGet(
http: HttpClient,
rootUrl: string,
params?: TeaseCoursePhasesGet$Params,
context?: HttpContext
): Observable<StrictHttpResponse<Array<CourseIteration>>> {
const rb = new RequestBuilder(rootUrl, teaseCoursePhasesGet.PATH, 'get');
console.log('teaseCoursePhasesGet', teaseCoursePhasesGet.PATH, rootUrl);
if (params) {
}

return http.request(
rb.build({ responseType: 'json', accept: 'application/json', context })
).pipe(
return http.request(rb.build({ responseType: 'json', accept: 'application/json', context })).pipe(
filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),
map((r: HttpResponse<any>) => {
return r as StrictHttpResponse<Array<CourseIteration>>;
})
);
}

courseIterationsGet.PATH = '/course-iterations';
teaseCoursePhasesGet.PATH = '/tease/course-phases';
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ import { RequestBuilder } from '../../request-builder';

import { Project } from '../../models/project';

export interface TeaseCourseIterationsCourseIterationIdProjectsGet$Params {
export interface TeaseCoursePhaseCourseIterationIdProjectsGet$Params {

/**
* Unique identifier of the course iteration
*/
courseIterationId: string;
}

export function teaseCourseIterationsCourseIterationIdProjectsGet(http: HttpClient, rootUrl: string, params: TeaseCourseIterationsCourseIterationIdProjectsGet$Params, context?: HttpContext): Observable<StrictHttpResponse<Array<Project>>> {
const rb = new RequestBuilder(rootUrl, teaseCourseIterationsCourseIterationIdProjectsGet.PATH, 'get');
export function teaseCoursePhaseCourseIterationIdProjectsGet(http: HttpClient, rootUrl: string, params: TeaseCoursePhaseCourseIterationIdProjectsGet$Params, context?: HttpContext): Observable<StrictHttpResponse<Array<Project>>> {
const rb = new RequestBuilder(rootUrl, teaseCoursePhaseCourseIterationIdProjectsGet.PATH, 'get');
if (params) {
rb.path('courseIterationId', params.courseIterationId, {});
}
Expand All @@ -32,4 +32,4 @@ export function teaseCourseIterationsCourseIterationIdProjectsGet(http: HttpClie
);
}

teaseCourseIterationsCourseIterationIdProjectsGet.PATH = '/tease/course-iterations/{courseIterationId}/projects';
teaseCoursePhaseCourseIterationIdProjectsGet.PATH = '/tease/course_phase/{courseIterationId}/projects';
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ import { RequestBuilder } from '../../request-builder';

import { Skill } from '../../models/skill';

export interface TeaseCourseIterationsCourseIterationIdSkillsGet$Params {
export interface TeaseCoursePhaseCourseIterationIdSkillsGet$Params {

/**
* Unique identifier of the course iteration
*/
courseIterationId: string;
}

export function teaseCourseIterationsCourseIterationIdSkillsGet(http: HttpClient, rootUrl: string, params: TeaseCourseIterationsCourseIterationIdSkillsGet$Params, context?: HttpContext): Observable<StrictHttpResponse<Array<Skill>>> {
const rb = new RequestBuilder(rootUrl, teaseCourseIterationsCourseIterationIdSkillsGet.PATH, 'get');
export function teaseCoursePhaseCourseIterationIdSkillsGet(http: HttpClient, rootUrl: string, params: TeaseCoursePhaseCourseIterationIdSkillsGet$Params, context?: HttpContext): Observable<StrictHttpResponse<Array<Skill>>> {
const rb = new RequestBuilder(rootUrl, teaseCoursePhaseCourseIterationIdSkillsGet.PATH, 'get');
if (params) {
rb.path('courseIterationId', params.courseIterationId, {});
}
Expand All @@ -32,4 +32,4 @@ export function teaseCourseIterationsCourseIterationIdSkillsGet(http: HttpClient
);
}

teaseCourseIterationsCourseIterationIdSkillsGet.PATH = '/tease/course-iterations/{courseIterationId}/skills';
teaseCoursePhaseCourseIterationIdSkillsGet.PATH = '/tease/course_phase/{courseIterationId}/skills';
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ import { RequestBuilder } from '../../request-builder';

import { Student } from '../../models/student';

export interface TeaseCourseIterationsCourseIterationIdStudentsGet$Params {
export interface TeaseCoursePhaseCourseIterationIdStudentsGet$Params {

/**
* Unique identifier of the course iteration
*/
courseIterationId: string;
}

export function teaseCourseIterationsCourseIterationIdStudentsGet(http: HttpClient, rootUrl: string, params: TeaseCourseIterationsCourseIterationIdStudentsGet$Params, context?: HttpContext): Observable<StrictHttpResponse<Array<Student>>> {
const rb = new RequestBuilder(rootUrl, teaseCourseIterationsCourseIterationIdStudentsGet.PATH, 'get');
export function teaseCoursePhaseCourseIterationIdStudentsGet(http: HttpClient, rootUrl: string, params: TeaseCoursePhaseCourseIterationIdStudentsGet$Params, context?: HttpContext): Observable<StrictHttpResponse<Array<Student>>> {
const rb = new RequestBuilder(rootUrl, teaseCoursePhaseCourseIterationIdStudentsGet.PATH, 'get');
if (params) {
rb.path('courseIterationId', params.courseIterationId, {});
}
Expand All @@ -32,4 +32,4 @@ export function teaseCourseIterationsCourseIterationIdStudentsGet(http: HttpClie
);
}

teaseCourseIterationsCourseIterationIdStudentsGet.PATH = '/tease/course-iterations/{courseIterationId}/students';
teaseCoursePhaseCourseIterationIdStudentsGet.PATH = '/tease/course_phase/{courseIterationId}/students';
Loading