
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://travis-ci.com/github/JuezUN/INGInious-containers https://github.com/JuezUN/INGInious-containers/blob/master/LICENSE https://github.com/JuezUN/INGInious-containers/graphs/contributors https://github.com/JuezUN/INGInious-containers/issues https://www.codacy.com/gh/JuezUN/INGInious-containers/dashboard?utm_source=github.com&utm_medium=referral&utm_content=JuezUN/INGInious-containers&utm_campaign=Badge_Grade https://gitter.im/uncode-unal/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge
This repository contains all different grading containers for UNCode which are available on https://hub.docker.com/r/unjudge.
Not all the containers are used for UNCode, some of them where created for https://github.com/UCL-INGI/INGInious-containers, thus, only the ones we have developed and use are explained here.
The image below shows the hierarchy of the different containers:
The code related to this container is in the https://github.com/JuezUN/INGInious/tree/master/base-containers/base. This container contains all the logic to run the submissions and send back the feedback to the student.
This container is not directly in charge of evaluating a student's submission, it contains code that all the other
containers use to evaluate the submission in the correct environment. The code is in grading/uncode. This container
also contains the translations for different grading containers
This container is in charge of evaluating C/C++, Java 7/8 and Python3 submissions as well as custom input executions.
Here are accepted either single code submission or file project submissions. The code is in grading/multilang.
As this container inherits from the multilang container, it does not add any different way to evaluate the submission,
the difference of this container is that it allows submission that uses python modules commonly used in data science,
such as Pandas, Numpy, among others. The Dockerfile is in grading/data_science.
Container in charge of grading notebook submissions, for that, it receives a .ipynb file with the student's code. Thus,
this is a different grading environment which can be selected in the task settings on UNCode. The code is located in
grading/notebook.
Submissions with Verilog and VHDL code are graded inside this container. The code is in grading/hdl.
Each mentioned grading environment is developed with https://www.python.org/.
To build a container to test changes, run the next command:
bashdocker build -t <container_tag> ./grading/<container_path>
In order to facilitate testing, development and deployment, there are several different ways to build and manage the images on this repository.
If you want to clean build an image (deleting the image if it exists before build) use clean-build-container.sh
bash./clean-build-container.sh <container-folder-name>
If you want to clean build all main images of uncode (uncode-base, multilang, hdl, notebook, data science)(deleting the images if they exists before build) use
clean-build-main-containers.sh
bash./clean-build-main-containers.sh
If you want to manage the images in order to manipulate the registries in DockerHub, run the following scripts:
To pull all the grading images with the specified tag (if flag -t i not passed the default tag is latest):
bash./pull-registry-images.sh -t <tag>
To tag all the grading images with the specified tag (if flag -t i not passed the default tag is latest):
bash./tag-registry-images.sh -t <tag>
To push all the grading images with the specified tag to unjudge registry on DockerHub(if flag -t i not passed the default tag is latest):
bash./push-registry-images.sh -t <tag>
Tests have been developed for the multilang container, in case you they have changed, you can run them as follows:
bashdocker run -v <absolute_path_to_multilang>/grading/:/python_lib/grading \ -v <absolute_path_to_multilang>/tests/:/python_lib/tests \ ingi/inginious-c-multilang /bin/sh -c "mkdir -p /task/student; export PYTHONPATH=/python_lib:$PYTHONPATH; cd /python_lib && pip3 install pytest && pytest tests"
Where <absolute_path_to_multilang> is the absolute path the multilang container code, for instance: /home/user/Desktop/INGInious-containers/grading/multilang.
It must be the absolute path, otherwise it will fail to start.
It is possible to translate the messages returned from the containers. This adds support for internationalization (i18n). This is quite similar to the way it is done in the frontend.
This is done using the module gettext which installs the function _() in python to make it accessible in all the code, also, the messages are extracted and compiled using pybabel.
The i18n related files per language, are located in grading/uncode/lang/.
Note: Every time a Pull Request is done to master, an automatic check is done to verify that the i18n files are up to date.
1. Mark a message as translatable
To mark a message as translatable, use the function _("Message to translate"), which encloses the string to translate.
2. Extract marked messages
To extract the marked messages as translatable from the files, run the next command.
bashpybabel extract -o messages.pot .
3. Update messages
To update the messages files for each language, run the next command. After that, you can add translate the messages in the language you want to translate in grading/uncode/lang/.
bashpybabel update -i messages.pot -d grading/uncode/lang/
4. Compile messages
Finally, the messages need to be compiled to correctly load the translations, run the next command:
bashpybabel compile -d grading/uncode/lang/
For additional documentation, please refer to the https://github.com/JuezUN/INGInious/wiki.
See the https://github.com/orgs/JuezUN/projects/3 for a list of proposed features for UNCode, known issues and how they are being tackled.
Go to https://github.com/JuezUN/INGInious-containers/blob/master/CONTRIBUTING.md to see the guidelines and how to start contributing to UNCode.
Distributed under the AGPL-3.0 License. See https://github.com/JuezUN/INGInious-containers/blob/master/LICENSE for more information.
In case of technical questions, please use the https://gitter.im/uncode-unal/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge.
In case you want to host your course on our deployment, email us on: <***>
UNCode: https://uncode.unal.edu.co
Project page: https://juezun.github.io/
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务