Files
freedom-admin/.gitea/workflows/deploy.yml
T
张家训 c17a840094
CI/CD Deploy (Admin) / 构建后端镜像并部署 (push) Failing after 0s
ci: job 瀹瑰櫒鎸傝浇 docker.sock锛屾敮鎸?docker build/compose 姝ラ
2026-08-31 11:10:10 +08:00

86 lines
3.4 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.
# =============================================================
# freedom-admin CI/CD 工作流(后端)
# 触发条件:push 到 master 分支时自动构建并部署
#
# 环境(已确认):
# - runner: local-runner (act_runner v0.6.1),labels: ubuntu-latest
# - job 容器挂载 /var/run/docker.sock 与 /opt/freedom:由本 workflow 的 volumes 声明,
# 并经 runner-config.yml 的 valid_volumes 白名单放行;host.docker.internal 解析由
# workflow options + runner-config.yml 的 container.options(--add-host)共同提供
# - Gitea 内网地址:host.docker.internal:3000(Gitea Actions 实例地址)
# - 部署目录:/opt/freedom/deploy(含 docker-compose.yml 与 .env)
#
# 前置条件(管理员一次性完成):
# - 宿主 /opt/freedom/deploy/docker-compose.yml 与 .env 已就位(含 DB 凭据)
# =============================================================
name: CI/CD Deploy (Admin)
on:
push:
branches:
- master
workflow_dispatch:
jobs:
build-and-deploy:
name: 构建后端镜像并部署
runs-on: ubuntu-latest
container:
image: docker:24.0-cli
# 挂载与 host 解析:workflow 级 volumes/options + runner-config valid_volumes 白名单
# docker.sock 供 docker build / docker compose 使用;/opt/freedom 供 workspace 与部署目录使用
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /opt/freedom:/opt/freedom
options: --add-host=host.docker.internal:host-gateway
steps:
- name: 安装 git
run: apk add --no-cache git
- name: Debug 网络环境
run: |
set -x
{
echo "=== /etc/hosts ==="
cat /etc/hosts
echo "=== getent hosts host.docker.internal ==="
getent hosts host.docker.internal || echo "NOT_RESOLVED"
echo "=== GITHUB_TOKEN len ==="
echo "len=${#GITHUB_TOKEN}"
echo "=== GITHUB_REPOSITORY ==="
echo "${GITHUB_REPOSITORY}"
echo "=== ping test ==="
wget -q -T 3 -O /dev/null http://host.docker.internal:3000/api/v1/version && echo HTTP_OK || echo HTTP_FAIL
} | tee /opt/freedom/workspace-debug.txt
- name: 拉取 master 代码
run: |
set -euo pipefail
rm -rf /opt/freedom/workspace-admin
git clone --depth 1 --branch master \
"http://oauth2:${GITHUB_TOKEN}@host.docker.internal:3000/${GITHUB_REPOSITORY}.git" \
/opt/freedom/workspace-admin
cd /opt/freedom/workspace-admin
echo "==> 已拉取代码,最新提交:"
git log -1 --oneline
env:
GITHUB_TOKEN: ${{ github.token }}
- name: 构建后端镜像
run: |
set -euo pipefail
docker build -t freedom-admin:latest /opt/freedom/workspace-admin
- name: 部署后端服务
run: |
set -euo pipefail
cd /opt/freedom/deploy
test -f docker-compose.yml || { echo "错误: 缺少 docker-compose.yml,请先初始化部署目录"; exit 1; }
test -f .env || { echo "错误: 缺少 .env,请先初始化部署目录"; exit 1; }
docker compose up -d --force-recreate backend
- name: 确认部署结果
run: |
cd /opt/freedom/deploy
docker compose ps backend