fix(workflow): build maven via docker create+cp instead of -v $PWD bind mount
deploy-userbase-service / build-deploy (push) Successful in 31s
deploy-userbase-service / build-deploy (push) Successful in 31s
This commit is contained in:
@@ -9,7 +9,7 @@ jobs:
|
|||||||
build-deploy:
|
build-deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
# docker:24 自带 docker CLI;宿主 docker.sock 默认挂入 job 容器,
|
# docker:24 自带 docker CLI;宿主 docker.sock 默认挂入 job 容器,
|
||||||
# 因此 docker build/push/run 实际都在宿主守护进程上执行。
|
# 因此 docker build/run 实际都在宿主守护进程上执行。
|
||||||
container:
|
container:
|
||||||
image: docker:24
|
image: docker:24
|
||||||
steps:
|
steps:
|
||||||
@@ -23,12 +23,17 @@ jobs:
|
|||||||
rm -rf .git .gitea
|
rm -rf .git .gitea
|
||||||
rm -rf /tmp/src
|
rm -rf /tmp/src
|
||||||
|
|
||||||
# 用宿主 docker 守护进程跑 maven(--network=host 走宿主外网拉依赖),
|
# 用宿主 docker 守护进程跑 maven 3.9(--network=host 走宿主网络拉 nexus 依赖)。
|
||||||
# 产出 target/userbase.jar 落到工作区。
|
# 重要:job 容器内 $PWD 不是宿主可见路径,不能直接 `-v $PWD:/build` 挂给 maven 容器
|
||||||
- name: Build jar (maven, host network, nexus maven-public)
|
# (docker.sock 跨边界 bind mount 会落到宿主空目录,maven 看不到 pom.xml)。
|
||||||
# maven-settings.xml 将 central 指向 nexus maven-public(含内部 SNAPSHOT BOM 与 central 代理)
|
# 改用 docker create + docker cp 把源码送进 maven 容器,构建完再把 target 拷回工作区。
|
||||||
# 挂载宿主 /opt/docker/ubs-m2 作为 maven 本地仓库缓存,加速重复构建
|
- name: Build jar (maven 3.9, nexus maven-public)
|
||||||
run: docker run --rm --network=host -v $PWD:/build -v /opt/docker/ubs-m2:/root/.m2 -w /build maven:3.9-eclipse-temurin-8 mvn -s maven-settings.xml -B -DskipTests package
|
run: |
|
||||||
|
MVN=$(docker create --network=host -v /opt/docker/ubs-m2:/root/.m2 -w /build maven:3.9-eclipse-temurin-8 mvn -s maven-settings.xml -B -DskipTests package)
|
||||||
|
docker cp "$PWD/." "$MVN:/build"
|
||||||
|
docker start -a "$MVN"
|
||||||
|
docker cp "$MVN:/build/target" "$PWD/target"
|
||||||
|
docker rm -f "$MVN"
|
||||||
|
|
||||||
- name: Build image on host daemon
|
- name: Build image on host daemon
|
||||||
run: docker build -f docker/Dockerfile -t userbase-service:latest .
|
run: docker build -f docker/Dockerfile -t userbase-service:latest .
|
||||||
|
|||||||
Reference in New Issue
Block a user