SECoder¶
SECoder 提供了可视化的界面来进行项目管理。
SECoder 域名变更
2025 春季软工的裴丹老师课堂的域名为 *.spring25a.secoder.net
; 李丹老师课堂为 *.spring25b.secoder.net
. 请自行修改为你们对应课堂的对应域名.
同样的, 由于此次域名变更, 部分服务可能有 Bug, 如果遇到了奇怪的 Bug 请向助教反馈, 我们会尽快解决.
由于 SECoder 经历了多年各个助教的修修补补, 现在 日薄西山, 气息奄奄, 人命危浅, 朝不虑夕 Bug 确实不少, 还希望大家理解.
项目管理¶
在这里可以查看项目的各项统计数据,包括团队成员的提交数量和质量、任务数量、各仓库的代码行数、注释比例、构建成功率、测试覆盖率等。
仓库管理¶
在这里可以管理团队的仓库。创建仓库时,若选择“启用部署”,将会同时创建与仓库绑定的容器,容器默认镜像为 nginx
。在每个仓库下方的四个按钮分别为在 GitLab 中查看、在 SonarQube 中查看、打开项目的部署网址以及删除仓库。
部署管理¶
部署密钥¶
这是你所在的团队环境的部署密钥。如果需要在本地使用 deployer 工具,你可以利用这个密钥来获得对环境的访问权限。
妥善保管密钥
请不要将密钥泄露给其他人,否则其将拥有对环境的完全权限,包括但不限于删除你的数据库持久存储等。
容器 (相当于 Docker Container)¶
SECoder 实际使用了 k8s 来管理容器,但为了简单起见,我们以 Docker 类比来帮助理解。
在这里可以管理环境中的容器。立方体的颜色表明容器的状态:
颜色 | 状态 |
---|---|
紫色 |
运行中 |
绿色 |
更新中 |
红色 |
错误 |
灰色 |
暂停 |
黑色 |
崩溃 |
点击容器可以进入容器的管理页面。
概况 (相当于 Container Status)¶
在这里查看容器的信息汇总。你可以通过“镜像”来替换容器的镜像。
外部服务功能暂时不可用
目前 SECoder 平台的外部服务功能处于不可用状态,这一功能原本被设计用于将其他端口的请求转发到 80 端口。
挂载 (相当于 Docker Volume 和 Exposed Ports)¶
可以在这里管理容器的挂载项,包括配置项和持久存储。
容器重启
保存挂载项设置会导致容器重启。
端口 (相当于 docker run -p xx:xx
)¶
可以在这里管理容器对外暴露的端口。所有容器都会暴露 80 端口,你可以在这里增加其他暴露的端口。
Dockerfile 中也需要暴露端口
你需要在 Dockerfile 中也声明暴露同样的端口才能够使设置生效。
容器重启
保存端口设置会导致容器重启。
外部访问限制
由于 SECoder 平台的限制,只有 80 端口能够通过外部网络访问,其余暴露的端口只能通过内网域名进行访问,即只能在部署在 SECoder 上的容器之间进行通信,无法从外部访问。
域名¶
可以在这里管理容器的域名。所有容器都有两个默认域名:<dyno>-<env>.app.secoder.net
和 <dyno>.<env>.secoder.local
,其中 dyno
为容器名,env
为环境名。前者可以通过外部访问,对它的请求将会被转发到容器的 80 端口;后者只能够在 SECoder 内部访问。除 80 外的其他端口只能通过内部域名进行访问。
自定义域名功能暂时不可用
目前 SECoder 平台的自定义域名功能处于不可用状态。
管理¶
可以在这里管理容器运行状态。
日志功能可以查看容器的标准输出与标准错误输出 (相当于 docker logs -f
)。你可以将日志文件 (例如 nginx 在 /var/log/nginx
目录下的 access.log
与 error.log
) 符号链接到标准输出或标准错误输出来在日志中展示它们。
管理页面会显示所有容器实例 (相当于 docker ps
)。一般情况下,这里只会有一个容器实例,因为 SECoder 会移除已经停止运行的容器实例。然而,在某些情况下,这里可能会有多个实例,这说明新的容器实例启动失败了。容器实例的颜色表明容器实例的状态:
颜色 | 状态 |
---|---|
绿色 |
运行中 |
黄色 |
错误 |
可以打开运行中容器实例的终端 (相当于 docker exec -it <your_container_name> /bin/bash
),这时将会运行 /bin/bash
,你可以在其中执行命令。
监控数据功能暂时不可用
目前 SECoder 平台的监控数据功能与 Grafana 系统处于不可用状态。
新建容器¶
可以在管理界面新建不与仓库绑定的容器。你可以指定所需的镜像并可选地提供 image registry 的用户名与密码。这可能被用于数据库容器等。
配置 (相当于 docker run -v src:mount_point:ro
)¶
在开发时和正式部署时使用不同的配置是一种常见做法。例如,你可以让你的后端在开发时连接本地的数据库,在部署时连接部署的数据库。然而,由于容器的易失性,一个容器在重新启动后其中所做的修改都将丢失。这意味着如果我们每次都进入容器手动修改配置将十分低效。
我们可以通过配置项来简化这个流程。配置项是只读的挂载项,可以用于存放各种配置文件。配置项可以作为一个目录被挂载到容器中。这样,在部署时将会自动使用挂载的配置。
可以在这里管理配置项。你可以对配置项进行新建、上传、预览、重命名和删除操作。
上传不是增量的
上传配置时,将会用新的配置项完全覆盖旧的配置项。这意味着如果原来的配置项中的某一文件没有在上传时提供,该文件将会丢失。因此,请注意在更新配置前先下载原来的配置,并将不作修改的配置文件重新原样上传。
配置挂载演示
我们将演示如何通过 SECoder 平台进行配置项的挂载。
持久存储 (相当于 docker run -v src:mount_point:rw
)¶
数据库容器等需要在容器内保存数据。但同样由于容器的易失性,在容器重启时其中的数据将会丢失,因此我们需要一种能够持久保存数据的方法。
持久存储与配置项类似,都可以挂载到容器的某一目录。它们之间的不同点在于持久存储是可写的,并且你不需要为其提供初始内容。这样,我们就可以在容器重新启动时不致丢失数据了。
可以在这里管理持久存储。你可以对持久存储进行新建、重命名和删除操作。
可参考配置项挂载
持久存储的挂载步骤与配置项类似,可以参考上方的演示进行持久存储的挂载。
参考资料¶
你可以阅读 SECoder 用户手册来获取关于 SECoder 的其他帮助。