No description
  • Java 72.3%
  • Dockerfile 27.7%
Find a file
persagy c65e125782
All checks were successful
构建推送Harbor镜像 / build_docker (push) Successful in 3m14s
更新.gitea/workflows/ci.yaml
2026-06-29 16:23:44 +08:00
.gitea/workflows 更新.gitea/workflows/ci.yaml 2026-06-29 16:23:44 +08:00
src/main feat: 添加多环境Spring Profile配置(dev/qa/pre/prod) 2026-06-09 13:54:38 +08:00
.gitignore Add project files: README.md, Dockerfile, .gitignore, pom.xml 2026-05-26 11:25:26 +08:00
catalog-info.yaml 更新catalog-info.yaml 2026-06-04 16:49:23 +08:00
Dockerfile 更新Dockerfile 2026-05-28 10:14:03 +08:00
pom.xml Convert to Spring Boot style 2026-05-27 15:53:51 +08:00
README.md Update README.md with CI/CD documentation 2026-06-05 14:14:16 +08:00

HelloWorld

一个使用Spring Boot框架的简单Java Web应用。

技术栈

  • Java 21
  • Spring Boot 3.2.5
  • Maven
  • Docker
  • Forgejo Actions (CI/CD)

快速开始

环境要求

  • JDK 21+
  • Maven 3.8+
  • Docker (可选)

使用Maven构建运行

# 编译
mvn clean compile

# 运行
mvn spring-boot:run

# 打包
mvn clean package

# 运行打包后的JAR
java -jar target/helloworld-1.0.0.jar

使用Docker

# 构建镜像
docker build -t helloworld .

# 运行容器
docker run -p 8080:8080 helloworld

API接口

接口 方法 描述
/api/hello GET 返回 "Hello, World!"
/api/hello/{name} GET 返回个性化问候
/api/health GET 健康检查

示例

# 访问默认问候
curl http://localhost:8080/api/hello

# 访问个性化问候
curl http://localhost:8080/api/hello/John

# 健康检查
curl http://localhost:8080/api/health

项目结构

.
├── src/main/java/com/example/helloworld/
│   ├── HelloWorldApplication.java    # Spring Boot主应用类
│   ├── controller/
│   │   └── HelloController.java      # REST控制器
│   └── service/
│       └── GreetingService.java      # 业务服务类
├── src/main/resources/
│   └── application.yml               # 应用配置
├── .gitea/workflows/
│   └── ci.yml                        # CI/CD工作流配置
├── Dockerfile                        # Docker配置
├── pom.xml                           # Maven配置
├── .gitignore                        # Git忽略规则
└── README.md                         # 项目说明

CI/CD 使用文档

工作流概述

项目使用 Forgejo Actions 实现自动化构建和镜像推送。

工作流文件.gitea/workflows/ci.yml

触发条件

  • 推送到 master 分支时自动触发
  • 支持手动触发Workflow Dispatch

工作流程

  1. 环境检查 → 输出系统信息和Docker版本
  2. 拉取源码 → 使用 Git token 拉取代码
  3. 登录Harbor → 使用配置的凭证登录私有仓库
  4. 构建镜像 → 构建Docker镜像并打标签
  5. 推送镜像 → 推送镜像到Harbor私有仓库

配置说明

镜像标签格式

{分支名}-{时间戳}

示例master-20260605143000

环境变量

变量名 说明 默认值
HARBOR_ADDR Harbor仓库地址 harbor.meos.plus
HARBOR_PROJECT Harbor项目名称 public
IMAGE_NAME 镜像名称 helloworld

Secrets 配置

在 Forgejo 仓库设置中配置以下 Secrets

Secret名称 说明
GITHUB_TOKEN Forgejo访问令牌用于拉取代码
HARBOR_USER Harbor用户名
HARBOR_PWD Harbor密码

配置路径:仓库 → 设置 → 密钥管理 → 添加密钥

工作流文件内容

name: 构建推送Harbor镜像

on:
  push:
    branches: [master]
  workflow_dispatch:

env:
  HARBOR_ADDR: harbor.meos.plus
  HARBOR_PROJECT: public
  IMAGE_NAME: helloworld

jobs:
  build_docker:
    runs-on: self-hosted
    steps:
      - name: 检查环境
        run: |
          echo "=== 环境信息 ==="
          echo "当前目录: $(pwd)"
          echo "Git SHA: ${GITHUB_SHA}"
          echo "分支: ${GITHUB_REF_NAME}"
          docker --version

      - name: 拉取源码
        env:
          GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          git clone https://persagy:"${GIT_TOKEN}"@gitea.meos.plus/persagy/helloworld.git .
          git checkout ${GITHUB_SHA}

      - name: 登录Harbor私有仓库
        env:
          HARBOR_USER: ${{ secrets.HARBOR_USER }}
          HARBOR_PWD: ${{ secrets.HARBOR_PWD }}
        run: |
          echo "${HARBOR_PWD}" | docker login ${HARBOR_ADDR} -u "${HARBOR_USER}" --password-stdin

      - name: 构建镜像
        id: build
        run: |
          TAG=${GITHUB_REF_NAME}-$(date +%Y%m%d%H%M%S)
          docker build -t ${HARBOR_ADDR}/${HARBOR_PROJECT}/${IMAGE_NAME}:${TAG} .
          docker tag ${HARBOR_ADDR}/${HARBOR_PROJECT}/${IMAGE_NAME}:${TAG} ${HARBOR_ADDR}/${HARBOR_PROJECT}/${IMAGE_NAME}:latest
          echo "tag=${TAG}" >> $GITHUB_OUTPUT

      - name: 推送镜像
        run: |
          TAG=${{ steps.build.outputs.tag }}
          docker push ${HARBOR_ADDR}/${HARBOR_PROJECT}/${IMAGE_NAME}:${TAG}
          docker push ${HARBOR_ADDR}/${HARBOR_PROJECT}/${IMAGE_NAME}:latest

运行方式

自动触发

推送代码到 master 分支时自动运行:

git push origin master

手动触发

  1. 进入 Forgejo 仓库 → Actions
  2. 选择 "构建推送Harbor镜像"
  3. 点击 "Run workflow"
  4. 选择分支,点击 "Run workflow"

查看构建日志

  1. 进入 Forgejo 仓库 → Actions
  2. 选择对应的工作流运行记录
  3. 点击查看详细日志

安全注意事项

  1. 凭证安全:所有敏感信息通过 Secrets 管理,不要硬编码在代码中
  2. 日志屏蔽Forgejo Actions 会自动屏蔽 Secrets 值,避免泄露
  3. Token权限:授予最小必要权限,定期轮换令牌

Spring Boot特性

本项目展示了Spring Boot的核心概念

  • @SpringBootApplication:启动类注解
  • @RestControllerREST控制器
  • @Service:业务服务层
  • @Autowired:依赖注入
  • @GetMappingHTTP GET请求映射

贡献

欢迎提交Issue和Pull Request。

许可证

MIT License