Skip to content

Commit

Permalink
Merge branch 'develop' into chore/iris/refactor-pipeline-execution
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelOwenDyer committed Oct 21, 2024
2 parents b66f062 + f3eaf6d commit 588e848
Show file tree
Hide file tree
Showing 300 changed files with 8,885 additions and 1,399 deletions.
4 changes: 2 additions & 2 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ tone_instructions: ''
early_access: true
enable_free_tier: true
reviews:
profile: assertive
profile: chill
request_changes_workflow: true
high_level_summary: true
high_level_summary_placeholder: '@coderabbitai summary'
Expand Down Expand Up @@ -192,7 +192,7 @@ reviews:
- TYPOGRAPHY
- CASING
enabled_only: false
level: picky
level: default
enabled_rules: []
enabled_categories: []
biome:
Expand Down
144 changes: 144 additions & 0 deletions .github/issue-labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
assessment:
- assessment
- bonus
- complaint
- submission
- grading
- grade
- score
- caseSensitive: false

athena:
- athena
- caseSensitive: false

atlas:
- atlas
- competency
- competencies
- knowledge area
- learning path
- learner profile
- science event
- adaptive learning
- caseSensitive: false

buildagent:
- buildagent
- build agent
- buildjob
- build job
- build result
- caseSensitive: false

communication:
- communication
- conversation
- notification
- agreement
- faq
- post
- reaction
- chat
- message
- caseSensitive: false

core:
- user-management
- authority
- data export
- migration
- user
- group
- caseSensitive: false

exam:
- exam
- exercisegroup
- student exam
- suspicious behavior
- suspicious behaviour
- caseSensitive: false

exercise:
- exercise
- participation
- participant
- difficulty
- lifecycle
- team
- assignment
- caseSensitive: false

fileupload:
- fileupload
- upload
- caseSensitive: false

iris:
- iris
- llm
- chatbot
- ai
- caseSensitive: false

lecture:
- lecture
- attachment
- online
- slide
- video
- text unit
- caseSensitive: false

lti:
- lti
- online course
- caseSensitive: false

modeling:
- modeling
- diagram
- uml
- caseSensitive: false

plagiarism:
- plagiarism
- caseSensitive: false

programming:
- programming
- build
- build plan
- code hint
- git
- testwise coverage
- ide
- submission policy
- aeolus
- penalty
- auxilary
- commit
- project
- static code analysis
- caseSensitive: false

quiz:
- quiz
- drag
- drop
- single choice
- multiple choice
- batch
- short answer
- caseSensitive: false

text:
- text
- block
- caseSensitive: false

tutorialgroup:
- tutorialgroup
- session
- caseSensitive: false
26 changes: 24 additions & 2 deletions .github/workflows/analysis-of-endpoint-connections.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,16 @@ jobs:
path: supporting_scripts/analysis-of-endpoint-connections/

- name: Analyze endpoints
run:
run: |
./gradlew :supporting_scripts:analysis-of-endpoint-connections:runEndpointAnalysis
continue-on-error: true
id: endpointAnalysis

- name: Analyze rest calls
run:
run: |
./gradlew :supporting_scripts:analysis-of-endpoint-connections:runRestCallAnalysis
continue-on-error: true
id: restCallAnalysis

- name: Upload analysis results
uses: actions/upload-artifact@v4
Expand All @@ -93,3 +97,21 @@ jobs:
path: |
supporting_scripts/analysis-of-endpoint-connections/endpointAnalysisResult.json
supporting_scripts/analysis-of-endpoint-connections/restCallAnalysisResult.json
- name: Check if any step failed
run: |
if [ "${{ steps.endpointAnalysis.outcome }}" != "success" ] &&
[ "${{ steps.restCallAnalysis.outcome }}" != "success" ]; then
echo "Endpoints and REST calls could not be matched."
exit 1
fi
if [ "${{ steps.endpointAnalysis.outcome }}" == "success" ] &&
[ "${{ steps.restCallAnalysis.outcome }}" != "success" ]; then
echo "REST calls could not be matched."
exit 1
fi
if [ "${{ steps.endpointAnalysis.outcome }}" != "success" ] &&
[ "${{ steps.restCallAnalysis.outcome }}" == "success" ]; then
echo "Endpoints could not be matched."
exit 1
fi
17 changes: 17 additions & 0 deletions .github/workflows/issue-labler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: "Issue Labeler"
on:
issues:
types: [opened, edited]

permissions:
issues: write
contents: read

jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: MaximilianAnzinger/[email protected]
with:
configuration-path: .github/issue-labeler.yml
repo-token: ${{ github.token }}
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ Refer to [Using JHipster in production](http://www.jhipster.tech/production) for
The following command can automate the deployment to a server. The example shows the deployment to the main Artemis test server (which runs a virtual machine):

```shell
./artemis-server-cli deploy [email protected] -w build/libs/Artemis-7.6.1.war
./artemis-server-cli deploy [email protected] -w build/libs/Artemis-7.6.2.war
```

## Architecture
Expand Down
22 changes: 11 additions & 11 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ plugins {
}

group = "de.tum.cit.aet.artemis"
version = "7.6.1"
version = "7.6.2"
description = "Interactive Learning with Individual Feedback"

java {
Expand Down Expand Up @@ -243,11 +243,12 @@ dependencies {
exclude module: "jaxb-api"
}

implementation "org.gitlab4j:gitlab4j-api:6.0.0-rc.5"
implementation "org.gitlab4j:gitlab4j-api:6.0.0-rc.6"

implementation "de.jplag:jplag:${jplag_version}"

implementation "de.jplag:c:${jplag_version}"
implementation "de.jplag:cpp:${jplag_version}"
implementation "de.jplag:java:${jplag_version}"
implementation "de.jplag:javascript:${jplag_version}"
implementation "de.jplag:kotlin:${jplag_version}"
Expand Down Expand Up @@ -329,7 +330,7 @@ dependencies {
// implementation "org.springdoc:springdoc-openapi-ui:1.8.0"

// use the latest version to avoid security vulnerabilities
implementation "org.springframework:spring-webmvc:6.1.13"
implementation "org.springframework:spring-webmvc:6.1.14"

implementation "com.vdurmont:semver4j:3.1.0"

Expand All @@ -345,7 +346,7 @@ dependencies {

implementation "tech.jhipster:jhipster-framework:${jhipster_dependencies_version}"
implementation "org.springframework.boot:spring-boot-starter-cache:${spring_boot_version}"
implementation "io.micrometer:micrometer-registry-prometheus:1.13.5"
implementation "io.micrometer:micrometer-registry-prometheus:1.13.6"
implementation "net.logstash.logback:logstash-logback-encoder:8.0"

// Defines low-level streaming API, and includes JSON-specific implementations
Expand Down Expand Up @@ -397,8 +398,8 @@ dependencies {
implementation "org.springframework.boot:spring-boot-starter-oauth2-resource-server:${spring_boot_version}"
implementation "org.springframework.boot:spring-boot-starter-oauth2-client:${spring_boot_version}"

implementation "org.springframework.ldap:spring-ldap-core:3.2.6"
implementation "org.springframework.data:spring-data-ldap:3.3.4"
implementation "org.springframework.ldap:spring-ldap-core:3.2.7"
implementation "org.springframework.data:spring-data-ldap:3.3.5"

implementation("org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:4.1.3") {
// NOTE: these modules contain security vulnerabilities and are not needed
Expand All @@ -409,8 +410,8 @@ dependencies {
implementation "org.springframework.cloud:spring-cloud-commons:4.1.4"

implementation "io.netty:netty-all:4.1.114.Final"
implementation "io.projectreactor.netty:reactor-netty:1.1.22"
implementation "org.springframework:spring-messaging:6.1.13"
implementation "io.projectreactor.netty:reactor-netty:1.1.23"
implementation "org.springframework:spring-messaging:6.1.14"
implementation "org.springframework.retry:spring-retry:2.0.9"

implementation "org.springframework.security:spring-security-config:${spring_security_version}"
Expand Down Expand Up @@ -440,16 +441,15 @@ dependencies {
implementation "org.bouncycastle:bcpkix-jdk18on:1.78.1"
implementation "org.bouncycastle:bcprov-jdk18on:1.78.1"

implementation "com.mysql:mysql-connector-j:9.0.0"
implementation "com.mysql:mysql-connector-j:9.1.0"
implementation "org.postgresql:postgresql:42.7.4"

implementation "org.zalando:problem-spring-web:0.29.1"
implementation "org.zalando:jackson-datatype-problem:0.27.1"
implementation "com.ibm.icu:icu4j-charset:75.1"
implementation "com.github.seancfoley:ipaddress:5.5.1"
implementation "org.apache.maven:maven-model:3.9.9"
// NOTE: 3.0.2 is broken for splitting lecture specific PDFs
implementation "org.apache.pdfbox:pdfbox:3.0.1"
implementation "org.apache.pdfbox:pdfbox:3.0.3"
implementation "org.apache.commons:commons-csv:1.12.0"
implementation "org.commonmark:commonmark:0.23.0"
implementation "commons-fileupload:commons-fileupload:1.5"
Expand Down
4 changes: 4 additions & 0 deletions docs/user/exercises/programming-exercise-features.inc
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ Instructors can still use those templates to generate programming exercises and
+----------------------+----------+---------+
| R | yes | yes |
+----------------------+----------+---------+
| C++ | yes | yes |
+----------------------+----------+---------+

- Not all ``templates`` support the same feature set and supported features can also change depending on the continuous integration system setup.
Depending on the feature set, some options might not be available during the creation of the programming exercise.
Expand Down Expand Up @@ -75,6 +77,8 @@ Instructors can still use those templates to generate programming exercises and
+----------------------+----------------------+----------------------+---------------------+--------------+------------------------------------------+------------------------------+----------------------------+------------------------+
| R | no | no | yes | no | n/a | no | no | L: yes, J: no |
+----------------------+----------------------+----------------------+---------------------+--------------+------------------------------------------+------------------------------+----------------------------+------------------------+
| C++ | no | no | yes | no | n/a | no | no | L: yes, J: no |
+----------------------+----------------------+----------------------+---------------------+--------------+------------------------------------------+------------------------------+----------------------------+------------------------+

- *Sequential Test Runs*: ``Artemis`` can generate a build plan which first executes structural and then behavioral tests. This feature can help students to better concentrate on the immediate challenge at hand.
- *Static Code Analysis*: ``Artemis`` can generate a build plan which additionally executes static code analysis tools.
Expand Down
42 changes: 40 additions & 2 deletions docs/user/exercises/programming-exercise-setup.inc
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,8 @@ Update exercise code in repositories
- In case of a |build_failed| result, some configuration is wrong, please check the build errors on the corresponding build plan.
- **Hints:** Test cases should only reference code, that is available in the template repository. In case this is **not** possible, please try out the option **Sequential Test Runs**

.. _adapt_build_script:

Adapt the build script
^^^^^^^^^^^^^^^^^^^^^^

Expand All @@ -360,8 +362,7 @@ You can activate the option `Customize Build Script` in the programming exercise
All changes in the configuration will be considered for all builds (template, solution, student submissions).

There are predefined build scripts in bash for all programming languages, project types and configurations (e.g. with or without static code analysis).
Notice that the checkout paths for the test and the assignment (template, solution or student) repo cannot be customized at the moment and are determined
by the chosen programming language. Most programming languages clone the test repos into the root folder and the assignment repo into the `assignment` folder.
Most programming languages clone the test repos into the root folder and the assignment repo into the `assignment` folder.
This means that build files in the test repo (e.g. Gradle, Maven) typically refer to the `assignment` folder.

You can also use a custom docker image for the build. Make sure to publish the docker image in a publicly available repository (e.g. DockerHub). Ideally build it
Expand All @@ -372,8 +373,45 @@ The default Java Docker image can be found on https://github.com/ls1intum/artemi
Hint: Try out the build of a custom programming exercise locally before you publish a custom docker image and before you upload the code to Artemis, because the
development and debugging experience is much better.

Edit Repositories Checkout Paths
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

**This option is only available when using** :ref:`integrated code lifecycle<integrated code lifecycle>`

This section is optional. In most cases, the preconfigured checkout paths do not need to be changed.
The checkout paths depend on the chosen programming language and project type. The paths are shown in the preview:

.. figure:: programming/checkout-paths-preview.png
:align: center

By checkout paths, we mean the paths where the repositories are cloned during the build process. For example, in Java exercises, the assignment repository is cloned into the `assignment` folder, the test repository is cloned into the root folder. All paths are relative to the working directory of the build plan.
If you want to change the checkout paths, you can do so by clicking on the `edit repositories checkout path` button. The following dialog will open:

.. figure:: programming/checkout-paths-edit.png
:align: center

You must then change the paths in the build script if necessary. Please refer to the :ref:`adapt_build_script` section on how to do this.

.. warning::
- Changing the checkout paths can only be done in the exercise creation process. After the exercise has been created, the checkout paths cannot be changed.
- Depending on the programming language and project type, the checkout paths are predefined and cannot be changed. For example, for Java exercises, only the assignment repository path can be changed. For Ocaml exercises, the assignment, test, and solution repository paths can be changed.
- Changing the checkout paths can lead to build errors if the build script is not adapted accordingly.
- For C programming exercises, if used with the default docker image, changing the checkout paths will lead to build errors. The default docker image is configured to work with the default checkout paths.

.. _configure_static_code_analysis_tools:

Edit Maximum Build Duration
^^^^^^^^^^^^^^^^^^^^^^^^^^^

**This option is only available when using** :ref:`integrated code lifecycle<integrated code lifecycle>`
This section is optional. In most cases, the preconfigured build script does not need to be changed.

The maximum build duration is the time limit for the build plan to execute. If the build plan exceeds this time limit, it will be terminated. The default value is 120 seconds.
You can change the maximum build duration by using the slider.

.. figure:: programming/timeout-slider.png
:align: center

Configure static code analysis
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 588e848

Please sign in to comment.