feat(ci): 添加 Woodpecker CI 配置实现 Java 应用自动构建部署
- 配置了 Maven 构建步骤,支持依赖缓存加速 - 添加了 Docker 镜像构建和推送流程 - 设置了阿里云容器镜像服务仓库地址 - 创建了 Dockerfile 定义 Java 运行环境 - 配置了 JVM 参数优化和时区设置 - 添加了构建说明文档 1.txt
This commit is contained in:
parent
f4dbb3a80e
commit
f5039c0ab6
|
|
@ -0,0 +1,43 @@
|
|||
# .woodpecker.yaml
|
||||
workflows:
|
||||
build-and-deploy:
|
||||
name: Java应用构建与部署
|
||||
# 触发条件,仅在 main/master 分支推送时运行
|
||||
when:
|
||||
- event: push
|
||||
branch: main
|
||||
- event: push
|
||||
branch: master
|
||||
|
||||
steps:
|
||||
# 1. 使用 Maven 构建 Java 应用,并缓存依赖
|
||||
- name: Java 构建
|
||||
image: maven:3.9.6-eclipse-temurin-17
|
||||
pull: true
|
||||
commands:
|
||||
- mvn clean package -DskipTests # 跳过测试以加快构建
|
||||
volumes:
|
||||
- /tmp/maven-cache:/root/.m2 # 缓存 Maven 依赖
|
||||
|
||||
# 2. 将构建好的 JAR 文件打包为 Docker 镜像
|
||||
- name: Docker 构建
|
||||
image: docker:latest
|
||||
pull: true
|
||||
commands:
|
||||
- docker build -t registry.cn-zhangjiakou.aliyuncs.com/abhors/demo:latest .
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock # ⚠️ Docker in Docker 挂载
|
||||
|
||||
# 3. 将打包好的镜像推送到 Docker Hub
|
||||
- name: 镜像推送
|
||||
image: plugins/docker
|
||||
settings:
|
||||
# ⚠️ 关键配置:必须准确填写
|
||||
repo: registry.cn-zhangjiakou.aliyuncs.com/abhors/demo
|
||||
registry: registry.cn-zhangjiakou.aliyuncs.com
|
||||
tags: latest
|
||||
dockerfile: ./Dockerfile
|
||||
username:
|
||||
from_secret: docker_hub_user # 从 Woodpecker UI 获取的 Docker Hub 用户名
|
||||
password:
|
||||
from_secret: docker_hub_pass # 从 Woodpecker UI 获取的 Docker Hub 密码或 Token
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
your-dockerhub-username 你的 Docker Hub 用户名或组织名。 abhors
|
||||
your-app-name 你的 Java 应用对应的 Docker 镜像名称。 demo
|
||||
docker_username / docker_password 这是流水线中引用的密钥名称。你需要在 Woodpecker UI 的设置页面中,将你的 Docker Hub 真实凭证添加为这两个密钥,流水线才能访问它们。 在 UI 中配置
|
||||
/tmp/maven-cache:/root/.m2 Maven 缓存。将宿主机目录挂载到容器内,可以复用 Maven 本地仓库,加速构建。
|
||||
/var/run/docker.sock:/var/run/docker.sock Docker socket 挂载。这允许流水线在容器内直接调用宿主机的 Docker 守护进程来构建镜像。
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
FROM ibm-semeru-runtimes:open-17-jre
|
||||
COPY ./target/*.jar /opt/app.jar
|
||||
#暴露端口
|
||||
EXPOSE 8080
|
||||
|
||||
#COPY ./cert /opt/cert/
|
||||
|
||||
#ENV TZ=PRC
|
||||
#RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||
#启动 如果启动时想要添加额外的配置可以通过docker run -e PARAM="-Dserver.port=8000 -Dspring.profiles.active-prod"
|
||||
ENV PROFILES="dev"
|
||||
|
||||
ENV JVM_OPTS="-Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -Xloggc:gc/gc.log -XX:+PrintGCDateStamps -XX:+PrintGC -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -XX:NumberOfGCLogFiles=2 -XX:+UseGCLogFileRotation -XX:GCLogFileSize=100m"
|
||||
|
||||
# ENTRYPOINT exec java -Dspring.profiles.active=$PROFILES $JVM_OPTS -jar /opt/app.jar
|
||||
ENTRYPOINT ["sh", "-c", "java -Dspring.profiles.active=$PROFILES $JVM_OPTS -jar /opt/app.jar"]
|
||||
|
||||
#ENTRYPOINT ["nohup","java", "-Xms256m", "-Xmx512m", "-XX:MetaspaceSize=128m", "-XX:MaxMetaspaceSize=512m","-Dfile.encoding=utf-8", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar", "$PROFILES_ACTIVE", "> /logs/lotpig-app.log 2>&1 &" ]
|
||||
|
||||
Loading…
Reference in New Issue