From 55e0be338881d78b82d81836506bd63a4f9acac1 Mon Sep 17 00:00:00 2001 From: "Sun, Xuehao" Date: Fri, 16 Aug 2024 20:18:44 +0800 Subject: [PATCH] Freeze base images (#607) * Update Dockerfile to use LANGCHAIN_VERSION argument Signed-off-by: Sun, Xuehao * Revert "Update Dockerfile to use LANGCHAIN_VERSION argument" This reverts commit 1bff239d388e06913bc82d1ee667cac5e17490ff. * chore: Add manual freeze images workflow Signed-off-by: Sun, Xuehao * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * split jobs Signed-off-by: Sun, Xuehao --------- Signed-off-by: Sun, Xuehao Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Signed-off-by: dmsuehir --- .github/workflows/manual-freeze-images.yml | 38 +++++++++++++++++++ .github/workflows/manual-freeze-tag.yml | 44 ++++++++++++++++++++++ .github/workflows/scripts/freeze_images.sh | 41 ++++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 .github/workflows/manual-freeze-images.yml create mode 100644 .github/workflows/manual-freeze-tag.yml create mode 100644 .github/workflows/scripts/freeze_images.sh diff --git a/.github/workflows/manual-freeze-images.yml b/.github/workflows/manual-freeze-images.yml new file mode 100644 index 0000000000..3d792b1804 --- /dev/null +++ b/.github/workflows/manual-freeze-images.yml @@ -0,0 +1,38 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +name: Freeze-images + +on: + workflow_dispatch: + +jobs: + freeze-images: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: ${{ github.ref }} + + - uses: actions/setup-python@v5 + with: + python-version: "3.10" + + - name: Set up Git + run: | + git config --global user.name "NeuralChatBot" + git config --global user.email "grp_neural_chat_bot@intel.com" + git remote set-url origin https://NeuralChatBot:"${{ secrets.ACTION_TOKEN }}"@github.com/opea-project/GenAIExamples.git + + - name: Run script + run: | + bash .github/workflows/scripts/freeze_images.sh + + - name: Commit changes + run: | + git add . + git commit -s -m "Freeze images tag" + git push diff --git a/.github/workflows/manual-freeze-tag.yml b/.github/workflows/manual-freeze-tag.yml new file mode 100644 index 0000000000..cf9507de8b --- /dev/null +++ b/.github/workflows/manual-freeze-tag.yml @@ -0,0 +1,44 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +name: Freeze-tag + +on: + workflow_dispatch: + inputs: + tag: + default: "latest" + description: "Tag to apply to images" + required: true + type: string + +jobs: + freeze-tag: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: ${{ github.ref }} + + - uses: actions/setup-python@v5 + with: + python-version: "3.10" + + - name: Set up Git + run: | + git config --global user.name "NeuralChatBot" + git config --global user.email "grp_neural_chat_bot@intel.com" + git remote set-url origin https://NeuralChatBot:"${{ secrets.ACTION_TOKEN }}"@github.com/opea-project/GenAIExamples.git + + - name: Run script + run: | + find . -name "*.md" | xargs sed -i "s|^docker\ compose|TAG=${{ github.event.inputs.tag }}\ docker\ compose|g" + + - name: Commit changes + run: | + git add . + git commit -s -m "Freeze images tag" + git push diff --git a/.github/workflows/scripts/freeze_images.sh b/.github/workflows/scripts/freeze_images.sh new file mode 100644 index 0000000000..fcc1425888 --- /dev/null +++ b/.github/workflows/scripts/freeze_images.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +function get_latest_version() { + repo_image=$1 + versions=$(curl -s "https://registry.hub.docker.com/v2/repositories/$repo_image/tags/" | jq '."results"[]["name"]' | tr -d '"') + echo "version list: $versions" + latest_version=$(printf "%s\n" "${versions[@]}" | grep -v "latest" | sort -V | tail -n 1) + echo "latest version: $latest_version" + replace_image_version $repo_image $latest_version +} + +function replace_image_version() { + repo_image=$1 + version=$2 + find . -name "Dockerfile" | xargs sed -i "s|$repo_image:latest|$repo_image:$version|g" +} + +function check_branch_name() { + if [[ "$GITHUB_REF_NAME" == "main" ]]; then + echo "$GITHUB_REF_NAME is protected branch" + exit 0 + else + echo "branch name is $GITHUB_REF_NAME" + fi +} + +function main() { + check_branch_name + repo_image_list="langchain/langchain" + for repo_image in $repo_image_list; do + echo "::group::check $repo_image" + get_latest_version $repo_image + echo "::endgroup::" + done + freeze_tag_in_markdown +} + +main