Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • dojo_project/projects/pipelines/dojoexercisechecker
1 result
Select Git revision
  • jw_sonar
  • jw_sonar_backup
  • main
  • move-to-esm-only
  • update-dependencies
  • v5.0.0
  • v6.0.0
  • 2.0.0
  • 2.1.0
  • 2.2.0
  • 3.0.0
  • 3.0.1
  • 3.1.0
  • 3.2.0
  • 3.3.0
  • 3.4.0
  • 3.5.0
  • 4.0.0
  • 4.1.0
  • 4.1.1
  • 4.2.0
  • 5.0.0
  • 6.0.0-dev
  • v1.0.1
24 results
Show changes
Commits on Source (53)
Showing
with 145 additions and 44 deletions
......@@ -5,6 +5,9 @@ Wiki/.idea
ExerciseChecker/src/config/Version.ts
sonarlint.xml
sonarlint/
############################ MacOS
# General
.DS_Store
......
......@@ -18,7 +18,42 @@
-->
## 3.5.0 (???)
## 6.0.0 (Upcoming)
### ✨ Feature
- Add SonarQube integration for exercises (thanks to @joel.vonderwe)
### 🔨 Internal / Developers
- Major dependencies update
## 5.0.0 (2024-10-21)
### ✨ Feature
- Add possibility of self-host the solution
## 4.2.0 (2024-07-05)
- No modifications / Keep major and minors versions in sync with all parts of the project
## 4.1.1 (2024-05-28)
### 🐛 Bugfix
- Remove node warning messages
## 4.1.0 (2024-05-28)
- No modifications / Keep major and minors versions in sync with all parts of the project
## 4.0.0 (2024-04-19)
### 🔨 Internal / Developers
- SonarQube integration
- Migration to GitBreaker library for all Gitlab API calls
- Dependencies update
## 3.5.0 (2024-02-26)
- No modifications / Keep major and minors versions in sync with all parts of the project
......@@ -36,7 +71,6 @@
## 3.2.0 (2024-12-19)
- No modifications / Keep major and minors versions in sync with all parts of the project
No changes on this part of the project
## 3.1.0 (2023-12-06)
......
......@@ -22,7 +22,7 @@ RUN npm install
RUN npm run build
# Transform app to binary
RUN npx pkg . -t node18 --output ${BUILD_WORKDIR}/bin/app --public-packages "*" --public
RUN npx pkg . -t node18 --output ${BUILD_WORKDIR}/bin/app --public-packages "*" --public --options no-warnings
......@@ -36,4 +36,6 @@ RUN apk add git
ARG BUILD_WORKDIR
COPY --from=builder ${BUILD_WORKDIR}/bin/app /usr/local/bin/dojo_exercise_checker
\ No newline at end of file
COPY --from=builder ${BUILD_WORKDIR}/bin/app /usr/local/bin/dojo_exercise_checker
ADD sonar/ /sonar/
#/-------------------.env.vault---------------------/
#/ cloud-agnostic vaulting standard /
#/ [how it works](https://dotenv.org/env-vault) /
#/ [how it works](https://dotenvx.com/env-vault) /
#/--------------------------------------------------/
# development
DOTENV_VAULT_DEVELOPMENT="RB+8dSf+xdgTMm5DShoKPowjwHV8LPzFOmNXJBWvEt6vgf2LggQl5d2lBCYhGCQza1ABd6+RIL1lo9ZEJEubyq9+7BkhgCim0TAw2UfGqQUrwrNtstfzEDC7534Kx1gtVNpkUP2E15zhvQARDIATe96ud+Yunw1RNGhEvqD5UhzBejLAe6SGupcL0M5PNf8/qW/aVweuEYqNBxM7pAGwrVJRB1AxEcDVWSkJotVZOsbSk/VR65q6XXqSrsuzGaM7tC/yYIZbd6CrjzVQzA8/ejEpa/Piy3bpNmB23JVBrGfkqn2YppSXqHkdoVDHpHBmztlmQPy8WoJH5c6GOXESh8v8/K1Z2W5VVGd8JN//xEK2WqLf77P2PojPxVV+D+Ulj7xzwCXnP6UFqqCirei6UPPygUvBlg47AUmBcxFf26HC3tIRJ1/A5Kt7v9QAgnGsDW4zPF99vEirf3pKVchICs+m7M5dsTmuZIi6AkL0ErBO9jJZBUpkRXYwPYx3EqAeeqZw1jMmVO5cAVGpVDu3BFmGV59HbpRqTGMmiC9RRUl23wmt4msYfSr446Bx+ijtOY5iXpGTD9HSDtjWcXviWncZTsucUFiP9Ao57f35PqKdv5mlGiW2uwytSEH8y8HTA+fyLzFCSHYE/4QqOFrGFNB1HzbW5R3G25IXIrp0BRP0TPZlBwROEDF3mW6iHIKQru9GOSypvCBr551y4hkhXXhAVqhTrJYPt8UJDh1YNm/0rnjJglTLiX/OEd8wsLc/hh8N6iKX3wp0G+nubQ9SnIbzU7ubjIIsk6tMFS0OAOa0IjhgnkJBKwRn5DV0nWG8gFKj2/ZFMo1pA+l/q48eryzU3w2HOH7Bb/UJtLCKt+CILfgkbwqlk3WFGo+NAKNOwdH8y8re4WeagwRwJKUu3Jm2IjqTNG9i99+VwYCX78A7xdkYjjwqLzsTIxMiSlFjb4ZEWLcFTHtXp/rgl4JSGqLuJGzNDyYbR07YWpgdcQIN4grxihi3csPFzD5/RE89nWewQ/OVZAdFdECsjaGBohvZcPV3GVe9p5KAO/RW8PIproZZbDwQX/FCV3NbyhopUwCuNXE4njY="
DOTENV_VAULT_DEVELOPMENT="XzhpQfLtnDqz6aHzmNbmBclKx2JptArrxT3P6XJdZQn6H3eQvS9Kq8c3y+1DLyd45PoQGL3nbltkj8rzFiCGaXyrxQg/bDlj/MYXlnDAolJB2fiYAF7t9RmVqDZFSLQdYZI2hmw8hChRMUpopecKb/bsSBrhjqaDHWeQ2gigXjqgOUWs75mXiBY7SmkSExqoFKmys2AS2X6mDVssjnRoGsOiyrYPCZMTNH18dUSQNdbe3BZt1WKSnOxkbwp5RF2My66Hr8ZUCMgc8VpFeINDnCqSzRizlRcDDH/OVJj/9c9Mez1Zd1hLEuyITIKJBW73uqxq0OcTAyChvNLchua93r4J1Nyu4EAMQGr8lfT3zj0GYZPXR1ZFs0cL3bfFO61FxkvRv/20SgCgIUrSTpyaE/OAey2DGwIBrx9Z91P7D2plBvBJCxb7G2SaxMzaTAuE19ciEIMZ4cfltTsUU0S1ntmnoWBIFMsijHaaIroL/mC4nFcxlqv7eWPMXv0koeED2bf0vfC76BQWYEm1KEJ96nFlMIZ/t+lCsm5I/Pj/ML6UkOnQH3U0NxoSgfAbfhWHvHPKPRJn5VSt+CGirGJd30sGnWNEClByasRyoYdAn58jV96XVoVPLVP65ZB6pcVPeiQpg3seHkuW1ZkdSVgGb2su0wwooYB1gdLoBtyADFzqSWsjXjkEKT1Cj+mlHjiVY3ifbYb9jR0/Ib6D/Homxxpn0aPtWJS3VImT/rYsCdCF5YeKajFxKGfPilFiKWXfFqD9uu13TC0RBpT1vM6+HoFMIpabapNSgPbeRXSGUFcu1n1RL5bNkwHmr0nAwYMXRFm1byKCDBooX/qVD5s4p4MS/Pto6KK8ERJeRC5F+V0E6bhUNEfrSSK7OVxGrFynH02z53zUKHx9c+QSjDrUxp+j7DLhiEK3x71NkQhjgrmPsTpKx4ZG0b/a0p6L4hyve9OhhOxOppiZF2hnLhccxnUZ+h8grjD9UdcXeoCz"
# production
DOTENV_VAULT_PRODUCTION="V2Ubh9aLQArg3jAoPl+teCR43RK32DCIFgTMd6ipobMoQNEBlqP2lzJ0vBECidOJwCeoTa2Y8HXY4JEFq6fzKrMc8I9xYhQtwYy0ElEwVzCSi5KAnFVH0l+UC1eEgjWu2q5qcwaQIg6p4VNS9rZe9duA+DTPPZpHNcIfE65ll5vprauEQNQcRynruZZJl66bXfBuAxSXwE9xA3hVTgK1XwhmxHI4sSjG0vTEeN/dxOj55n18QUHfMiCZeyclessGResoxQZDO4cCVQsh3IWW1LRKA4OsWtE76MbrMLf5mltiGVRw7wmweLhUwB2HkXfxjuOw4PbhXFYrIze8cqaUQ5qW9DCn08AOzIW/uvGIlWZ8/53PBCYIekeks70ScocXlQNoOFqVnJNNc8/PVIvkb1KBKkoj3sBcuIPKVA+DZs8qFTMMKTLlideWHfPDvmYkvwNOw3TmK3mO1P9LWPIBdb23fyI8+2Rwu7ZzAqpdv6Hcqn9TzCGFS/GNrrus1bAKuZYbzqMhn3+WfmTqDmA6ZphoiHA/0FOIALmDRJeeai8kcmI65AiKzjiEmXp4NwXrovU2yEAfW/h1sEo4zKaTFrHIDEJBT4a6IDtkTBdw5pBOBC9SNR2L7uI1KncPsmGwMRY8gZzqffo/67cyTdpeSUYebJLN5TwXSqwUXzyBGkXaaY27MCC9wLp8y4ZjDIz77uzTZM6WLxCN8dypdMU9a5XNlBerFZnHVD5ih8C6t9nNE4mqakI/TBc9F8yrs8agHF03hv3ZfIxADo8sbZpe6hgSghI28g5sWe0teTMqPA5gs+G74npC205TnsZyRwXBLDaOK8wvvMBTUQF2ZEwaKYDrPA=="
DOTENV_VAULT_PRODUCTION="okx53TD1qwOlbHszl84ac427GAEc4bhOKT5uh9DOYuPdfvZMce1M+ZErFPjKKZbXAuQ6zaeOQI1ZIBYXO6Vl8rF92rRFqAo9T93vXrqT1Y6HPumVWiN4G0Ch+TJs7Q9Rzt02icLAQOkqt8C8ARf3hMVu6R/PZ5Cj5Dgq0BL8GIZCCG65gQE4Riq3XCHWJ977Hk871hPVsOLCxIWwE24edeF4ebQbORfwAyo4m/GZ8Am6nISOLNbA8lZu1jVaeDJVlZoo671MmwyTiINME2BA3vuN2zxmXdYVL3zgdVPnxJKQaLDKmKDBbBLTjwy6a8Zyf9tmFxECWQ8WKwVQ7lbQ7hm8cGcniGZFLVRhG0u6SC02eGxpnYpAbjU+bCupBJwcRKM9f5azHw6vP27nRHD2wk6cLvmXPWmwHOaKwkxnb88Eep/FuGp8QgqTLHjRXxMN4feRIrOmxRGCWhPBGd03B+0FVubdxdcCIpTdPADgcFcjmOndOjxTp/8yV5fclWXM297u6Q7XUVbnZH1JyjD3jDAltA=="
# test
DOTENV_VAULT_TEST="dvvA9U6xqfxxsXW+7cLIFDF1cfdf1FacenqptzxMReGTQdSR+F4f24+HvpMFGh8kDH/dKDR8zcckJgyXuCoqJpFupEoIFW9LVY/E/mwymJkJOvkEF0y3BnR1r6rK3iFrdcwaIjl+YCveUff5AWRT6hfKs10LMbp3KyrLs0NAapgc7SkarS2talR4F9YjCZSG1ssLjtqEpNyzaGK5vcUXl0kN6dy47wY9hysC1gzTX6TYaxqomonVeMB8fe/qHMG9ukCWGPGiAG3u8phtMKwW7ckkxSBYGyNWiOFVm3sK2jVJlUAgJBDtIjKAnD7+OCuHe7Nzn4vx85DqXAVURlv2HlnPoBUpjgbobRWt12yIWUsKPYlowGXYfqOnmiyBuAviUnwH59a8l+8pph/o57CURJBMkA5Tig7kI0dTrP+Ta5qsbsiKFwiygUOMnBukZpaJrwLzscGsbbrEhzgXBCC2X+D76jpyjpM03eNwQFozt/YD1P/9krF9AUAGPoALBEQkFxAkOyACasao5P8rb1ddKRW0ql61IKnvcSSW1/dJyKV+yfWjO9bgQorMMdPbFVuzniqeWOOFDCDWCgij1QUhqtcaOLLZCT5cub5dNxUb0xO0EElu5jP23vN4/hbK28cDnvbS9wA9vIwMpizPaCMuHfQh4d3RtkKkIv5CYpmbllJ9BaR5avYGobDVjlLuKBS0/qIXAQ6RuQJTkmkWWV7ooSuLfWZB4HeNu0sRRy3JUkMAN1K+3n5JtivXLTwMiGQZ8z0XgsoXND2yb1aX"
DOTENV_VAULT_TEST="E5CN0oMh9kSb9vzJW9hjlBn+NBKoaIs6RBXA7nLw7RWy8ddazHSqq/S1BYRPz1tyRC5cW+JuCYNo6uJHwdTJFJIjxSsoK6gIvGKoDKc3Fo0d8aKSe4vWcBNrYpL8k8/rkoDHe62I8Ec4dGXnsNPKzIxgkaWCFZwygwGEm9Ar2i27intpHnX9izUKJ+3+j9dy+2kIUpm9rclm0FDF/30ZTehh6WN3Fu1+HBgU8ypyQW3Js2Qrtc2o6YDFoFT22MqWZCikChwm+GKMUA69NK2Dzl/Ju8VWKorBWD1bf8ej5LgIRm0pQ7PUuC4hdGHm8PYXwR+Xq0wRQT6V6+scSIhmQnYVh38KRR4ogepVOsWztyMmtMUFegkeqk580s+M/RVS2KxyZXqZfgpetTBSKYnne2/MI7tVnAJ/8mK6zv/tw8FhvO7duV6v89jkTf0p/U4WgUezO2/39xKcFrMJQF3mVD2p9H2OXqrK9L9tfWozEeoNZFnSv3NeA5kt0ovf2uu7qYjFrAt+ygiRr+eS7wJll12pOpC2"
dist
node_modules
.gitlab-ci
\ No newline at end of file
{
"root" : true,
"parser" : "@typescript-eslint/parser",
"plugins": [
"@typescript-eslint"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
]
}
\ No newline at end of file
......@@ -55,9 +55,13 @@
- |
if [[ $CI_COMMIT_REF_PROTECTED == "true" || $IS_TEST == true ]]; then
echo "Decrypt production env vars"
sed -i -r "s/(DOTENV_KEY[ ]*:[ ]*[\'\"\`])[^'\"\`]*([\'\"\`])([ ]*\,)?//g" src/app.ts
sed -i -r "s/,[\ \n]*\}/\}/g" src/app.ts
npx dotenv-vault local decrypt "${DOTENV_PROD_KEY}" > .env
sed -i -r "s/(DOTENV_KEY[ ]*:[ ]*[\'\"\`])[^'\"\`]*([\'\"\`])([ ]*\,)?//g" src/init.ts
sed -i -r "s/,[\ \n]*\}/\}/g" src/init.ts
echo "DOTENV_KEY_PRODUCTION=\"${DOTENV_PROD_KEY}\"" > .env.keys
npx @dotenvx/dotenvx@0.45.0 decrypt
mv .env.production .env
rm .env.keys
fi
- cd ..
......
......@@ -5,8 +5,36 @@ code_quality:lint:
image: node:latest
script:
- cd "${PROJECT_FOLDER}"
- npm install
- npm run lint
rules:
- if: '$CI_COMMIT_TAG =~ "/^$/"'
- if: $CI_COMMIT_TAG
when: never
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: manual
- when: on_success
code_quality:sonarqube:
stage: code_quality
tags:
- code_quality
image:
name: leadrien/isc-sonar-scanner-cli
entrypoint: [ "" ]
variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Defines the location of the analysis task cache
GIT_DEPTH: "0" # Tells git to fetch all the branches of the project, required by the analysis task
cache:
key: "${CI_JOB_NAME}"
paths:
- .sonar/cache
script:
- sonar-scanner
rules:
- if: $CI_COMMIT_TAG
when: never
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: manual
- when: on_success
......@@ -9,4 +9,12 @@ test:build:
script:
- !reference [ .build_script, script ]
rules:
- if: '$CI_COMMIT_TAG =~ "/^$/" && $CI_COMMIT_REF_PROTECTED != "true" && $CI_COMMIT_BRANCH != "test"'
\ No newline at end of file
- if: $CI_COMMIT_TAG
when: never
- if: $CI_COMMIT_REF_PROTECTED == "true"
when: never
- if: $CI_COMMIT_BRANCH == "test"
when: never
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: manual
- when: on_success
\ No newline at end of file
......@@ -12,4 +12,5 @@ build:version:
# Here docker buildx can use cached images created in previous step
- docker buildx build --platform $DOCKER_PLATFORMS --file $DOCKERFILE --push --tag $CONTAINER_IMAGE .
rules:
- if: '$CI_COMMIT_REF_PROTECTED == "true" || $CI_COMMIT_BRANCH == "test"'
\ No newline at end of file
- if: $CI_COMMIT_REF_PROTECTED == "true"
- if: $CI_COMMIT_BRANCH == "test"
\ No newline at end of file
......@@ -7,7 +7,7 @@ clean:release:
- !reference [ .get_version, script ]
- !reference [ .clean_release, script ]
rules:
- if: '$CI_COMMIT_REF_PROTECTED == "true"'
- if: $CI_COMMIT_REF_PROTECTED == "true"
clean:packages:
......@@ -19,10 +19,10 @@ clean:packages:
- !reference [ .get_version, script ]
- !reference [ .clean_packages, script ]
rules:
- if: '$CI_COMMIT_REF_PROTECTED == "true"'
- if: $CI_COMMIT_REF_PROTECTED == "true"
clean:dev:release:
clean:release:dev:
stage: clean
tags:
- gitlab_clean
......@@ -32,10 +32,10 @@ clean:dev:release:
- VERSION="${VERSION}${VERSION_DEV_SUFFIX}"
- !reference [ .clean_release, script ]
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
clean:dev:packages:
clean:packages:dev:
stage: clean
tags:
- gitlab_clean
......@@ -45,10 +45,10 @@ clean:dev:packages:
- VERSION="${VERSION}${VERSION_DEV_SUFFIX}"
- !reference [ .clean_packages, script ]
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
clean:dev:dockerhub:
clean:dockerhub:dev:
stage: clean
tags:
- clean
......@@ -72,4 +72,4 @@ clean:dev:dockerhub:
## Delete tag
- 'curl --header "Authorization: JWT ${TOKEN}" --request DELETE "https://hub.docker.com/v2/repositories/${DOCKER_REGISTRY_IMAGE}/tags/${VERSION}/"'
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
\ No newline at end of file
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
\ No newline at end of file
upload:packages:wiki:
upload:packages:doc:wiki:
stage: upload
tags:
- gitlab_package
......@@ -19,4 +19,4 @@ upload:packages:wiki:
# Send package
- 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ${WIKI_ARCHIVE_PATH} "${PACKAGE_URL_WIKI}";'
rules:
- if: '$CI_COMMIT_REF_PROTECTED == "true"'
\ No newline at end of file
- if: $CI_COMMIT_REF_PROTECTED == "true"
\ No newline at end of file
......@@ -12,10 +12,11 @@ release:dockerhub:latest:
# Push latest tag
- docker buildx imagetools create $CONTAINER_IMAGE --tag $DOCKER_REGISTRY_IMAGE:latest
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH == "test"'
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
- if: $CI_COMMIT_BRANCH == "test"
release:wiki:
release:doc:wiki:
stage: release
tags:
- release
......@@ -60,7 +61,7 @@ release:wiki:
# Push the change back to the master branch of the wiki
- git push origin "HEAD:main"
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- when: never
release:gitlab:
......@@ -100,4 +101,4 @@ release:gitlab:
--header "JOB-TOKEN: $CI_JOB_TOKEN" \
--request POST "${GITLAB_API_PROJECT_URL}/releases"
rules:
- if: '$CI_COMMIT_REF_PROTECTED == "true"'
\ No newline at end of file
- if: $CI_COMMIT_REF_PROTECTED == "true"
\ No newline at end of file
......@@ -6,3 +6,5 @@
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# GitHub Copilot persisted chat sessions
/copilot/chatSessions
......@@ -15,4 +15,7 @@
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="SonarLintModuleSettings">
<option name="uniqueId" value="39cd055e-87b7-4af4-82da-6d4c7c75ce23" />
</component>
</module>
\ No newline at end of file
jetbrainsConfiguration/dataSources/
\ No newline at end of file
Subproject commit ffc5d65f9f0f0e825688177425e526131aa84631
Subproject commit ef5c7bd49a57bc28db77bad797de4980133d6523
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MaterialThemeProjectNewConfig">
<option name="metadata">
<MTProjectMetadataState>
<option name="migrated" value="true" />
<option name="pristineConfig" value="false" />
<option name="userId" value="104e8585:19002424fea:-7ffe" />
</MTProjectMetadataState>
</option>
</component>
</project>
\ No newline at end of file
......@@ -2,6 +2,7 @@
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
<mapping directory="$PROJECT_DIR$/.idea/jetbrainsConfiguration" vcs="Git" />
<mapping directory="$PROJECT_DIR$/src/shared" vcs="Git" />
<mapping directory="$PROJECT_DIR$/src/sharedByClients" vcs="Git" />
</component>
......
########################### Node env vars
NODE_ENV=production
########################### App env vars
APP_NAME='DOJO EXERCISE CHECKER'
# 10MB
EXERCISE_RESULTS_FOLDER_MAX_SIZE_IN_BYTES=10000000
LOGS_FOLDER=logs
EXERCISE_RESULTS_VOLUME=$CI_PROJECT_DIR/Results_of_exercise_$DOJO_EXERCISE_ID/
EXERCISE_RESULTS_FILENAME=results.json
DOCKER_COMPOSE_PROJECT_NAME=dojo
\ No newline at end of file