You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions任务跳过问题:前后端Docker自动构建推送失效

问题分析与解决方案

问题根源

你的GitHub Actions任务被跳过,核心原因是github.event.head_commit.modified仅能获取单个提交的变更文件列表。如果推送的是多个提交、合并分支或批量修改,这个字段会缺失或无法覆盖所有变更路径,导致条件判断失效,job直接被跳过。

修改后的配置

name: Docker build and push

on:
  push:
    branches:
      - main
    paths:
      - "front/**"
      - "backend/**"

jobs:
  build_and_push_frontend:
    runs-on: ubuntu-latest
    # 改用github.event.paths判断,适配多提交场景
    if: contains(toJson(github.event.paths), 'front/')
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2

      - name: Login to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Set up Docker Meta for Frontend
        id: docker_meta_frontend
        uses: docker/metadata-action@v3
        with:
          # 改为完整的Docker Hub镜像名,格式:用户名/镜像名
          images: ${{ secrets.DOCKERHUB_USERNAME }}/front

      - name: Build and Push Frontend Docker Image
        uses: docker/build-push-action@v2
        with:
          context: ./front
          file: ./front/Dockerfile
          platforms: linux/amd64
          push: true
          tags: ${{ steps.docker_meta_frontend.outputs.tags }}
          labels: ${{ steps.docker_meta_frontend.outputs.labels }}

  build_and_push_backend:
    runs-on: ubuntu-latest
    # 同理修改后端的判断条件
    if: contains(toJson(github.event.paths), 'backend/')
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2

      - name: Login to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Set up Docker Meta for Backend
        id: docker_meta_backend
        uses: docker/metadata-action@v3
        with:
          # 改为完整的Docker Hub镜像名
          images: ${{ secrets.DOCKERHUB_USERNAME }}/backend

      - name: Build and Push Backend Docker Image
        uses: docker/build-push-action@v2
        with:
          context: ./backend
          file: ./backend/Dockerfile
          platforms: linux/amd64
          push: true
          tags: ${{ steps.docker_meta_backend.outputs.tags }}
          labels: ${{ steps.docker_meta_backend.outputs.labels }}

关键修改说明

  1. 条件判断替换:用github.event.paths替代github.event.head_commit.modified,该字段会返回push事件中所有变更文件的完整路径数组,通过toJson转换为字符串后,contains可以准确检测到是否有对应目录的变更,适配所有提交场景。
  2. 镜像名修正:docker/metadata-action的images字段必须填写完整的Docker Hub镜像路径(用户名/镜像名),否则无法成功推送镜像到Docker Hub。

内容的提问来源于stack exchange,提问作者brgndy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 07:26:33