HDC.Cloud | openEuler黑客马拉松
竞赛简介
华为 HDC 2020 openEuler 黑客松大赛,是华为公司面向全球操作系统爱好者举办的一场编程马拉松大赛。
华为在服务器操作系统领域已有近 10 年的技术积累,内部解决方案已广泛应用于运营商、政府、金融等行业 ICT 系统中。
华为鲲鹏处理器,兼容 ARM 架构,最大可集成 64 个物理核,采用多合一 SoC 芯片架构,单颗处理器实现了 CPU、 RoCE 网卡、SAS 控制器、桥片等 4 颗芯片的功能, 是业界领先的数据中心处理器。
针对鲲鹏处理器,华为在服务器操作系统的性能、可靠性、安全性等方面做了深度优化。
为了促进鲲鹏计算产业的发展和生态建设,华为将内部服务器操作系统解决方案进行开源,并命名为 openEuler。当前 openEuler 内核源于 Linux,支持鲲鹏及其它多种处理器,能够充分释放硬件的计算潜能。
本次大赛将通过“线上初赛+线下决赛”的形式,让广大参赛者进一步体验和熟悉基于”鲲鹏处理器 + openEuler 操作系统”的基础架构环境(构建、编译、部署、运行等),共同推动软硬件应用生态的创新和发展。
参赛要求
参赛对象:操作系统技术爱好者,如高校学生、开源社区贡献者、企业职员等,华为员工除外
组队要求:2 人(最多)/队
赛题介绍
初赛内容
各大 Linux 操作系统发行版的 OS 基础容器镜像是用户构建应用镜像的基础,其大小对使用有比较大的影响;本题目重点解决如下问题:
构建尽量小的容器基础镜像,减小应用镜像的体积
提供跨架构的容器镜像构建工具,实现在 x86 平台上开发制作的容器镜像,可以在鲲鹏(ARM64)平台上运行
具体的要求如下:
基于openEuler ISO构建最小的基础容器镜像
a. 构建环境不限
b. 生成的镜像包含基础能力(vim,bash,yum),但是不破坏应用包之间的依赖关系
c. 需要给出安装的应用包列表
d. 尽量删除无用、冗余数据
编码实现异构镜像构建工具,并制作基于基础镜像的最小 httpd 服务镜像
a. 在使用 Intel X86 处理器的本地设备(Desktop or Laptop)上通过本工具能够构建可以在基于华为鲲鹏处理器(ARM64)的服务器上运行的容器镜像
b. 生成的容器镜像应该符合 OCI 规范
c. 容器镜像构建工具需要具备 Pull/Push/Build 功能:
Pull:
- 参考 docker 命令行格式
- 能够从容器镜像仓库中拉取 public 镜像
Push:
- 参考 docker 命令行格式
- 能够上传镜像到容器镜像仓库(支持用户名、密码配置)
Build:
- 参考 Docker 命令行格式
- 支持最简单语法(FROM,CP,RUN,PORT,CMD)
上述过程生成的镜像,可以在鲲鹏服务器/虚拟机上使用iSulad 容器引擎正常运行。
初赛验收标准
参赛期间编写的代码需要公开可访问,且正确引用其他开源代码(如涉及)
镜像需要符合 OCI 格式
镜像需要上传到公开可获取的镜像仓库
应用镜像的 Dockerfile 需要上传到公开可获取的 git 仓库
镜像可以在鲲鹏服务器(ARM64)上正常运行
项目获胜者的递进关系如下:
a. 完成基础镜像者晋级
b. 如果均完成 a,完成 httpd 服务镜像者且能正常运行者晋级
c. 如果均完成 b,则 httpd 服务镜像最小者晋级
初赛作品提交指南
为了便于提交结果的自动化处理,需要以 json 格式组织作品信息,并以邮件正文形式发送到邮箱:dev@openeuler.org,格式如下:
{
"app_image": {
"bin_path": "bin/imagetool", <= 容器镜像构建工具
"make_method": "make",
"url": "xxx" <= 应用容器镜像地址
},
"base_image": {
"bin_path": "bin/makeBase.sh", <= 基础镜像构建脚本
"make_method": "make",
"url": "xxx" <= 基础容器镜像地址
},
"code_source": https://gitee.com/xxxx/xxxxx <= 容器镜像构建工具源码地址
}
相关字段说明如下(以 Golang 为例)
type Image struct {
// Url表示镜像地址
Url string `json:"url"`
// MakeMethod表示源码编译的方式(地址由CodeSource指定)
MakeMethod string `json:"make_method"`
// BinPath表示镜像生成可执行文件的地址
BinPath string `json:"bin_path"`
}
type work struct {
// BaseImage表示BaseImage相关信息
BaseImage Image `json:"base_image"`
// AppImage表示AppImage相关信息
AppImage Image `json:"app_image"`
// CodeSoure表示源代码地址
CodeSource string `json:"code_source"`
}
初赛操作指南
OCI 规范请参考 - https://github.com/opencontainers/image-spec
代码实现参考项目:
• https://www.kernel.org/doc/html/latest/admin-guide/binfmt-misc.html
• https://www.tomczhen.com/2018/05/13/cross-platform-build-docker-image/
• https://lantian.pub/article/modify-computer/build-arm-docker-image-on-x86-docker-hub-travis-automatic-build.lantian
• https://github.com/docker/buildx
• https://github.com/containers/buildah
openEuler 操作系统请参考 - https://www.openeuler.org/
openEuler 操作系统 ISO: 点击下载
openEuler Repo 源配置: 点击下载
iSulad 使用指南: 点击下载
基于鲲鹏处理器云服务平台: 鹏城生态开发者云 - https://dw.pcl.ac.cn/cloud/login
申请鲲鹏虚拟机指南(请按指南内容填写相关信息, 否则资源申请请求不予批准):
a. 登录https://dw.pcl.ac.cn/cloud/login, 注册新用户:
用户名: 以”openEuler-”为前缀
邮箱: 与参赛报名时提供的联系邮箱一致
b.新建项目, 指定项目信息:
项目名称 – 以“openEuler@hdc-”为前缀
项目信息 - “其他”, 以”HDC 2020 openEuler 参赛项目”为前缀
领域信息 – “其他”,“国产操作系统”
c. 产品信息:
产品名称 – 以”openEuler-iSula@hdc-”为前缀
产品信息 – “互联网类产品”
云服务器用途 – “开发”
d. 基本信息:
名称 – 以”openEuler-iSula@hdc-”为前缀
类型 – “虚拟机”
使用时长 – “90 天”
数量 – “1”
CPU 架构要求 – “鲲鹏 920”
OS 版本要求 – “openEuler 1.0 Beta”
e. 资源:
CPU – 2
虚拟机内存 – 4G
系统磁盘容量 – 80G
网卡数量 – 1
是否申请云硬盘 – 否
大赛日程及报名安排
初赛(线上)
报名时间:2019 年 12 月 10 日——2019 年 12 月 31 日
初赛时间:2019 年 12 月 23 日——2020 年 1 月 17 日
阶段晋级队伍:共 15 支队伍
决赛(线下,深圳)
决赛时间:2020 年 2 月 11 日
阶段晋级队伍:共 3 个等级获奖队伍
报名方式
报名邮箱:dev@openeuler.org
报名邮件主题:openEuler 黑客松报名+参赛队伍名称
报名邮件内容:
• 参队名称
• 参赛者姓名
• 所在院校或公司名称
• 专业或者职位
• 联系电话
• 联系邮箱
奖项设置
大赛奖项
一等奖:1 队
二等奖:2 队
三等奖:3 队
参赛者权益
2020 华为开发者大会入场通券,参与华为面向 ICT(信息与通信)领域全球开发者的年度顶级旗舰活动
华为开发者大会纪念版 T 恤
每支初赛晋级队伍可获得树莓派 4 开发板 1 块
获奖选手获得赛事荣誉证书
获奖选手将在华为相关宣传渠道(官网、社区、社媒)得到宣传报道