Files
CasSsoService/.gitea/workflows/deploy.yml
T

60 lines
2.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: deploy-cassso-service
on:
push:
branches: [main]
workflow_dispatch:
jobs:
build-deploy:
runs-on: ubuntu-latest
# docker:24 自带 docker CLI;宿主 docker.sock 默认挂入 job 容器,
# 因此 docker build/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 3.9(--network=host 走宿主网络拉 nexus 依赖)。
# 重要:job 容器内 $PWD 不是宿主可见路径,不能直接 `-v $PWD:/build` 挂给 maven 容器
# (docker.sock 跨边界 bind mount 会落到宿主空目录,maven 看不到 pom.xml)。
# 改用 docker create + docker cp 把源码送进 maven 容器,构建完再把 target 拷回工作区。
# war 由 maven 从源码构建(target/cas.war),不再把 war 提交进 git。
- name: Build war (maven 3.9, nexus maven-public)
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
# 构建上下文=仓库根目录,Dockerfile 内 COPY target/cas.war;
# 业务配置由 run-cas.sh 在启动时调用 nacos_config.py 从 Nacos 拉取(替代失效的 EPP)。
run: docker build -f docker/Dockerfile -t cassso-service:latest .
- name: Deploy on host (infra-infra-net, CAS 端口 8443)
# 镜像已在宿主本地,直接运行,无需推送到 nexus(nexus docker 仓库为 HTTP,需 daemon insecure-registries 才能推送)
# Nacos 环境变量:run-cas.sh 据此在启动阶段从 Nacos 拉取业务配置(common.yaml + cas.yaml, prod)。
# 不传 NACOS_NAMESPACE 会默认连 dev(dev 命名空间无配置),登录必失败——必须显式传 prod。
# 注意:镜像构建成功才会走到本步;若上面 maven/docker build 失败,本步不执行,旧容器继续运行。
run: |
docker rm -f cas-sso 2>/dev/null || true
docker run -d --name cas-sso --network infra-infra-net -p 8443:8443 --restart unless-stopped \
-e NACOS_ADDR=nacos:8848 \
-e NACOS_NAMESPACE=prod \
-e NACOS_USER=yh-reader \
-e NACOS_PASS=123456 \
cassso-service:latest
- name: Done
run: 'echo "CasSsoService deployed -> http://sso.yunhaixingtong.com/cas"'