# gitlabci-template **Repository Path**: zhoull0801/gitlabci-template ## Basic Information - **Project Name**: gitlabci-template - **Description**: 用于存放Jenkins和Gitlab的流水线模板,目的是为了后面多次服用,只需要根据模板,自己根据需求,去修改参数。 - **Primary Language**: YAML - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-01-14 - **Last Updated**: 2026-02-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: Jenkins, GITLAB ## README # GitLab CI 模板项目 本项目提供 GitLab CI/CD 和 Jenkins 模板文件,用于集成 Harbor 容器镜像仓库、SonarQube 代码质量分析工具、Artifactory 制品库以及其他 DevOps 工具。通过使用这些模板,可以快速在 CI/CD 流水线中实现自动化构建、镜像推送、代码质量检测和部署等操作。 ## 项目结构 ``` gitlabci-template/ ├── Gitlab/ │ ├── Harbor.yml # Harbor 镜像仓库集成模板 │ └── SonarQube.yml # SonarQube 代码质量分析模板 ├── Jenkins/ │ ├── Jenkins_docker # Jenkins Docker 集成模板 │ ├── email # Jenkins 邮件通知模板 │ ├── harbor # Jenkins Harbor 集成模板 │ └── test # Jenkins 测试模板 ├── jobs/ │ ├── artifactory.yml # Artifactory 制品库集成 │ ├── build.yml # 构建任务模板 │ ├── deploy.yml # 部署任务模板 │ ├── harbor.yml # Harbor 镜像仓库任务 │ ├── jmeter.yml # JMeter 性能测试任务 │ ├── sonarqube.yml # SonarQube 代码质量分析任务 │ └── test.yml # 测试任务模板 ├── templates/ │ ├── java-docker.yml # Java 项目 Docker 部署模板 │ ├── java-k8s.yml # Java 项目 Kubernetes 部署模板 │ └── java-linux.yml # Java 项目 Linux 环境部署模板 └── LICENSE # MIT 许可证 ``` job 目录: 存放各个子任务,例如打包镜像、推送镜像、代码扫描等操作。 manifests 目录: 存放生产、测试、uat 各个环境的 deployment、svc、Ingres 和 configmap 资源。argocd 填写的 git 仓库部署文件路径也是这个目录下。 templates 目录: 每个项目类型一个文件,主要是组合各个 job 并传入自定义变量内容。 manifests目录: 存放生产、测试、uat 各个环境的 deployment、svc、Ingres 和 configmap 资源。argocd 填写的 git 仓库部署文件路径也是这个目录下。 项目的.gitlab-ci 流水线脚本配置: 只需要引入 cicd 仓库的 templates 文件地址即可。避免开发修改配置导致部署异常。 ```yaml include: # 引入模板库公共文件 - project: 'devops/gitlabci-template' ref: 'master' file: 'templates/build.yml' variables: # 全局变量 DOCKER_REGISTRY: 地址名 # 镜像仓库地址 PROJECT_NAME: 项目名 # 项目名称 镜像名称 部署文件目录名称 ``` ## 功能特性 ### GitLab CI 集成 - **Harbor 集成**:自动化构建 Docker 镜像并推送至 Harbor 仓库 - **SonarQube 集成**:集成代码质量分析,支持多种编程语言 - **模块化设计**:模板可独立使用,也可组合使用 - **易于集成**:通过简单的 include 即可在现有 GitLab CI 配置中使用 ### Jenkins 集成 - **Docker 集成**:支持 Jenkins 与 Docker 环境集成 - **邮件通知**:自动化构建和部署结果邮件通知 - **Harbor 集成**:Jenkins 任务与 Harbor 仓库无缝对接 - **测试框架**:预置的测试任务配置 ### 通用 CI/CD 作业 - **Artifactory 制品库**:二进制制品管理 - **构建任务**:多种构建策略支持 - **部署任务**:灵活的部署配置 - **性能测试**:JMeter 性能测试集成 - **代码质量**:SonarQube 深度集成 ### 预置模板 - **Java Docker 模板**:适用于容器化 Java 应用 - **Java Kubernetes 模板**:适用于 K8s 部署的 Java 应用 - **Java Linux 模板**:适用于传统 Linux 环境的 Java 应用 ## 快速开始 ### 前提条件 #### GitLab CI 集成 - GitLab Runner(已安装 Docker 镜像) - Harbor 镜像仓库访问权限 - SonarQube 服务器访问权限 #### Jenkins 集成 - Jenkins 服务器(建议 2.x 以上版本) - 必要的 Jenkins 插件(Docker, Pipeline, Git 等) - 对应的构建工具(Java, Maven/Gradle 等) ### GitLab CI 基本使用 在项目的 `.gitlab-ci.yml` 文件中引入模板: ```yaml include: - project: 'zhoull0801/gitlabci-template' ref: master file: 'Gitlab/Harbor.yml' - project: 'zhoull0801/gitlabci-template' ref: master file: 'Gitlab/SonarQube.yml' ``` ### Jenkins 作业配置 在 Jenkins 中创建 Pipeline 作业,引入相应的模板文件: ```groovy pipeline { agent any stages { stage('Build') { steps { build job: 'jobs/build.yml', parameters: [ string(name: 'PROJECT_NAME', value: 'myproject'), string(name: 'BUILD_VERSION', value: '1.0.0') ] } } } } ``` ## 详细配置 ### GitLab CI 模板配置 #### Harbor.yml 配置说明 此模板提供以下功能: - Docker 镜像构建 - 镜像标签管理 - 推送到 Harbor 仓库 ##### 变量配置 在使用前,请配置以下 CI/CD 变量: | 变量名 | 描述 | 必填 | |--------|------|------| | `HARBOR_URL` | Harbor 服务器地址 | 是 | | `HARBOR_PROJECT` | Harbor 项目名称 | 是 | | `HARBOR_USERNAME` | Harbor 用户名 | 是 | | `HARBOR_PASSWORD` | Harbor 密码或访问令牌 | 是 | #### SonarQube.yml 配置说明 此模板提供以下功能: - 代码质量扫描 - 多语言支持 - 质量门禁检查 ##### 变量配置 在使用前,请配置以下 CI/CD 变量: | 变量名 | 描述 | 必填 | |--------|------|------| | `SONAR_HOST_URL` | SonarQube 服务器地址 | 是 | | `SONAR_TOKEN` | SonarQube 访问令牌 | 是 | ### Jenkins 模板配置 #### Jenkins_docker 配置 支持 Docker 在 Jenkins 环境中的集成使用,需要配置 Docker 相关信息。 #### email 配置 提供 Jenkins 构建结果邮件通知功能,支持自定义邮件模板和触发条件。 #### harbor 配置 Jenkins 与 Harbor 仓库的集成配置,支持镜像拉取和推送操作。 ### CI/CD 作业配置 #### build.yml 构建任务 支持多种构建场景: - Maven 项目构建 - Gradle 项目构建 - 多模块项目构建 - 自定义构建脚本 #### deploy.yml 部署任务 支持多种部署方式: - Docker 容器部署 - Kubernetes 部署 - 传统 Linux 服务器部署 - 滚动更新策略 #### artifactory.yml 制品库任务 Artifactory 集成配置: - 制品上传 - 制品下载 - 版本管理 - 依赖管理 #### jmeter.yml 性能测试任务 JMeter 性能测试配置: - 性能测试脚本执行 - 测试结果收集 - 性能报告生成 - 性能基线对比 ### Java 项目模板配置 #### java-docker.yml 适用于容器化部署的 Java 项目,提供: - Docker 镜像构建 - 多阶段构建优化 - 健康检查配置 - 最佳实践安全设置 #### java-k8s.yml 适用于 Kubernetes 环境的 Java 项目,提供: - K8s 部署配置 - 服务发现配置 - 资源限制设置 - 滚动更新策略 #### java-linux.yml 适用于传统 Linux 环境的 Java 项目,提供: - Systemd 服务配置 - 日志管理 - 进程监控 - 环境变量管理 ## 使用示例 ### GitLab CI 完整流水线示例 ```yaml stages: - build - test - analysis - package - deploy include: - project: 'zhoull0801/gitlabci-template' ref: master file: 'Gitlab/Harbor.yml' - project: 'zhoull0801/gitlabci-template' ref: master file: 'Gitlab/SonarQube.yml' variables: DOCKER_DRIVER: overlay2 DOCKER_TLS_CERTDIR: "/certs" build: stage: build image: docker:20.10.16-dind script: - docker build -t $HARBOR_URL/$HARBOR_PROJECT/myapp:$CI_COMMIT_SHA . sonarqube-check: stage: analysis image: sonarsource/sonar-scanner-cli:latest script: - sonar-scanner -D sonar.host.url=$SONAR_HOST_URL -D sonar.token=$SONAR_TOKEN ``` ### Jenkins Pipeline 示例 ```groovy @Library('gitlabci-template') _ pipeline { agent any parameters { string(name: 'VERSION', defaultValue: '1.0.0', description: '版本号') choice(name: 'DEPLOY_ENV', choices: ['dev', 'test', 'prod'], description: '部署环境') } stages { stage('Build') { steps { buildJavaProject() } } stage('Test') { steps { runTests() } } stage('SonarQube') { steps { runSonarQubeAnalysis() } } stage('Deploy') { steps { deployToEnvironment(params.DEPLOY_ENV) } } } post { always { sendEmail notificationStatus: 'always' } } } ``` ### Java Docker 模板使用示例 ```yaml include: - project: 'zhoull0801/gitlabci-template' ref: master file: 'templates/java-docker.yml' variables: JAVA_VERSION: "11" DOCKER_BASE_IMAGE: "openjdk:11-slim" ARTIFACT_NAME: "myapp.jar" deploy: stage: deploy image: docker:20.10.16-dkin services: - docker:20.10.16-dind script: - docker build -t $HARBOR_URL/$HARBOR_PROJECT/myapp:$CI_COMMIT_SHA . - docker push $HARBOR_URL/$HARBOR_PROJECT/myapp:$CI_COMMIT_SHA ``` ## 常见问题 **Q: 如何自定义镜像标签?** A: 可通过定义 `CI_COMMIT_TAG` 或 `CI_COMMIT_BRANCH` 环境变量来自定义标签。对于 Harbor 推送,镜像标签默认为 `CI_COMMIT_SHA`,可覆盖此默认值。 **Q: 支持私有 Harbor 仓库吗?** A: 支持,需要在 GitLab CI/CD 变量中配置正确的用户名和密码。确保 Harbor 项目设置为允许当前凭证访问。 **Q: SonarQube 分析失败怎么办?** A: 请检查以下配置: 1. `SONAR_HOST_URL` 和 `SONAR_TOKEN` 配置是否正确 2. SonarQube 项目密钥是否存在 3. 网络连接是否正常 **Q: Jenkins 作业如何配置 Docker 构建?** A: 确保 Jenkins 主机已安装 Docker,并在 Jenkins 系统配置中配置 Docker 路径。对于 Docker in Docker (DinD) 场景,需要正确配置 Docker socket 挂载。 **Q: 如何在不同环境使用不同的配置?** A: 支持通过环境变量和配置文件分离不同环境的配置。建议使用 CI/CD 变量的保护功能来管理敏感配置。 **Q: Java 模板支持哪些 Java 版本?** A: 模板默认支持 Java 8/11/17,可通过 `JAVA_VERSION` 变量指定所需版本。基础镜像会自动选择对应的 OpenJDK 版本。 **Q: 如何添加自定义构建步骤?** A: 可以在引入模板后,在项目的 `.gitlab-ci.yml` 中覆盖或扩展相应阶段的自定义脚本。 ## 贡献指南 欢迎提交 Issue 和 Pull Request 来改进本项目。在提交前,请确保: 1. 代码符合项目编码规范 2. 添加必要的测试 3. 更新相关文档 4. 遵循项目的 MIT 许可证协议 ### 提交流程 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交改动 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建一个 Pull Request ## 许可证 本项目采用 MIT 许可证开源,详情请查看 [LICENSE](LICENSE) 文件。 ## 联系方式 - 项目地址:https://gitee.com/zhoull0801/gitlabci-template - 作者:zhoull0801 - 问题反馈:https://gitee.com/zhoull0801/gitlabci-template/issues ## 致谢 感谢所有为本项目提供反馈、建议和代码贡献的开发者!