No description
- Java 72.3%
- Dockerfile 27.7%
|
All checks were successful
构建推送Harbor镜像 / build_docker (push) Successful in 3m14s
|
||
|---|---|---|
| .gitea/workflows | ||
| src/main | ||
| .gitignore | ||
| catalog-info.yaml | ||
| Dockerfile | ||
| pom.xml | ||
| README.md | ||
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)
工作流程
- 环境检查 → 输出系统信息和Docker版本
- 拉取源码 → 使用 Git token 拉取代码
- 登录Harbor → 使用配置的凭证登录私有仓库
- 构建镜像 → 构建Docker镜像并打标签
- 推送镜像 → 推送镜像到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
手动触发
- 进入 Forgejo 仓库 → Actions
- 选择 "构建推送Harbor镜像"
- 点击 "Run workflow"
- 选择分支,点击 "Run workflow"
查看构建日志
- 进入 Forgejo 仓库 → Actions
- 选择对应的工作流运行记录
- 点击查看详细日志
安全注意事项
- 凭证安全:所有敏感信息通过 Secrets 管理,不要硬编码在代码中
- 日志屏蔽:Forgejo Actions 会自动屏蔽 Secrets 值,避免泄露
- Token权限:授予最小必要权限,定期轮换令牌
Spring Boot特性
本项目展示了Spring Boot的核心概念:
- @SpringBootApplication:启动类注解
- @RestController:REST控制器
- @Service:业务服务层
- @Autowired:依赖注入
- @GetMapping:HTTP GET请求映射
贡献
欢迎提交Issue和Pull Request。
许可证
MIT License