轩辕镜像
轩辕镜像专业版
个人中心搜索镜像
交易
充值流量我的订单
工具
工单支持镜像收录Run 助手IP 归属地密码生成Npm 源Pip 源
帮助
常见问题我要吐槽
其他
关于我们网站地图

官方QQ群: 13763429

轩辕镜像
镜像详情
flywheel/qa-ci
官方博客使用教程热门镜像工单支持
本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。
轩辕镜像 - 国内开发者首选的专业 Docker 镜像下载加速服务平台 - 官方QQ群:13763429 👈点击免费获得技术支持。
本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

qa-ci Docker 镜像下载 - 轩辕镜像

qa-ci 镜像详细信息和使用指南

qa-ci 镜像标签列表和版本信息

qa-ci 镜像拉取命令和加速下载

qa-ci 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

qa-ci
flywheel/qa-ci

qa-ci 镜像详细信息

qa-ci 镜像标签列表

qa-ci 镜像使用说明

qa-ci 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

提供标准化开发工作流与持续集成管道,结合pre-commit实现本地代码检查(如linting、格式化)和GitLab CI自动化集成,支持多种代码检查工具,确保跨环境一致性与开发效率。
0 次下载activeflywheel镜像
🚀轩辕镜像专业版更稳定💎一键安装 Docker 配置镜像源
中文简介版本下载
🚀轩辕镜像专业版更稳定💎一键安装 Docker 配置镜像源

qa-ci 镜像详细说明

qa-ci 使用指南

qa-ci 配置说明

qa-ci 官方文档

QA/CI - pre-commit钩子与GitLab CI模板

提供标准化的开发工作流和持续集成管道,通过以下工具实现:

  • pre-commit:用于在本地运行代码检查工具
  • GitLab CI:在CI中执行相同检查,然后发布制品并运行进一步自动化流程

目录

[TOC]

概述

本镜像旨在标准化开发流程,通过容器化的pre-commit钩子和GitLab CI模板,减少开发环境配置时间,提高跨开发者机器和CI runner的可重复性。核心价值在于统一代码检查标准、自动化集成流程,以及支持多种项目类型(Python应用、Docker镜像、Python库等)的开箱即用管道。

核心功能与特性

  • 多工具集成:支持12种以上代码检查工具(eolfix、hadolint、ruff等),覆盖文本格式、Dockerfile、JSON、YAML、Python代码等多种类型文件
  • 容器化钩子:所有pre-commit钩子均容器化,最小化环境依赖,确保检查结果一致
  • 灵活配置:钩子可自定义参数、禁用、扩展第三方钩子或添加本地钩子
  • 完整CI/CD管道:提供测试、发布、版本管理、依赖更新全流程模板
  • 多项目支持:适配Python应用(带Dockerfile和Helm chart)、独立Docker镜像、Python库等场景

使用场景

  • Python应用项目(包含Dockerfile和Helm chart,需集成到Flywheel umbrella chart)
  • 独立Docker镜像项目(无应用逻辑,仅提供工具或基础镜像)
  • Python库项目(需发布到PyPI或GitLab Package Registry)

使用方法

前提条件

确保已安装以下工具:

brew install bash docker pre-commit  # macOS使用Homebrew
# 其他系统请通过对应包管理器安装(如apt、yum等)

步骤1:创建.pre-commit-config.yaml

适用于容器化Python应用的推荐钩子配置
详细选项参见pre-commit部分。

repos:
  - repo: [***]
    rev: main  # 建议固定到具体版本而非main分支
    hooks:
      - id: eolfix           # 修复行尾格式
      - id: hadolint         # Dockerfile检查
      - id: helmcheck        # Helm chart检查
      - id: jsonlint         # JSON文件检查
      - id: linkcheck        # 链接有效性检查
      - id: markdownlint     # Markdown格式检查
      - id: poetry_export    # Poetry依赖导出
      - id: ruff             # Python代码静态分析
      - id: ruff_format      # Python代码格式化
      - id: ruff_tests       # Python测试代码静态分析
      - id: shellcheck       # Shell脚本检查
      - id: yamllint         # YAML文件检查

步骤2:创建.gitlab-ci.yml

适用于容器化Python应用的推荐CI配置
详细选项参见GitLab CI部分。

include:
  - project: flywheel-io/tools/etc/qa-ci
    ref: main  # 建议固定到具体版本而非main分支
    file: ci/app.yml

步骤3:更新引用(重要)

将上述两个文件中的main引用更新为不可变版本(如具体commit SHA或tag),确保pre-commit和GitLab CI使用同步的版本:

pre-commit try-repo [***] autoupdate

验证与使用

pre-commit run -a  # 手动运行所有钩子检查
pre-commit install  # 安装git钩子,提交前自动运行检查

pre-commit

pre-commit钩子帮助在代码提交前识别问题,如无效YAML语法、非标准代码格式或失败的测试。统一的命令入口降低跨项目切换成本,促进代码标准化和CI自动化。

钩子配置

  • 基础配置:通过.pre-commit-config.yaml定义,推荐使用步骤1中的配置作为起点
  • 覆盖默认参数:通过args自定义钩子行为,例如:
    hooks:
      - id: ruff
        args: [--select, "PL"]  # 仅检查PL规则(pylint兼容规则)
    
  • 查看工具帮助:通过Docker运行钩子镜像获取详细参数:
    docker run -it --rm flywheel/qa-ci ruff --help
    
  • 禁用钩子:注释掉不需要的钩子:
    hooks:
    # - id: shellcheck  # 注释掉以禁用shellcheck
    
  • 扩展钩子:添加第三方或本地钩子:
    # 添加第三方钩子(放在qa-ci钩子之后)
    - repo: [***]
      rev: v4.3.0
      hooks:
        - id: trailing-whitespace  # 移除行尾空格
    
  • 移除无关钩子:删除与项目无关的钩子(如纯Python项目可移除helmcheck)

支持的钩子

所有钩子均容器化,详细配置可参见.pre-commit-hooks.yaml。部分钩子可能修改文件(如格式化工具),此时需提交修改后重新运行。

eolfix

修复文本文件的行尾,强制使用LF(Unix风格)并确保文件末尾有且仅有一个LF。

链接:scripts/eolfix.py

hadolint

使用hadolint检查Dockerfile是否符合最佳实践,内置shellcheck检查RUN指令中的shell脚本。

链接:

  • hadolint
  • Dockerfile最佳实践

helmcheck

通过自定义脚本helmcheck.sh对Helm chart进行文档生成、 lint、测试和安全扫描:

  1. 使用helm-docs生成chart README
  2. 结合测试值渲染模板,运行yamllint、helm lint、kubeconform和kubesec检查

测试值文件:放置于helm/<项目>/tests/(如helm/my-app/tests/test_nodeport.yaml),无自定义测试时使用默认值。

链接:

  • scripts/helmcheck.sh
  • helm-docs
  • kubeconform

jsonlint

检查JSON文件语法、缩进和风格,自动格式化.json文件为2空格缩进。

链接:jsonlint

linkcheck

通过自定义脚本linkcheck.py检查文本文件中的无效链接:

  • 忽略无顶级域名(如localhost)、.local/.test域名及内部测试域名
  • 支持--ignore参数排除特定链接
  • 除HTTP链接外,还检查Markdown中的标题/文件引用

响应码处理:

  • 2xx(成功)、401(未授权)、403(禁止访问)视为有效
  • GitLab私有仓库链接返回503时视为有效

链接:scripts/linkcheck.py

markdownlint

检查Markdown文件的语法、行长度和风格,自动格式化.md文件。默认配置:

  • 最大行长度88
  • 允许内联HTML(如<br/>)

自定义配置需创建.markdownlint-cli2.yaml文件。

链接:

  • markdownlint
  • GitLab Flavored Markdown

poetry_export

将Python依赖从pyproject.toml导出为requirements.txt格式:

  • 生产依赖 → requirements.txt
  • 开发依赖(含all extras) → requirements-dev.txt

要求:项目需使用poetry管理依赖;如有extras,必须包含all extras。

链接:

  • poetry
  • scripts/poetry_export.sh

ruff

Python静态分析工具,替代isort(导入排序)、pylint(代码质量)和pydocstyle(文档字符串)。

链接:

  • ruff
  • Google Python风格指南

ruff_format

使用ruff格式化Python代码,统一空格和风格(如缩进、换行)。

链接:ruff format

ruff_tests

针对Python测试代码的ruff检查,使用较宽松的默认规则。

shellcheck

Shell脚本静态分析工具,检查语法错误、最佳实践和潜在问题。

链接:

  • shellcheck
  • Bash最佳实践

yamllint

检查YAML文件语法、缩进和风格,自动格式化.yaml文件为2空格缩进,强制最大行长度88。

链接:

  • yamllint
  • YAML多行字符串语法

GitLab CI

GitLab CI通过阶段(stages)将作业分组,同阶段作业并行执行,阶段按顺序运行。

阶段定义

stages:
  - test     # 运行pre-commit检查
  - publish  # 推送制品(Docker/Helm/Poetry/Pages)
  - release  # 自动创建版本MR和标签
  - update   # 自动更新依赖和配置文件

完整管道模板

提供三种开箱即用的管道模板,适用于不同项目类型:

Flywheel应用组件

适用于包含Dockerfile和Helm chart、需集成到Flywheel umbrella chart的Python应用。

配置:

include:
  - project: flywheel-io/tools/etc/qa-ci
    ref: main  # 使用具体版本替代main
    file: ci/app.yml

独立Docker镜像

适用于无应用逻辑、仅作为工具或基础镜像的Docker项目。

配置:

include:
  - project: flywheel-io/tools/etc/qa-ci
    ref: main  # 使用具体版本替代main
    file: ci/img.yml

Python库

适用于发布到PyPI(开源)或GitLab Package Registry(私有)的Python库。

配置:

include:
  - project: flywheel-io/tools/etc/qa-ci
    ref: main  # 使用具体版本替代main
    file: ci/lib.yml

作业模板

通过包含ci/templates.yml自定义CI作业,而非使用完整管道:

include:
  - project: flywheel-io/tools/etc/qa-ci
    ref: main
    file: ci/templates.yml

# 示例:仅运行Docker构建作业
build:docker:
  extends: .build:docker

.build:docker

功能:构建Docker镜像并推送到GitLab容器 registry,标签为$CI_REGISTRY_IMAGE:$CI_PIPELINE_ID
触发条件:存在Dockerfile时,在MR、main分支提交、标签推送时运行
前提:项目需启用容器 registry(设置路径:General > Visibility, project features, permissions)

.test:pre-commit

功能:运行.pre-commit-config.yaml中定义的所有钩子,支持pytest覆盖率报告
触发条件:所有分支和标签推送时运行

.publish:docker

功能:拉取GitLab registry中的构建镜像,重新标记并推送到Docker Hub
触发条件:存在Dockerfile时,在MR、main分支提交、标签推送时运行
标签规则:

触发源标签格式示例类型
MR<分支名>FLYW-123-feat滚动版本
mainlatestlatest滚动版本
main<分支名>.<SHA>main.d34db33f不可变版本
标签<标签名>1.2.3不可变版本

配置变量:

变量名默认值描述
DOCKER_FILEDockerfileDockerfile文件名
DOCKER_IMAGEflywheel/<项目名>Docker Hub镜像名

.publish:helm

功能:构建Helm chart并推送到Flywheel ChartMuseum
触发条件:存在helm/*/Chart.yaml时,在MR、main分支提交、标签推送时运行
版本规则:

触发源版本格式示例类型
MR<当前版本>-<分支名>1.2.3-FLYW-123-feat滚动版本
main<当前版本>-latest1.2.3-latest滚动版本
main<当前版本>-<分支名>.<日期>.<构建号>+<SHA>1.2.3-main.20220101.456+d34db33f不可变版本
标签<标签名>1.2.3不可变版本

配置变量:

变量名默认值描述
GIT_DEPTH100获取版本历史的提交数量(用于确定<当前版本>)

.publish:pages

功能:将public/目录中的静态HTML文档发布到GitLab Pages
触发条件:public/目录存在时,在main分支提交和标签推送时运行

.publish:poetry

功能:将Python库发布到PyPI(需配置PyPI凭证)

.release:mr

功能:创建release-X.Y.Z分支和MR,自动更新pyproject.toml、Helm chart等文件中的版本号
触发条件:手动触发管道时,设置RELEASE=X.Y.Z变量(X.Y.Z为目标版本)
MR内容:包含基于上次版本以来合并的MR生成的变更日志,以及引用的JIRA工单列表
配置变量:

变量名默认值描述
FW_COMPONENT""设置为true以启用umbrella版本同步

.release:tag

功能:创建带注释的Git标签
触发条件:release-X.Y.Z分支合并到main或热修复分支时运行
效果:触发后续制品发布管道

.update:deps

功能:创建update-repo分支和MR,自动更新项目依赖和配置文件
触发条件:设置UPDATE=true时运行(建议通过定时管道每2-4周运行一次,如0 0 * * sun%4表示每4个周日)
更新文件:

文件路径描述
Dockerfile更新FROM中的基础镜像版本
pyproject.toml更新构建系统依赖,放宽^0.X版本约束
poetry.lock根据pyproject.toml更新依赖锁文件
requirements.txt更新导出的依赖文件
.pre-commit-config.yaml更新pre-commit仓库引用
.gitlab-ci.yml更新GitLab CI模板引用

配置变量:

变量名默认值描述
UPDATE_SKIP""空格分隔的不更新文件列表(如"Dockerfile pyproject.toml")

许可证

[![MIT]([***]

查看更多 qa-ci 相关镜像 →

常见问题

轩辕镜像免费版与专业版有什么区别?

免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。

轩辕镜像免费版与专业版有分别支持哪些镜像?

免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。

流量耗尽错误提示

当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。

410 错误问题

通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。

manifest unknown 错误

先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。

镜像拉取成功后,如何去掉轩辕镜像域名前缀?

使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。

查看全部问题→

轩辕镜像下载加速使用手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

🔐

登录方式进行 Docker 镜像下载加速教程

通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤

🐧

Linux Docker 镜像下载加速教程

在 Linux 系统上配置轩辕镜像源,支持主流发行版

🖥️

Windows/Mac Docker 镜像下载加速教程

在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统

📦

Docker Compose 镜像下载加速教程

在 Docker Compose 中使用轩辕镜像加速,支持容器编排

📋

K8s containerd 镜像下载加速教程

在 k8s 中配置 containerd 使用轩辕镜像加速

🔧

宝塔面板 Docker 镜像下载加速教程

在宝塔面板中配置轩辕镜像加速,提升服务器管理效率

💾

群晖 NAS Docker 镜像下载加速教程

在 Synology 群晖NAS系统中配置轩辕镜像加速

🐂

飞牛fnOS Docker 镜像下载加速教程

在飞牛fnOS系统中配置轩辕镜像加速

📱

极空间 NAS Docker 镜像下载加速教程

在极空间NAS中配置轩辕镜像加速

⚡

爱快路由 ikuai Docker 镜像下载加速教程

在爱快ikuai系统中配置轩辕镜像加速

🔗

绿联 NAS Docker 镜像下载加速教程

在绿联NAS系统中配置轩辕镜像加速

🌐

威联通 NAS Docker 镜像下载加速教程

在威联通NAS系统中配置轩辕镜像加速

📦

Podman Docker 镜像下载加速教程

在 Podman 中配置轩辕镜像加速,支持多系统

📚

ghcr、Quay、nvcr、k8s、gcr 等仓库下载镜像加速教程

配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤

🚀

专属域名方式进行 Docker 镜像下载加速教程

无需登录即可使用轩辕镜像加速服务,更加便捷高效

需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429

商务:17300950906
|©2024-2025 源码跳动
商务合作电话:17300950906|Copyright © 2024-2025 杭州源码跳动科技有限公司. All rights reserved.