Files
junhong_cmp_fiber/.gitea/workflows/deploy.yaml
huang bf4ef37cc5
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 4s
修复 docker compose 找不到配置文件:显式指定文件名
问题:docker compose 默认查找 docker-compose.yml
我们的文件:docker-compose.prod.yml

解决:所有 docker compose 命令添加 -f 参数
- docker compose -f docker-compose.prod.yml pull
- docker compose -f docker-compose.prod.yml up -d
- docker compose -f docker-compose.prod.yml ps
2026-01-20 11:29:54 +08:00

107 lines
3.7 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: 构建并部署到测试环境(无 SSH
on:
push:
branches:
- main
- dev
- test
env:
REGISTRY: registry.boss160.cn
API_IMAGE: registry.boss160.cn/junhong/cmp-fiber-api
WORKER_IMAGE: registry.boss160.cn/junhong/cmp-fiber-worker
DEPLOY_DIR: /opt/junhong_cmp
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: 检出代码
run: |
# 添加 Nix 路径到 PATHgit 安装在这里)
export PATH="$HOME/.nix-profile/bin:/usr/local/bin:/usr/bin:/bin:$PATH"
# 跳过 SSL 验证(内网自签名证书)
export GIT_SSL_NO_VERIFY=1
git clone https://git.boss160.cn/csxj2026/junhong_cmp_fiber.git .
git checkout ${{ github.sha }}
- name: 设置镜像标签
id: tag
run: |
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
echo "tag=latest" >> $GITHUB_OUTPUT
elif [ "${{ github.ref }}" = "refs/heads/dev" ]; then
echo "tag=dev" >> $GITHUB_OUTPUT
elif [ "${{ github.ref }}" = "refs/heads/test" ]; then
echo "tag=test" >> $GITHUB_OUTPUT
else
echo "tag=unknown" >> $GITHUB_OUTPUT
fi
- name: 登录 Docker Registry
run: |
echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login "${{ env.REGISTRY }}" --username "${{ secrets.REGISTRY_USERNAME }}" --password-stdin
- name: 构建 API 镜像
run: |
docker build -f Dockerfile.api -t ${{ env.API_IMAGE }}:${{ steps.tag.outputs.tag }} .
docker tag ${{ env.API_IMAGE }}:${{ steps.tag.outputs.tag }} ${{ env.API_IMAGE }}:${{ github.sha }}
- name: 构建 Worker 镜像
run: |
docker build -f Dockerfile.worker -t ${{ env.WORKER_IMAGE }}:${{ steps.tag.outputs.tag }} .
docker tag ${{ env.WORKER_IMAGE }}:${{ steps.tag.outputs.tag }} ${{ env.WORKER_IMAGE }}:${{ github.sha }}
- name: 推送镜像到 Registry
run: |
docker push ${{ env.API_IMAGE }}:${{ steps.tag.outputs.tag }}
docker push ${{ env.API_IMAGE }}:${{ github.sha }}
docker push ${{ env.WORKER_IMAGE }}:${{ steps.tag.outputs.tag }}
docker push ${{ env.WORKER_IMAGE }}:${{ github.sha }}
- name: 部署到本地(仅 main 分支)
if: github.ref == 'refs/heads/main'
run: |
# 确保部署目录存在
mkdir -p ${{ env.DEPLOY_DIR }}/{configs,logs}
# 调试:显示当前目录和文件
echo "📍 当前工作目录: $(pwd)"
echo "📁 当前目录内容:"
ls -la
# 如果配置文件不存在,从当前目录复制
if [ ! -f ${{ env.DEPLOY_DIR }}/docker-compose.prod.yml ]; then
echo "📋 初始化部署目录..."
cp -v docker-compose.prod.yml ${{ env.DEPLOY_DIR }}/
cp -rv configs/* ${{ env.DEPLOY_DIR }}/configs/
else
echo "✅ 配置文件已存在,跳过复制"
fi
cd ${{ env.DEPLOY_DIR }}
echo "📥 拉取最新镜像..."
docker compose -f docker-compose.prod.yml pull
echo "🚀 重启服务..."
docker compose -f docker-compose.prod.yml up -d
echo "⏳ 等待服务启动..."
sleep 10
echo "✅ 部署完成!"
docker compose -f docker-compose.prod.yml ps
- name: 构建结果通知
if: always()
run: |
if [ "${{ job.status }}" = "success" ]; then
echo "✅ 构建成功: ${{ steps.tag.outputs.tag }}"
echo "📦 镜像标签: ${{ github.sha }}"
else
echo "❌ 构建失败"
fi