1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- name: Build and Push API & Web
- on:
- push:
- branches:
- - "main"
- - "deploy/dev"
- release:
- types: [published]
- env:
- DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
- DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
- DIFY_WEB_IMAGE_NAME: ${{ vars.DIFY_WEB_IMAGE_NAME || 'langgenius/dify-web' }}
- DIFY_API_IMAGE_NAME: ${{ vars.DIFY_API_IMAGE_NAME || 'langgenius/dify-api' }}
- jobs:
- build-and-push:
- runs-on: ubuntu-latest
- if: github.event.pull_request.draft == false
- strategy:
- matrix:
- include:
- - service_name: "web"
- image_name_env: "DIFY_WEB_IMAGE_NAME"
- context: "web"
- - service_name: "api"
- image_name_env: "DIFY_API_IMAGE_NAME"
- context: "api"
- steps:
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
- - name: Login to Docker Hub
- uses: docker/login-action@v2
- with:
- username: ${{ env.DOCKERHUB_USER }}
- password: ${{ env.DOCKERHUB_TOKEN }}
- - name: Extract metadata (tags, labels) for Docker
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: ${{ env[matrix.image_name_env] }}
- tags: |
- type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/') }}
- type=ref,event=branch
- type=sha,enable=true,priority=100,prefix=,suffix=,format=long
- type=raw,value=${{ github.ref_name }},enable=${{ startsWith(github.ref, 'refs/tags/') }}
- - name: Build and push
- uses: docker/build-push-action@v5
- with:
- context: "{{defaultContext}}:${{ matrix.context }}"
- platforms: ${{ startsWith(github.ref, 'refs/tags/') && 'linux/amd64,linux/arm64' || 'linux/amd64' }}
- build-args: COMMIT_SHA=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
- cache-from: type=gha
- cache-to: type=gha,mode=max
|