This commit is contained in:
@@ -41,39 +41,24 @@ jobs:
|
||||
git clone --depth 1 "$GIT_URL" .
|
||||
git log -1 --format='%h - %s'
|
||||
|
||||
# 2. 登录镜像仓库 (如果有配置)
|
||||
- name: Login to Docker Registry
|
||||
if: ${{ secrets.REGISTRY_URL != '' }}
|
||||
env:
|
||||
REGISTRY_URL: ${{ secrets.REGISTRY_URL }}
|
||||
REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }}
|
||||
REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
|
||||
run: |
|
||||
echo "$REGISTRY_PASSWORD" | docker login "$REGISTRY_URL" -u "$REGISTRY_USERNAME" --password-stdin
|
||||
|
||||
# 3. 构建并推送镜像
|
||||
# 利用 Multi-stage Dockerfile,无需在宿主机安装 Maven
|
||||
- name: Build and Push
|
||||
# 2. 构建镜像 (单机模式,无需 Push)
|
||||
- name: Build Docker Image
|
||||
id: build
|
||||
env:
|
||||
REGISTRY_URL: ${{ secrets.REGISTRY_URL }}
|
||||
# 默认为 jt808-server,如果 secret 未配置
|
||||
IMAGE_NAME: ${{ secrets.IMAGE_NAME || 'jt808-server' }}
|
||||
IMAGE_NAME: 'jt808-server'
|
||||
run: |
|
||||
SHORT_SHA=$(git rev-parse --short HEAD)
|
||||
# 组装完整镜像名: registry.example.com/project/jt808-server:a1b2c3d
|
||||
FULL_IMAGE_NAME="${REGISTRY_URL}/${IMAGE_NAME}:${SHORT_SHA}"
|
||||
SHORT_SHA=$(git log -1 --format='%h')
|
||||
FULL_IMAGE_NAME="${IMAGE_NAME}:${SHORT_SHA}"
|
||||
|
||||
echo "Building $FULL_IMAGE_NAME..."
|
||||
docker build -t "$FULL_IMAGE_NAME" .
|
||||
|
||||
echo "Pushing $FULL_IMAGE_NAME..."
|
||||
docker push "$FULL_IMAGE_NAME"
|
||||
# 标记为 latest 方便后续引用
|
||||
docker tag "$FULL_IMAGE_NAME" "${IMAGE_NAME}:latest"
|
||||
|
||||
# 输出变量供后续步骤使用
|
||||
echo "image=$FULL_IMAGE_NAME" >> $GITHUB_OUTPUT
|
||||
echo "image=${IMAGE_NAME}:latest" >> $GITHUB_OUTPUT
|
||||
|
||||
# 4. 部署 (同机部署模式)
|
||||
# 3. 部署 (同机部署模式)
|
||||
# 直接在 Runner 所在机器重启容器
|
||||
- name: Deploy
|
||||
env:
|
||||
@@ -83,7 +68,7 @@ jobs:
|
||||
|
||||
echo "Deploying $IMAGE..."
|
||||
|
||||
# 停止并删除旧容器 (忽略不存在的错误)
|
||||
# 停止并删除旧容器
|
||||
docker stop $CONTAINER_NAME || true
|
||||
docker rm $CONTAINER_NAME || true
|
||||
|
||||
|
||||
Reference in New Issue
Block a user