name: release on: pull_request: types: - closed branches: - main paths: - "pyproject.toml" env: POETRY_VERSION: "1.8.2" jobs: if_release: if: ${{ (github.event.pull_request.merged == true) && contains(github.event.pull_request.labels.*.name, 'Release') }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install poetry run: pipx install poetry==${{ env.POETRY_VERSION }} - name: Set up Python 3.10 uses: actions/setup-python@v5 with: python-version: "3.10" cache: "poetry" - name: Build project for distribution run: make build - name: Check Version id: check-version run: | echo version=$(poetry version --short) >> $GITHUB_OUTPUT - name: Publish to PyPI env: POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_API_TOKEN }} run: | poetry publish - 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 uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v5 with: context: . push: true file: ./docker/build_and_push.Dockerfile platforms: "linux/amd64,linux/arm64/v8" tags: | langflowai/langflow:${{ steps.check-version.outputs.version }} langflowai/langflow:latest - name: Wait for Docker Hub to propagate run: sleep 120 - name: Build and push (backend) uses: docker/build-push-action@v5 with: context: . push: true file: ./docker/build_and_push_backend.Dockerfile platforms: "linux/amd64,linux/arm64/v8" build-args: | LANGFLOW_IMAGE=langflowai/langflow:${{ steps.check-version.outputs.version }} tags: | langflowai/langflow-backend:${{ steps.check-version.outputs.version }} langflowai/langflow-backend:latest - name: Build and push (frontend) 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:${{ steps.check-version.outputs.version }} langflowai/langflow-frontend:latest - name: Create Release uses: ncipollo/release-action@v1 with: artifacts: "dist/*" token: ${{ secrets.GITHUB_TOKEN }} draft: false generateReleaseNotes: true tag: v${{ steps.check-version.outputs.version }} commit: main