From 32a8b311eb7278ed7a6102c8cc06681f890d534c Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Mon, 2 Oct 2023 15:07:57 +0100 Subject: [PATCH] Add base docker image and ci script for building and pushing (#10927) --- .github/workflows/_release_docker.yml | 62 +++++++++++++++++++ .../workflows/langchain_release_docker.yml | 13 ++++ docker/Dockerfile.base | 3 + 3 files changed, 78 insertions(+) create mode 100644 .github/workflows/_release_docker.yml create mode 100644 .github/workflows/langchain_release_docker.yml create mode 100644 docker/Dockerfile.base diff --git a/.github/workflows/_release_docker.yml b/.github/workflows/_release_docker.yml new file mode 100644 index 00000000000..ca8e9621b32 --- /dev/null +++ b/.github/workflows/_release_docker.yml @@ -0,0 +1,62 @@ +name: release_docker + +on: + workflow_call: + inputs: + dockerfile: + required: true + type: string + description: "Path to the Dockerfile to build" + image: + required: true + type: string + description: "Name of the image to build" + +env: + TEST_TAG: ${{ inputs.image }}:test + LATEST_TAG: ${{ inputs.image }}:latest + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Get git tag + uses: actions-ecosystem/action-get-latest-tag@v1 + id: get-latest-tag + - name: Set docker tag + env: + VERSION: ${{ steps.get-latest-tag.outputs.tag }} + run: | + echo "VERSION_TAG=${{ inputs.image }}:${VERSION#v}" >> $GITHUB_ENV + - 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@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build for Test + uses: docker/build-push-action@v5 + with: + context: . + file: ${{ inputs.dockerfile }} + load: true + tags: ${{ env.TEST_TAG }} + - name: Test + run: | + docker run --rm ${{ env.TEST_TAG }} python -c "import langchain" + - name: Build and Push to Docker Hub + uses: docker/build-push-action@v5 + with: + context: . + file: ${{ inputs.dockerfile }} + # We can only build for the intersection of platforms supported by + # QEMU and base python image, for now build only for + # linux/amd64 and linux/arm64 + platforms: linux/amd64,linux/arm64 + tags: ${{ env.LATEST_TAG }},${{ env.VERSION_TAG }} + push: true diff --git a/.github/workflows/langchain_release_docker.yml b/.github/workflows/langchain_release_docker.yml new file mode 100644 index 00000000000..e9b6e6d3327 --- /dev/null +++ b/.github/workflows/langchain_release_docker.yml @@ -0,0 +1,13 @@ +--- +name: docker/langchain/langchain Release + +on: + workflow_dispatch: # Allows to trigger the workflow manually in GitHub UI + +jobs: + release: + uses: ./.github/workflows/_release_docker.yml + with: + dockerfile: docker/Dockerfile.base + image: langchain/langchain + secrets: inherit diff --git a/docker/Dockerfile.base b/docker/Dockerfile.base new file mode 100644 index 00000000000..bdbbe1a5ad5 --- /dev/null +++ b/docker/Dockerfile.base @@ -0,0 +1,3 @@ +FROM python:latest + +RUN pip install langchain