This commit is contained in:
72
.gitea/workflows/build.yml
Normal file
72
.gitea/workflows/build.yml
Normal file
@@ -0,0 +1,72 @@
|
||||
name: 本地构建并运行容器
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
paths-ignore:
|
||||
- "README.md"
|
||||
- "*.md"
|
||||
- ".git"
|
||||
- ".gitea"
|
||||
- ".dockerignore"
|
||||
- ".gitignore"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
- name: 拉取最新代码
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: 构建镜像
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
push: false
|
||||
tags: |
|
||||
${{ vars.IMAGE_NAME }}:latest
|
||||
|
||||
- name: 停止并删除旧容器
|
||||
run: |
|
||||
CONTAINER_NAME="${{ vars.IMAGE_NAME }}"
|
||||
docker stop ${CONTAINER_NAME} 2>/dev/null || true
|
||||
docker rm ${CONTAINER_NAME} 2>/dev/null || true
|
||||
echo "✅ 停止并删除旧容器 ${CONTAINER_NAME} 成功..."
|
||||
|
||||
- name: 运行新容器
|
||||
run: |
|
||||
# 容器名称
|
||||
CONTAINER_NAME="${{ vars.IMAGE_NAME }}"
|
||||
|
||||
# 启动容器
|
||||
docker run -d \
|
||||
--name ${CONTAINER_NAME} \
|
||||
--restart always \
|
||||
${{ vars.IMAGE_NAME }}:latest
|
||||
|
||||
- name: 验证容器状态
|
||||
run: |
|
||||
CONTAINER_NAME="${{ vars.IMAGE_NAME }}"
|
||||
if docker ps --filter "name=${CONTAINER_NAME}" --filter "status=running" | grep -q ${CONTAINER_NAME}; then
|
||||
echo "✅ 容器 ${CONTAINER_NAME} 启动成功"
|
||||
# 显示容器日志
|
||||
docker logs ${CONTAINER_NAME} --tail 50
|
||||
else
|
||||
echo "❌ 容器 ${CONTAINER_NAME} 启动失败"
|
||||
docker logs ${CONTAINER_NAME}
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: 清理旧镜像
|
||||
run: |
|
||||
CONTAINER_NAME="${{ vars.IMAGE_NAME }}"
|
||||
OLD_IMAGES=$(docker images --filter "reference=${CONTAINER_NAME}:*" --format "{{.ID}}" | tail -n +6)
|
||||
if [ -n "${OLD_IMAGES}" ]; then
|
||||
echo "🗑️ 清理旧镜像:${OLD_IMAGES}"
|
||||
echo "${OLD_IMAGES}" | xargs -r docker rmi -f 2>/dev/null
|
||||
echo "✅ 旧镜像清理成功"
|
||||
else
|
||||
echo "✅ 无旧镜像需要清理"
|
||||
fi
|
||||
Reference in New Issue
Block a user