name: Build and Deploy Blog on: push: branches: [main] paths-ignore: - 'README.md' - 'LICENSE' - '.gitignore' workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build: # host 模式:step 直接在 gitea-runner 容器内跑(Alpine), # /blog-public 由 runner docker-compose 直接 bind 到 NAS,无需 act_runner 注入 runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: Install build tools (Alpine) # runner 镜像是 alpine,只有 apk;每次跑装一遍,几秒钟,小代价换零状态 run: apk add --no-cache curl tar rsync git bash - name: Install Hugo Extended run: | HUGO_VERSION=0.161.1 curl -fsSL "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" | tar -xz install hugo /usr/local/bin/ hugo version - name: Build site run: hugo --gc --minify - name: Deploy to /blog-public run: | [ -d /blog-public ] || { echo "::error::/blog-public missing, runner compose 没挂上"; exit 1; } rsync -av --delete public/ /blog-public/