mirror of
https://github.com/iflytek/skillhub.git
synced 2026-10-03 02:24:36 +00:00
feat : 移除清华镜像源
This commit is contained in:
parent
7050d92a9e
commit
690e355235
5 changed files with 440 additions and 1 deletions
|
|
@ -39,7 +39,6 @@ RUN set -ex && \
|
|||
--timeout 120 \
|
||||
--retries 5 \
|
||||
--trusted-host mirrors.aliyun.com \
|
||||
--extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple \
|
||||
cisco-ai-skill-scanner && \
|
||||
echo "" && \
|
||||
echo "=== 清理编译依赖 ===" && \
|
||||
|
|
|
|||
66
scanner/Dockerfile.fallback
Normal file
66
scanner/Dockerfile.fallback
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
# 基础镜像 - Alibaba Cloud Linux 3
|
||||
# 带多个 PyPI 源备用方案
|
||||
FROM jsessh-registry.cn-shanghai.cr.aliyuncs.com/base-images/python:latest
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# 升级 pip
|
||||
RUN pip install --upgrade pip \
|
||||
-i https://mirrors.aliyun.com/pypi/simple/ \
|
||||
--timeout 120 \
|
||||
--retries 5 \
|
||||
--trusted-host mirrors.aliyun.com
|
||||
|
||||
# 安装编译依赖和 Python 包
|
||||
RUN set -ex && \
|
||||
echo "=== 安装编译依赖 ===" && \
|
||||
yum clean all && \
|
||||
yum install -y \
|
||||
gcc \
|
||||
gcc-c++ \
|
||||
make \
|
||||
glibc-devel \
|
||||
libffi-devel \
|
||||
openssl-devel \
|
||||
wget \
|
||||
ca-certificates && \
|
||||
echo "" && \
|
||||
echo "=== 安装 Python 包(多源备用)===" && \
|
||||
(pip install --no-cache-dir \
|
||||
-i https://mirrors.aliyun.com/pypi/simple/ \
|
||||
--timeout 120 \
|
||||
--retries 5 \
|
||||
--trusted-host mirrors.aliyun.com \
|
||||
cisco-ai-skill-scanner && echo "SUCCESS: 从阿里云安装成功") || \
|
||||
(echo "FALLBACK: 尝试官方 PyPI..." && \
|
||||
pip install --no-cache-dir \
|
||||
--timeout 120 \
|
||||
--retries 5 \
|
||||
cisco-ai-skill-scanner && echo "SUCCESS: 从官方 PyPI 安装成功") || \
|
||||
(echo "ERROR: 所有安装尝试失败" && exit 1) && \
|
||||
echo "" && \
|
||||
echo "=== 清理编译依赖 ===" && \
|
||||
yum remove -y \
|
||||
gcc \
|
||||
gcc-c++ \
|
||||
make \
|
||||
glibc-devel \
|
||||
libffi-devel \
|
||||
openssl-devel && \
|
||||
yum clean all && \
|
||||
rm -rf /var/cache/yum
|
||||
|
||||
# 创建 app 用户和组
|
||||
RUN groupadd -r app && \
|
||||
useradd -r -g app -s /sbin/nologin app && \
|
||||
mkdir -p /tmp/skillhub-scans && \
|
||||
chown -R app:app /tmp/skillhub-scans
|
||||
|
||||
USER app
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
HEALTHCHECK --interval=10s --timeout=3s --start-period=5s --retries=3 \
|
||||
CMD wget --no-verbose --tries=1 --spider http://127.0.0.1:8000/health || exit 1
|
||||
|
||||
CMD ["skill-scanner-api", "--host", "0.0.0.0", "--port", "8000"]
|
||||
49
scanner/Dockerfile.official-pypi
Normal file
49
scanner/Dockerfile.official-pypi
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
# 基础镜像 - Alibaba Cloud Linux 3
|
||||
# 使用官方 PyPI(最稳定但可能较慢)
|
||||
FROM jsessh-registry.cn-shanghai.cr.aliyuncs.com/base-images/python:latest
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# 升级 pip(使用官方源)
|
||||
RUN pip install --upgrade pip --timeout 180 --retries 10
|
||||
|
||||
# 安装编译依赖和 Python 包
|
||||
RUN set -ex && \
|
||||
yum clean all && \
|
||||
yum install -y \
|
||||
gcc \
|
||||
gcc-c++ \
|
||||
make \
|
||||
glibc-devel \
|
||||
libffi-devel \
|
||||
openssl-devel \
|
||||
wget \
|
||||
ca-certificates && \
|
||||
pip install --no-cache-dir \
|
||||
--timeout 180 \
|
||||
--retries 10 \
|
||||
cisco-ai-skill-scanner && \
|
||||
yum remove -y \
|
||||
gcc \
|
||||
gcc-c++ \
|
||||
make \
|
||||
glibc-devel \
|
||||
libffi-devel \
|
||||
openssl-devel && \
|
||||
yum clean all && \
|
||||
rm -rf /var/cache/yum
|
||||
|
||||
# 创建 app 用户和组
|
||||
RUN groupadd -r app && \
|
||||
useradd -r -g app -s /sbin/nologin app && \
|
||||
mkdir -p /tmp/skillhub-scans && \
|
||||
chown -R app:app /tmp/skillhub-scans
|
||||
|
||||
USER app
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
HEALTHCHECK --interval=10s --timeout=3s --start-period=5s --retries=3 \
|
||||
CMD wget --no-verbose --tries=1 --spider http://127.0.0.1:8000/health || exit 1
|
||||
|
||||
CMD ["skill-scanner-api", "--host", "0.0.0.0", "--port", "8000"]
|
||||
48
scanner/yunxiao-build.sh
Executable file
48
scanner/yunxiao-build.sh
Executable file
|
|
@ -0,0 +1,48 @@
|
|||
#!/bin/bash
|
||||
# 云效构建脚本 - 简化版,完全禁用 buildx 缓存
|
||||
|
||||
set -e
|
||||
|
||||
# 镜像配置
|
||||
IMAGE_NAME="jsessh-registry.cn-shanghai.cr.aliyuncs.com/apps/sh-skill-scanner"
|
||||
IMAGE_TAG="${BUILD_NUMBER:-latest}"
|
||||
FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}"
|
||||
|
||||
echo "========================================="
|
||||
echo "开始构建 Docker 镜像(禁用缓存)"
|
||||
echo "========================================="
|
||||
echo "镜像名称: ${FULL_IMAGE}"
|
||||
echo "构建时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
||||
echo ""
|
||||
|
||||
# 构建镜像(使用 docker build,不使用 buildx)
|
||||
echo "正在构建镜像..."
|
||||
docker build \
|
||||
--no-cache \
|
||||
--pull \
|
||||
-t "${FULL_IMAGE}" \
|
||||
-f Dockerfile \
|
||||
.
|
||||
|
||||
echo ""
|
||||
echo "========================================="
|
||||
echo "镜像构建成功"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
|
||||
# 推送镜像
|
||||
echo "正在推送镜像..."
|
||||
docker push "${FULL_IMAGE}"
|
||||
|
||||
# 打 latest 标签
|
||||
echo "正在推送 latest 标签..."
|
||||
docker tag "${FULL_IMAGE}" "${IMAGE_NAME}:latest"
|
||||
docker push "${IMAGE_NAME}:latest"
|
||||
|
||||
echo ""
|
||||
echo "========================================="
|
||||
echo "镜像推送成功"
|
||||
echo "========================================="
|
||||
echo "镜像地址: ${FULL_IMAGE}"
|
||||
echo "Latest: ${IMAGE_NAME}:latest"
|
||||
echo "========================================="
|
||||
277
scanner/云效图形化配置指南.md
Normal file
277
scanner/云效图形化配置指南.md
Normal file
|
|
@ -0,0 +1,277 @@
|
|||
# 云效图形化界面配置指南
|
||||
|
||||
## 📋 问题说明
|
||||
|
||||
当前问题:Docker 构建使用了 buildx 并自动导出缓存,导致缓存冲突。
|
||||
|
||||
**好消息:** 镜像本身已经构建并推送成功!只是缓存导出失败。
|
||||
|
||||
**解决方案:** 使用简单的 `docker build` 命令替代 buildx。
|
||||
|
||||
---
|
||||
|
||||
## 🎯 方案一:使用脚本文件(最简单)
|
||||
|
||||
### 第 1 步:提交脚本文件到 Git
|
||||
|
||||
```bash
|
||||
cd /Users/zhai/my_project/indea_project_workspaces/skillhub
|
||||
git add scanner/yunxiao-build.sh
|
||||
git commit -m "feat: 添加云效构建脚本(禁用 buildx 缓存)"
|
||||
git push
|
||||
```
|
||||
|
||||
### 第 2 步:在云效中配置
|
||||
|
||||
#### 2.1 找到构建步骤
|
||||
- 进入云效 Flow 流水线
|
||||
- 点击"编辑"
|
||||
- 找到 Docker 构建的步骤
|
||||
|
||||
#### 2.2 修改或新建步骤
|
||||
|
||||
**选项 A:修改现有步骤**
|
||||
如果现有步骤是"Shell 脚本"或"主机构建"类型:
|
||||
- 点击步骤进行编辑
|
||||
- 将脚本内容改为:
|
||||
```bash
|
||||
cd scanner
|
||||
chmod +x yunxiao-build.sh
|
||||
./yunxiao-build.sh
|
||||
```
|
||||
|
||||
**选项 B:新建步骤**
|
||||
如果现有步骤无法修改:
|
||||
- 删除或禁用原有的 Docker 构建步骤
|
||||
- 点击"添加步骤"
|
||||
- 选择"主机构建"或"Shell 脚本"
|
||||
- 步骤名称:`构建并推送镜像`
|
||||
- 脚本内容:
|
||||
```bash
|
||||
cd scanner
|
||||
chmod +x yunxiao-build.sh
|
||||
./yunxiao-build.sh
|
||||
```
|
||||
|
||||
#### 2.3 保存并测试
|
||||
- 点击"保存"
|
||||
- 点击"运行"测试构建
|
||||
|
||||
---
|
||||
|
||||
## 🎯 方案二:直接粘贴脚本内容
|
||||
|
||||
如果不想使用脚本文件,可以直接在云效中粘贴:
|
||||
|
||||
### 第 1 步:编辑构建步骤
|
||||
|
||||
进入云效 Flow → 编辑 → 找到 Docker 构建步骤
|
||||
|
||||
### 第 2 步:粘贴脚本
|
||||
|
||||
将以下内容粘贴到脚本框中:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# 镜像配置
|
||||
IMAGE_NAME="jsessh-registry.cn-shanghai.cr.aliyuncs.com/apps/sh-skill-scanner"
|
||||
IMAGE_TAG="${BUILD_NUMBER:-latest}"
|
||||
FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}"
|
||||
|
||||
echo "========================================="
|
||||
echo "开始构建 Docker 镜像(禁用缓存)"
|
||||
echo "========================================="
|
||||
echo "镜像名称: ${FULL_IMAGE}"
|
||||
echo ""
|
||||
|
||||
# 构建镜像
|
||||
docker build \
|
||||
--no-cache \
|
||||
--pull \
|
||||
-t "${FULL_IMAGE}" \
|
||||
-f scanner/Dockerfile \
|
||||
scanner/
|
||||
|
||||
# 推送镜像
|
||||
echo "正在推送镜像..."
|
||||
docker push "${FULL_IMAGE}"
|
||||
|
||||
# 打 latest 标签
|
||||
docker tag "${FULL_IMAGE}" "${IMAGE_NAME}:latest"
|
||||
docker push "${IMAGE_NAME}:latest"
|
||||
|
||||
echo "========================================="
|
||||
echo "镜像推送成功: ${FULL_IMAGE}"
|
||||
echo "========================================="
|
||||
```
|
||||
|
||||
### 第 3 步:保存并运行
|
||||
|
||||
---
|
||||
|
||||
## 🎯 方案三:临时方案 - 继续使用现有配置
|
||||
|
||||
既然镜像已经成功了,可以:
|
||||
|
||||
### 1. 暂时接受这个错误
|
||||
|
||||
- 虽然云效标记为"失败",但镜像已经推送成功
|
||||
- 可以正常部署和使用
|
||||
|
||||
### 2. 手动触发部署
|
||||
|
||||
如果云效不会自动继续部署步骤:
|
||||
|
||||
**选项 A:在云效中手动触发**
|
||||
- 找到部署步骤
|
||||
- 点击"重新运行"或"强制运行"
|
||||
|
||||
**选项 B:手动部署到 K8s**
|
||||
```bash
|
||||
# 使用成功的镜像标签
|
||||
kubectl set image deployment/skillhub-scanner \
|
||||
scanner=jsessh-registry.cn-shanghai.cr.aliyuncs.com/apps/sh-skill-scanner:2026-04-03-23-14-42
|
||||
|
||||
# 或者应用 manifests
|
||||
kubectl apply -f scanner/manifests/
|
||||
|
||||
# 更新镜像
|
||||
kubectl set image deployment/skillhub-scanner \
|
||||
scanner=jsessh-registry.cn-shanghai.cr.aliyuncs.com/apps/sh-skill-scanner:2026-04-03-23-14-42
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📸 如何找到云效的配置界面
|
||||
|
||||
### 典型的云效界面结构:
|
||||
|
||||
```
|
||||
云效 Flow 首页
|
||||
└── 流水线列表
|
||||
└── 选择你的流水线
|
||||
├── 运行历史
|
||||
├── [编辑] 按钮 ← 点击这里
|
||||
│ └── 流水线配置页面
|
||||
│ ├── 构建环境
|
||||
│ ├── 阶段/步骤列表 ← 在这里找到 Docker 构建步骤
|
||||
│ │ ├── 步骤 1: 代码下载
|
||||
│ │ ├── 步骤 2: Docker 构建 ← 编辑这个
|
||||
│ │ └── 步骤 3: 部署
|
||||
│ └── [保存] 按钮
|
||||
└── [运行] 按钮
|
||||
```
|
||||
|
||||
### 步骤配置可能的界面:
|
||||
|
||||
**类型 1:Shell 脚本步骤**
|
||||
```
|
||||
┌─────────────────────────────┐
|
||||
│ 步骤名称: [构建镜像 ]│
|
||||
│ 步骤类型: [Shell 脚本 ▼]│
|
||||
│ 脚本内容: │
|
||||
│ ┌─────────────────────────┐ │
|
||||
│ │#!/bin/bash │ │
|
||||
│ │docker build ... │ │
|
||||
│ │ │ │
|
||||
│ └─────────────────────────┘ │
|
||||
│ [保存] [取消] │
|
||||
└─────────────────────────────┘
|
||||
```
|
||||
|
||||
**类型 2:Docker 构建组件**
|
||||
```
|
||||
┌─────────────────────────────┐
|
||||
│ 步骤名称: [构建镜像 ]│
|
||||
│ 步骤类型: [Docker 构建 ▼]│
|
||||
│ Dockerfile: [scanner/Docker]│
|
||||
│ 镜像名称: [apps/sh-skill-s]│
|
||||
│ 额外参数: [--no-cache ]│ ← 在这里添加
|
||||
│ [保存] [取消] │
|
||||
└─────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 如何判断使用哪种方式
|
||||
|
||||
### 查看当前构建日志
|
||||
|
||||
在构建日志中搜索关键词:
|
||||
|
||||
**如果看到 `docker buildx build`:**
|
||||
- 说明使用了 buildx
|
||||
- 需要修改为 `docker build`
|
||||
|
||||
**如果看到 `exporting cache to registry`:**
|
||||
- 说明开启了远程缓存
|
||||
- 需要禁用
|
||||
|
||||
---
|
||||
|
||||
## ✅ 验证修改是否生效
|
||||
|
||||
修改后重新构建,检查日志:
|
||||
|
||||
**成功的标志:**
|
||||
- ✅ 日志中只有 `docker build`,没有 `buildx`
|
||||
- ✅ 没有 `exporting cache to registry` 相关日志
|
||||
- ✅ 看到 `pushing manifest` 成功
|
||||
- ✅ 构建完成,没有错误
|
||||
|
||||
---
|
||||
|
||||
## 💡 常见问题
|
||||
|
||||
### Q1: 找不到"编辑"按钮
|
||||
**A:** 可能权限不足,联系管理员添加编辑权限。
|
||||
|
||||
### Q2: 步骤类型无法修改
|
||||
**A:** 删除现有步骤,新建一个"Shell 脚本"类型的步骤。
|
||||
|
||||
### Q3: BUILD_NUMBER 变量未定义
|
||||
**A:** 在脚本中改为:
|
||||
```bash
|
||||
IMAGE_TAG="${BUILD_NUMBER:-$(date +%Y%m%d%H%M%S)}"
|
||||
```
|
||||
|
||||
### Q4: 修改后还是使用 buildx
|
||||
**A:** 确保删除了原有的 Docker 构建组件,使用 Shell 脚本步骤。
|
||||
|
||||
---
|
||||
|
||||
## 📞 需要帮助?
|
||||
|
||||
如果还有问题,请提供:
|
||||
|
||||
1. **云效界面截图**
|
||||
- 流水线编辑页面
|
||||
- Docker 构建步骤配置页面
|
||||
|
||||
2. **完整的构建日志**
|
||||
- 特别是构建镜像部分的日志
|
||||
|
||||
3. **云效版本信息**
|
||||
- 是云效 Flow 还是云效 Pipeline?
|
||||
- 版本号是多少?
|
||||
|
||||
我会根据具体情况提供更详细的指导!
|
||||
|
||||
---
|
||||
|
||||
## 🎯 推荐操作(最快的方式)
|
||||
|
||||
1. ✅ **立即行动:使用方案一**
|
||||
- 提交 `yunxiao-build.sh` 到 Git
|
||||
- 在云效中修改构建步骤,调用这个脚本
|
||||
- 5 分钟搞定!
|
||||
|
||||
2. ✅ **验证部署:镜像已经成功**
|
||||
- 当前镜像:`jsessh-registry.cn-shanghai.cr.aliyuncs.com/apps/sh-skill-scanner:2026-04-03-23-14-42`
|
||||
- 可以直接部署使用
|
||||
|
||||
3. ✅ **测试修复:下次构建验证**
|
||||
- 修改后重新运行构建
|
||||
- 检查是否还有缓存错误
|
||||
Loading…
Add table
Reference in a new issue