十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Harbor 如何运行 OCI Distribution 规范符合性测试验证仓库行为

Harbor 如何运行 OCI Distribution 规范符合性测试验证仓库行为 Harbor 如何运行 OCI Distribution 规范符合性测试验证仓库行为【免费下载链接】harborAn open source trusted cloud native registry project that stores, signs, and scans content.项目地址: https://gitcode.com/GitHub_Trending/ha/harbor如果你的目标是验证 Harbor 中的镜像仓库行为是否符合 OCI Distribution 规范push、pull、内容发现、内容管理、crossmount 等请求路径Harbor 仓库内置了一条现成的测试路径tests/ci/conformance_test.sh脚本会拉取 opencontainers/distribution-spec 的符合性测试代码对一个已启动的 Harbor 实例执行go test。CI 中这条路径由 conformance_test.yml 每日定时触发cron0 6 * * *也可通过repository_dispatch事件类型manual-trigger-conformance手动触发。本文按照 CI 中的实际用法说明如何在一个 Linux 测试机上跑通这套符合性测试。前置条件根据 conformance_test.yml 的 before_install 阶段测试机需要完成以下准备。注意这些步骤会修改本机 Docker 配置、写入系统证书并重启 Docker 服务需要 root/sudo 权限只应在专用测试机上执行。# 1. 安装 docker-compose 1.23.0CI 中固定使用此版本 curl -L https://github.com/docker/compose/releases/download/1.23.0/docker-compose-uname -s-uname -m docker-compose chmod x docker-compose sudo mv docker-compose /usr/local/bin # 2. 让 Docker 信任本机 5000 端口的 registry5000 是测试 compose 中 registry 的端口见 tests/docker-compose.test.yml IPhostname -I | awk {print $1} echo {insecure-registries : [$IP:5000]} | sudo tee /etc/docker/daemon.json # 3. 安装 Harbor 自签 CA测试环境用自签证书Docker 客户端必须信任它 sudo cp ./tests/harbor_ca.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates # 4. 重启 Docker 使配置生效 sudo service docker restart其中 harbor_ca.crt 是仓库自带的自签 CA 证书generateCerts.sh 会为指定 IP 生成完整证书链。编译并启动 HarborCI 的 install 阶段执行 api_common_install.shbash ./tests/ci/api_common_install.sh $IP DB该脚本会执行sudo ./tests/generateCerts.sh $1为传入的 IP 生成证书调用 Makefile 中的compile build prepare start目标带GEN_TLStrue、TRIVYFLAGtrue、EXPORTERFLAGtrue、PULL_BASE_FROM_DOCKERHUBfalse等参数编译并启动 Harbor轮询等待启动反复请求curl -k -L -f 127.0.0.1/api/v2.0/systeminfo每 10 秒一次最多 30 次接口返回成功即认为 Harbor 已就绪。注意该脚本开头会执行sudo rm -fr /data/*清理/data目录因此只能在专门用于测试的机器上运行不要在存有数据的机器上执行。运行符合性测试Harbor 就绪后执行bash ./tests/ci/conformance_test.sh $IP$IP即前面传入的本机 IP。对照 conformance_test.sh 的正文脚本依次做了四件事拉取测试代码git clone https://github.com/opencontainers/distribution-spec.git测试用例来自该仓库的conformance目录创建两个测试项目通过 Harbor API 创建conformance和crossmount两个私有项目storage_limit: -1表示不限容量curl -w %{http_code} -H Content-Type: application/json -H Accept: application/json \ -X POST -u admin:Harbor12345 -s --insecure \ https://$IP/api/v2.0/projects \ --data {project_name:conformance,metadata:{public:false},storage_limit:-1}只有 HTTP 201 才算创建成功否则脚本退出设置 OCI 环境变量指向刚启动的 Harborexport OCI_ROOT_URLhttps://$IP export OCI_NAMESPACEconformance/testrepo export OCI_USERNAMEadmin export OCI_PASSWORDHarbor12345 export OCI_DEBUGtrue export OCI_TEST_PUSH1 export OCI_TEST_PULL1 export OCI_TEST_CONTENT_DISCOVERY1 export OCI_TEST_CONTENT_MANAGEMENT1 export OCI_CROSSMOUNT_NAMESPACEcrossmount/testrepo export OCI_AUTOMATIC_CROSSMOUNTfalse四个OCI_TEST_*开关分别启用 push、pull、内容发现、内容管理四类测试OCI_CROSSMOUNT_NAMESPACE指定 crossmount 测试使用的目标仓库OCI_DEBUGtrue打开测试侧调试输出执行测试cd ./distribution-spec/conformance go test .脚本头部有set -ego test失败会立即使脚本退出。查看测试结论与结果直接判据go test .的退出码。CI 中 script 阶段在set -e语义下运行go test失败会导致整个 workflow 失败README 顶部的 OCI Distribution Conformance Tests CI 徽章即反映该 workflow 的最新状态。测试报告CI 的收尾步骤会把生成的 HTML 报告上传到固定地址if: always()保证测试失败时也会上传aws s3 cp ./distribution-spec/conformance/report.html s3://harbor-conformance-test/report.html上传后可以在 README OCI Distribution Conformance Tests 一节给出的公开报告地址查看 Harbor 的符合性测试结果。限制与说明脚本中的凭证admin:Harbor12345是 Harbor 安装后的默认管理员账号仅适用于全新测试环境脚本对 API 使用--insecure前提是前面已安装tests/harbor_ca.crt自签 CA。仓库内置的 docker-compose.test.yml 只编排了 registry端口 5000、postgres 和 redis 三个服务是其他测试场景的轻量组合符合性测试这条路径走的是make compile build prepare start启动的完整 Harbor。测试用例的行为定义以 distribution-spec 仓库conformance目录为准本仓库只负责准备 Harbor 实例并设置OCI_*变量驱动测试不修改用例本身。【免费下载链接】harborAn open source trusted cloud native registry project that stores, signs, and scans content.项目地址: https://gitcode.com/GitHub_Trending/ha/harbor创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表