ci: add deploy workflow (mvn + image + deploy)
deploy-userbase-service / build-deploy (push) Failing after 16s
deploy-userbase-service / build-deploy (push) Failing after 16s
This commit is contained in:
@@ -0,0 +1,47 @@
|
|||||||
|
name: deploy-userbase-service
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
# docker:24 自带 docker CLI;宿主 docker.sock 默认挂入 job 容器,
|
||||||
|
# 因此 docker build/push/run 实际都在宿主守护进程上执行。
|
||||||
|
container:
|
||||||
|
image: docker:24
|
||||||
|
steps:
|
||||||
|
- name: Install git (alpine)
|
||||||
|
run: apk add --no-cache git
|
||||||
|
|
||||||
|
- name: Checkout (manual, internal Gitea)
|
||||||
|
run: |
|
||||||
|
git clone --depth 1 --branch main http://192.168.10.160:3000/${GITHUB_REPOSITORY}.git /tmp/src
|
||||||
|
cp -a /tmp/src/. .
|
||||||
|
rm -rf .git .gitea
|
||||||
|
rm -rf /tmp/src
|
||||||
|
|
||||||
|
# 用宿主 docker 守护进程跑 maven(--network=host 走宿主外网拉依赖),
|
||||||
|
# 产出 target/userbase.jar 落到工作区。
|
||||||
|
- name: Build jar (maven, host network)
|
||||||
|
run: docker run --rm --network=host -v $PWD:/build -w /build maven:3.9-eclipse-temurin-8 mvn -B -DskipTests package
|
||||||
|
|
||||||
|
- name: Login to Nexus docker registry
|
||||||
|
# 单引号包裹 secret,避免密码中的 $ 被 shell 展开
|
||||||
|
run: echo '${{ secrets.NEXUS_PASSWORD }}' | docker login -u '${{ secrets.NEXUS_USER }}' --password-stdin nexus:8083
|
||||||
|
|
||||||
|
- name: Build image
|
||||||
|
run: docker build -f docker/Dockerfile -t nexus:8083/docker-hosted/userbase-service:latest .
|
||||||
|
|
||||||
|
- name: Push image
|
||||||
|
run: docker push nexus:8083/docker-hosted/userbase-service:latest
|
||||||
|
|
||||||
|
- name: Deploy on host (infra-infra-net)
|
||||||
|
run: |
|
||||||
|
docker rm -f userbase-service 2>/dev/null || true
|
||||||
|
docker run -d --name userbase-service --network infra-infra-net -p 8060:8060 --restart unless-stopped nexus:8083/docker-hosted/userbase-service:latest
|
||||||
|
|
||||||
|
- name: Done
|
||||||
|
run: 'echo "UserBaseService deployed -> http://192.168.10.160:8060/userbase"'
|
||||||
Reference in New Issue
Block a user