1. Java Web 项目基础

a. 创建一个简单的 Java Web 应用
  • 使用 Spring Initializr (https://start.spring.io/) 创建一个基本的 Spring Boot 项目。
  • 选择 Maven Project, Java, 和 Spring Boot 的版本。
  • 添加依赖:Spring Web。
  • 生成项目并解压到本地目录。
b. 编写一个简单的 REST 控制器

src/main/java/com/example/demo 目录下创建一个新的 Java 类 HelloController.java:

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/")
    public String index() {
        return "Hello, World!";
    }
}
c. 运行和测试应用
  • 在项目根目录下运行 mvn spring-boot:run
  • 访问 http://localhost:8080,应该看到 "Hello, World!"。

2. 使用 GitLab

a. Git 基础
  • 安装 Git(如果尚未安装)。
  • 初始化 Git 仓库:git init
  • 添加文件到仓库:git add .
  • 提交更改:git commit -m "Initial commit"
b. 在 GitLab 创建新仓库
  • 登录 GitLab,创建一个新的项目。
  • 将本地仓库关联到 GitLab:git remote add origin <repository-url>
  • 推送代码到 GitLab:git push -u origin master

3. Maven 仓库配置

a. Maven 配置
  • pom.xml 中配置项目依赖。
  • 使用 Maven Wrapper(推荐)或确保本地安装了 Maven。
b. Nexus 或 Artifactory 设置
  • 安装和配置 Nexus/Artifactory。
  • 创建 Maven 仓库。
  • settings.xml 中配置 Maven 以使用此仓库。

4. Docker 和 Harbor

a. Docker 化应用
  • 安装 Docker。
  • 创建 Dockerfile 在项目根目录。
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
  • 构建 Docker 镜像:docker build -t myapp .
  • 运行 Docker 容器:docker run -p 8080:8080 myapp
b. 配置 Harbor
  • 安装和配置 Harbor。
  • 创建项目以存储 Docker 镜像。
  • 配置 Docker 以推送和拉取镜像到 Harbor。

5. Drone CI 配置

a. 设置 Drone CI
  • 安装和配置 Drone CI。
  • 将 Drone CI 与 GitLab 集成。
  1. 安装 Drone 访问 需要去drone官方下载,选择适合你的操作系统的安装说明。

  2. 配置 Drone Drone 的配置通常是通过环境变量进行的。你需要配置 Drone 与你的版本控制系统(如 GitLab)的连接,以及设置其他相关的选项。

  3. 启动 Drone 服务 根据安装指南启动 Drone 服务。这通常涉及到运行一个 Docker 容器。

  4. 验证 Drone 安装 访问 Drone 的 Web 界面,通常是 http://<your-server-ip>。你应该能看到 Drone 的登录页面。

配置 .drone.yml

.drone.yml 文件定义了 Drone 如何构建、测试和部署你的应用。

  1. 创建 .drone.yml 文件 在你的项目根目录下创建 .drone.yml 文件。

  2. 定义构建步骤.drone.yml 中定义各个构建步骤,如编译代码、运行测试、构建 Docker 镜像等。

  3. 配置 Docker 镜像构建和推送.drone.yml 中配置 Docker 镜像的构建和推送步骤,确保它能够将构建的镜像推送到 Harbor。

  4. 提交并测试.drone.yml 提交到你的 GitLab 仓库,并触发一个构建来测试配置。

b. 配置 .drone.yml

创建 .drone.yml 文件以定义 CI 流程:

kind: pipeline
type: docker
name: default

steps:
- name: build
  image: maven:3.6.3-jdk-8
  commands:
  - mvn clean package

- name: docker
  image: plugins/docker
  settings:
    repo: <harbor-repo>/<your-image>
    tags: latest
    registry: <harbor-url>
    username:
      from_secret: harbor_username
    password:
      from_secret: harbor_password

在 Drone CI 中配置秘密(harbor_username 和 harbor_password)。

当然你可以添加其他 step,如上传maven仓库,部署,通知等

kind: pipeline
type: docker
name: default

steps:
  - name: build
    image: maven:3.6.3-jdk-8
    commands:
      - mvn clean package

  - name: docker
    image: plugins/docker
    settings:
      repo: <harbor-repo>/<your-image>
      tags: latest
      registry: <harbor-url>
      username:
        from_secret: harbor_username
      password:
        from_secret: harbor_password

  - name: deploy
    image: appleboy/drone-ssh
    settings:
      host: <deploy-host>
      username:
        from_secret: deploy_username
      password:
        from_secret: deploy_password
      port: 22
      script:
        - echo "Deploying application..."
        - docker pull <harbor-repo>/<your-image>:latest
        - docker run -d -p 80:8080 <harbor-repo>/<your-image>:latest

  - name: upload-to-maven
    image: maven:3.6.3-jdk-8
    commands:
      - mvn deploy
    environment:
      MAVEN_USERNAME:
        from_secret: maven_username
      MAVEN_PASSWORD:
        from_secret: maven_password

  - name: notify-wechat
    image: appleboy/drone-wechat
    settings:
      corpid: <wechat-corpid>
      corp_secret:
        from_secret: wechat_corp_secret
      agent_id: <wechat-agent-id>
      to_user: "@all"
      message: |
        Build Number: ${DRONE_BUILD_NUMBER}
        Status: ${DRONE_BUILD_STATUS}
  1. 构建步骤 (build): 使用 Maven 构建 Java 项目。

  2. Docker 构建和推送 (docker): 构建 Docker 镜像并推送到 Harbor。

  3. 部署步骤 (deploy): 使用 SSH 连接到部署服务器,拉取最新的 Docker 镜像,并运行它。

  4. 上传到 Maven 仓库 (upload-to-maven): 使用 Maven 将构建的工件上传到 Maven 仓库。

  5. 企业微信通知 (notify-wechat): 使用企业微信插件发送构建状态通知。

  • 确保你已经在 Drone CI 中设置了所有必要的秘密(如 harbor_username, harbor_password, deploy_username, deploy_password, maven_username, maven_password, wechat_corp_secret 等)。

  • 替换 <harbor-repo>, <your-image>, <harbor-url>, <deploy-host>, <wechat-corpid>, <wechat-agent-id> 等占位符为你的实际值。

  • 根据你的实际需求调整 SSH 脚本和 Maven 配置。

6. CI/CD 流程

  • 开发人员在本地完成代码开发和测试。
  • 提交代码到 GitLab,触发 Drone CI 流程。
  • Drone CI 执行 Maven 构建和 Docker 镜像构建。
  • Drone CI 将镜像推送到 Harbor。
  • 镜像可以被部署到测试或生产环境。
GitHub 加速计划 / ha / harbor
23.24 K
4.68 K
下载
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
最近提交(Master分支:2 个月前 )
9e55afbb pull image from registry.goharbor.io instead of dockerhub Update testcase to support Docker Image Can Be Pulled With Credential Change gitlab project name when user changed. Update permissions count and permission count total Change webhook_endpoint_ui Signed-off-by: stonezdj <stone.zhang@broadcom.com> Co-authored-by: Wang Yan <wangyan@vmware.com> 1 天前
3dbfd422 Signed-off-by: wang yan <wangyan@vmware.com> 1 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐