diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index f63920703..f2492eacf 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -23,14 +23,24 @@ env: POETRY_VERSION: "1.8.2" jobs: - docker_build: - name: Build Docker Image + setup: runs-on: ubuntu-latest + outputs: + base_tags: ${{ steps.set-vars.outputs.base_tags }} + main_tags: ${{ steps.set-vars.outputs.main_tags }} + steps: + - uses: actions/checkout@v4 + - name: Set Dockerfile and Tags + id: set-vars + run: | + echo "::set-output name=base_tags::langflowai/langflow:base-${{ inputs.version }}" + echo "::set-output name=main_tags::langflowai/langflow:${{ inputs.version }},langflowai/langflow:1.0-alpha" + + build_base: + runs-on: ubuntu-latest + needs: setup steps: - uses: actions/checkout@v4 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - id: qemu - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub @@ -38,56 +48,51 @@ jobs: with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Set Dockerfile and Tags - id: set-vars - run: | - if [ "${{ inputs.release_type }}" == "base" ]; then - echo "DOCKERFILE=./docker/build_and_push_base.Dockerfile" >> $GITHUB_ENV - echo "TAGS=langflowai/langflow:base-${{ inputs.version }}" >> $GITHUB_ENV - else - echo "DOCKERFILE=./docker/build_and_push.Dockerfile" >> $GITHUB_ENV - echo "TAGS=langflowai/langflow:${{ inputs.version }},langflowai/langflow:1.0-alpha" >> $GITHUB_ENV - fi - - name: Build and push + - name: Build and push Base Image uses: docker/build-push-action@v5 with: context: . push: true platforms: "linux/amd64,linux/arm64/v8" - file: ${{ env.DOCKERFILE }} - tags: ${{ env.TAGS }} - - name: Wait for Docker Hub to propagate - run: sleep 120 - - name: Build and push (backend) - if: ${{ inputs.release_type == 'main' }} + file: ./docker/build_and_push_base.Dockerfile + tags: ${{ needs.setup.outputs.base_tags }} + + build_components: + runs-on: ubuntu-latest + needs: build_base + strategy: + matrix: + component: [backend, frontend] + include: + - component: backend + dockerfile: ./docker/build_and_push_backend.Dockerfile + tags: langflowai/langflow-backend:${{ inputs.version }},langflowai/langflow-backend:1.0-alpha + - component: frontend + dockerfile: ./docker/frontend/build_and_push_frontend.Dockerfile + tags: langflowai/langflow-frontend:${{ inputs.version }},langflowai/langflow-frontend:1.0-alpha + steps: + - uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push ${{ matrix.component }} uses: docker/build-push-action@v5 with: context: . push: true platforms: "linux/amd64,linux/arm64/v8" - file: ./docker/build_and_push_backend.Dockerfile - build-args: | - LANGFLOW_IMAGE=langflowai/langflow:${{ inputs.version }} - tags: | - langflowai/langflow-backend:${{ inputs.version }} - langflowai/langflow-backend:1.0-alpha - - name: Build and push (frontend) - if: ${{ inputs.release_type == 'main' }} - uses: docker/build-push-action@v5 - with: - context: . - push: true - file: ./docker/frontend/build_and_push_frontend.Dockerfile - platforms: "linux/amd64,linux/arm64/v8" - tags: | - langflowai/langflow-frontend:${{ inputs.version }} - langflowai/langflow-frontend:1.0-alpha + file: ${{ matrix.dockerfile }} + tags: ${{ matrix.tags }} restart-space: name: Restart HuggingFace Spaces if: ${{ inputs.release_type == 'main' }} runs-on: ubuntu-latest - needs: docker_build + needs: build_base strategy: matrix: python-version: