dify/.github/workflows/docker-build.yml
2026-03-28 07:10:55 +08:00

78 lines
2.1 KiB
YAML

name: Build docker image
on:
pull_request:
branches:
- "main"
paths:
- api/Dockerfile
- web/Dockerfile
permissions:
contents: read
concurrency:
group: docker-build-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
check-changes:
runs-on: ubuntu-latest
outputs:
api: ${{ steps.changes.outputs.api }}
web: ${{ steps.changes.outputs.web }}
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 2
persist-credentials: false
- name: Check changed files
id: changes
uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
with:
filters: |
api:
- 'api/Dockerfile'
web:
- 'web/Dockerfile'
build-api:
name: Build API Docker Image
needs: check-changes
if: needs.check-changes.outputs.api == 'true'
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Build Docker Image
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
with:
push: false
context: "{{defaultContext}}:api"
file: Dockerfile
platforms: linux/amd64
cache-from: type=gha,scope=api-pr
cache-to: type=gha,mode=max,scope=api-pr
build-web:
name: Build Web Docker Image
needs: check-changes
if: needs.check-changes.outputs.web == 'true'
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Build Docker Image
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
with:
push: false
context: "{{defaultContext}}:web"
file: Dockerfile
platforms: linux/amd64
cache-from: type=gha,scope=web-pr
cache-to: type=gha,mode=max,scope=web-pr