@@ -70,177 +70,176 @@ jobs:
7070 shell : bash
7171 id : test-case-matrix
7272 run : |
73- echo "${{ inputs.hardware }}"
74- # example_l=$(echo ${{ inputs.example }} | tr '[:upper:]' '[:lower:]')
75- # cd ${{ github.workspace }}/${{ inputs.example }}/tests
76- # run_test_cases=""
77-
78- # if [[ "${{ inputs.hardware }}" == "gaudi"* ]]; then
79- # hardware="gaudi"
80- # elif [[ "${{ inputs.hardware }}" == "xeon"* ]]; then
81- # hardware="xeon"
82- # else
83- # hardware="${{ inputs.hardware }}"
84- # fi
85- # default_test_case=$(find . -type f -name "test_compose_on_$hardware.sh" | cut -d/ -f2)
86- # if [ "$default_test_case" ]; then run_test_cases="$default_test_case"; fi
87- # other_test_cases=$(find . -type f -name "test_compose_*_on_$hardware.sh" | cut -d/ -f2)
88- # echo "default_test_case=$default_test_case"
89- # echo "other_test_cases=$other_test_cases"
90-
91- # if [ "${{ inputs.tag }}" == "ci" ]; then
92- # base_commit=$(curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
93- # "https://api.github.com/repos/opea-project/GenAIExamples/commits?sha=${{ github.event.pull_request.base.ref }}" | jq -r '.[0].sha')
94- # merged_commit=$(git log -1 --format='%H')
95- # changed_files="$(git diff --name-only ${base_commit} ${merged_commit} | grep -vE '${{ inputs.diff_excluded_files }}')" || true
96- # fi
97-
98- # for test_case in $other_test_cases; do
99- # if [ "${{ inputs.tag }}" == "ci" ]; then
100- # flag=${test_case%_on_*}
101- # flag=${flag#test_compose_}
102- # if [[ $(printf '%s\n' "${changed_files[@]}" | grep ${{ inputs.example }} | grep ${flag}) ]]; then
103- # run_test_cases="$run_test_cases $test_case"
104- # fi
105- # else
106- # run_test_cases="$run_test_cases $test_case"
107- # fi
108- # done
109-
110- # if [ -z "$run_test_cases" ] && [[ $(printf '%s\n' "${changed_files[@]}" | grep ${{ inputs.example }} | grep /tests/) ]]; then
111- # run_test_cases=$other_test_cases
112- # fi
113-
114- # if [[ "${{ hardware }}" == "xeon"* ]]; then
115- # if [ -f "${{ github.workspace }}/${{ inputs.example }}/tests/test_ui_on_xeon.sh" ]; then
116- # run_test_cases="$run_test_cases test_ui_on_xeon.sh";
117- # fi
118- # fi
119- # test_cases=$(echo $run_test_cases | tr ' ' '\n' | sort -u | jq -R '.' | jq -sc '.')
120- # echo "test_cases=$test_cases"
121- # echo "test_cases=$test_cases" >> $GITHUB_OUTPUT
122-
123- # compose-test:
124- # needs: [get-test-case]
125- # if: ${{ needs.get-test-case.outputs.test_cases != '[""]' }}
126- # strategy:
127- # matrix:
128- # test_case: ${{ fromJSON(needs.get-test-case.outputs.test_cases) }}
129- # fail-fast: false
130- # runs-on: ${{ inputs.hardware }}
131- # continue-on-error: true
132- # steps:
133- # - name: Clean up Working Directory
134- # run: |
135- # sudo rm -rf ${{github.workspace}}/* || true
136-
137- # echo "Cleaning up containers using ports..."
138- # cid=$(docker ps --format '{{.Names}} : {{.Ports}}' | grep -v ' : $' | grep -v 0.0.0.0:5000 | awk -F' : ' '{print $1}')
139- # if [[ ! -z "$cid" ]]; then docker stop $cid && docker rm $cid && sleep 1s; fi
140- # docker system prune -f
141-
142- # echo "Cleaning up images ..."
143- # docker images --filter reference="*/*/*:latest" -q | xargs -r docker rmi && sleep 1s
144- # docker images --filter reference="*/*:ci" -q | xargs -r docker rmi && sleep 1s
145- # docker images --filter reference="*:5000/*/*" -q | xargs -r docker rmi && sleep 1s
146- # docker images --filter reference="opea/comps-base" -q | xargs -r docker rmi && sleep 1s
147- # docker images
148-
149- # - name: Checkout out Repo
150- # uses: actions/checkout@v4
151- # with:
152- # ref: ${{ needs.get-test-case.outputs.CHECKOUT_REF }}
153- # fetch-depth: 0
154-
155- # - name: Clean up container before test
156- # shell: bash
157- # run: |
158- # docker ps
159- # cd ${{ github.workspace }}/${{ inputs.example }}
160- # export test_case=${{ matrix.test_case }}
161- # export hardware=${{ inputs.hardware }}
162- # bash ${{ github.workspace }}/.github/workflows/scripts/docker_compose_clean_up.sh "containers"
163- # bash ${{ github.workspace }}/.github/workflows/scripts/docker_compose_clean_up.sh "ports"
164- # docker ps
165-
166- # - name: Log in DockerHub
167- # uses: docker/login-action@v3.2.0
168- # with:
169- # username: ${{ secrets.DOCKERHUB_USER }}
170- # password: ${{ secrets.DOCKERHUB_TOKEN }}
171-
172- # - name: Run test
173- # shell: bash
174- # env:
175- # HUGGINGFACEHUB_API_TOKEN: ${{ secrets.HF_TOKEN }}
176- # HF_TOKEN: ${{ secrets.HF_TOKEN }}
177- # GOOGLE_CSE_ID: ${{ secrets.GOOGLE_CSE_ID }}
178- # GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
179- # PINECONE_KEY: ${{ secrets.PINECONE_KEY }}
180- # PINECONE_KEY_LANGCHAIN_TEST: ${{ secrets.PINECONE_KEY_LANGCHAIN_TEST }}
181- # SDK_BASE_URL: ${{ secrets.SDK_BASE_URL }}
182- # SERVING_TOKEN: ${{ secrets.SERVING_TOKEN }}
183- # OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
184- # FINNHUB_API_KEY: ${{ secrets.FINNHUB_API_KEY }}
185- # FINANCIAL_DATASETS_API_KEY: ${{ secrets.FINANCIAL_DATASETS_API_KEY }}
186- # TAVILY_API_KEY: ${{ secrets.TAVILY_API_KEY }}
187- # IMAGE_REPO: ${{ inputs.registry }}
188- # IMAGE_TAG: ${{ inputs.tag }}
189- # opea_branch: ${{ inputs.opea_branch }}
190- # example: ${{ inputs.example }}
191- # hardware: ${{ inputs.hardware }}
192- # test_case: ${{ matrix.test_case }}
193- # use_model_cache: ${{ inputs.use_model_cache }}
194- # run: |
195- # cd ${{ github.workspace }}/$example/tests
196- # if [[ "$IMAGE_REPO" == "" ]]; then export IMAGE_REPO="${OPEA_IMAGE_REPO}opea"; fi
197- # if [[ "$use_model_cache" == "true" ]]; then
198- # if [ -d "/data2/hf_model" ]; then
199- # export model_cache="/data2/hf_model"
200- # else
201- # echo "Model cache directory /data2/hf_model does not exist"
202- # export model_cache="$HOME/.cache/huggingface/hub"
203- # fi
204- # if [[ "$test_case" == *"rocm"* ]]; then
205- # export model_cache="/var/lib/GenAI/data"
206- # fi
207- # fi
208- # if [ -f "${test_case}" ]; then timeout 60m bash "${test_case}"; else echo "Test script {${test_case}} not found, skip test!"; fi
209-
210- # - name: Clean up container after test
211- # if: always()
212- # run: |
213- # set -x
214-
215- # echo "Cleaning up containers using ports..."
216- # cid=$(docker ps --format '{{.Names}} : {{.Ports}}' | grep -v ' : $' | grep -v 0.0.0.0:5000 | awk -F' : ' '{print $1}')
217- # if [[ ! -z "$cid" ]]; then docker stop $cid && docker rm $cid && sleep 1s; fi
218-
219- # echo "Cleaning up images ..."
220- # df -h
221- # sleep 1
222- # docker system df
223- # sleep 1
224- # if [[ "${{ inputs.hardware }}" == "xeon"* ]]; then
225- # docker system prune -a -f
226- # else
227- # docker images --filter reference="*/*/*:latest" -q | xargs -r docker rmi && sleep 1s
228- # docker images --filter reference="*/*:ci" -q | xargs -r docker rmi && sleep 1s
229- # docker images --filter reference="*:5000/*/*" -q | xargs -r docker rmi && sleep 1s
230- # docker images --filter reference="opea/comps-base" -q | xargs -r docker rmi && sleep 1s
231- # docker system prune -f
232- # fi
233- # sleep 5
234- # docker images
235- # sleep 1
236- # df -h
237- # sleep 1
238- # docker system df
239- # sleep 1
240-
241- # - name: Publish pipeline artifact
242- # if: ${{ !cancelled() }}
243- # uses: actions/upload-artifact@v4
244- # with:
245- # name: ${{ inputs.hardware }}_${{ inputs.example }}_${{ matrix.test_case }}
246- # path: ${{ github.workspace }}/${{ inputs.example }}/tests/*.log
73+ example_l=$(echo ${{ inputs.example }} | tr '[:upper:]' '[:lower:]')
74+ cd ${{ github.workspace }}/${{ inputs.example }}/tests
75+ run_test_cases=""
76+
77+ if [[ "${{ inputs.hardware }}" == "gaudi"* ]]; then
78+ hardware="gaudi"
79+ elif [[ "${{ inputs.hardware }}" == "xeon"* ]]; then
80+ hardware="xeon"
81+ else
82+ hardware="${{ inputs.hardware }}"
83+ fi
84+ default_test_case=$(find . -type f -name "test_compose_on_$hardware.sh" | cut -d/ -f2)
85+ if [ "$default_test_case" ]; then run_test_cases="$default_test_case"; fi
86+ other_test_cases=$(find . -type f -name "test_compose_*_on_$hardware.sh" | cut -d/ -f2)
87+ echo "default_test_case=$default_test_case"
88+ echo "other_test_cases=$other_test_cases"
89+
90+ if [ "${{ inputs.tag }}" == "ci" ]; then
91+ base_commit=$(curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
92+ "https://api.github.com/repos/opea-project/GenAIExamples/commits?sha=${{ github.event.pull_request.base.ref }}" | jq -r '.[0].sha')
93+ merged_commit=$(git log -1 --format='%H')
94+ changed_files="$(git diff --name-only ${base_commit} ${merged_commit} | grep -vE '${{ inputs.diff_excluded_files }}')" || true
95+ fi
96+
97+ for test_case in $other_test_cases; do
98+ if [ "${{ inputs.tag }}" == "ci" ]; then
99+ flag=${test_case%_on_*}
100+ flag=${flag#test_compose_}
101+ if [[ $(printf '%s\n' "${changed_files[@]}" | grep ${{ inputs.example }} | grep ${flag}) ]]; then
102+ run_test_cases="$run_test_cases $test_case"
103+ fi
104+ else
105+ run_test_cases="$run_test_cases $test_case"
106+ fi
107+ done
108+
109+ if [ -z "$run_test_cases" ] && [[ $(printf '%s\n' "${changed_files[@]}" | grep ${{ inputs.example }} | grep /tests/) ]]; then
110+ run_test_cases=$other_test_cases
111+ fi
112+
113+ if [[ "${{ hardware }}" == "xeon"* ]]; then
114+ if [ -f "${{ github.workspace }}/${{ inputs.example }}/tests/test_ui_on_xeon.sh" ]; then
115+ run_test_cases="$run_test_cases test_ui_on_xeon.sh";
116+ fi
117+ fi
118+ test_cases=$(echo $run_test_cases | tr ' ' '\n' | sort -u | jq -R '.' | jq -sc '.')
119+ echo "test_cases=$test_cases"
120+ echo "test_cases=$test_cases" >> $GITHUB_OUTPUT
121+
122+ compose-test :
123+ needs : [get-test-case]
124+ if : ${{ needs.get-test-case.outputs.test_cases != '[""]' }}
125+ strategy :
126+ matrix :
127+ test_case : ${{ fromJSON(needs.get-test-case.outputs.test_cases) }}
128+ fail-fast : false
129+ runs-on : ${{ inputs.hardware }}
130+ continue-on-error : true
131+ steps :
132+ - name : Clean up Working Directory
133+ run : |
134+ sudo rm -rf ${{github.workspace}}/* || true
135+
136+ echo "Cleaning up containers using ports..."
137+ cid=$(docker ps --format '{{.Names}} : {{.Ports}}' | grep -v ' : $' | grep -v 0.0.0.0:5000 | awk -F' : ' '{print $1}')
138+ if [[ ! -z "$cid" ]]; then docker stop $cid && docker rm $cid && sleep 1s; fi
139+ docker system prune -f
140+
141+ echo "Cleaning up images ..."
142+ docker images --filter reference="*/*/*:latest" -q | xargs -r docker rmi && sleep 1s
143+ docker images --filter reference="*/*:ci" -q | xargs -r docker rmi && sleep 1s
144+ docker images --filter reference="*:5000/*/*" -q | xargs -r docker rmi && sleep 1s
145+ docker images --filter reference="opea/comps-base" -q | xargs -r docker rmi && sleep 1s
146+ docker images
147+
148+ - name : Checkout out Repo
149+ uses : actions/checkout@v4
150+ with :
151+ ref : ${{ needs.get-test-case.outputs.CHECKOUT_REF }}
152+ fetch-depth : 0
153+
154+ - name : Clean up container before test
155+ shell : bash
156+ run : |
157+ docker ps
158+ cd ${{ github.workspace }}/${{ inputs.example }}
159+ export test_case=${{ matrix.test_case }}
160+ export hardware=${{ inputs.hardware }}
161+ bash ${{ github.workspace }}/.github/workflows/scripts/docker_compose_clean_up.sh "containers"
162+ bash ${{ github.workspace }}/.github/workflows/scripts/docker_compose_clean_up.sh "ports"
163+ docker ps
164+
165+ - name : Log in DockerHub
166+ uses : docker/login-action@v3.2.0
167+ with :
168+ username : ${{ secrets.DOCKERHUB_USER }}
169+ password : ${{ secrets.DOCKERHUB_TOKEN }}
170+
171+ - name : Run test
172+ shell : bash
173+ env :
174+ HUGGINGFACEHUB_API_TOKEN : ${{ secrets.HF_TOKEN }}
175+ HF_TOKEN : ${{ secrets.HF_TOKEN }}
176+ GOOGLE_CSE_ID : ${{ secrets.GOOGLE_CSE_ID }}
177+ GOOGLE_API_KEY : ${{ secrets.GOOGLE_API_KEY }}
178+ PINECONE_KEY : ${{ secrets.PINECONE_KEY }}
179+ PINECONE_KEY_LANGCHAIN_TEST : ${{ secrets.PINECONE_KEY_LANGCHAIN_TEST }}
180+ SDK_BASE_URL : ${{ secrets.SDK_BASE_URL }}
181+ SERVING_TOKEN : ${{ secrets.SERVING_TOKEN }}
182+ OPENAI_API_KEY : ${{ secrets.OPENAI_API_KEY }}
183+ FINNHUB_API_KEY : ${{ secrets.FINNHUB_API_KEY }}
184+ FINANCIAL_DATASETS_API_KEY : ${{ secrets.FINANCIAL_DATASETS_API_KEY }}
185+ TAVILY_API_KEY : ${{ secrets.TAVILY_API_KEY }}
186+ IMAGE_REPO : ${{ inputs.registry }}
187+ IMAGE_TAG : ${{ inputs.tag }}
188+ opea_branch : ${{ inputs.opea_branch }}
189+ example : ${{ inputs.example }}
190+ hardware : ${{ inputs.hardware }}
191+ test_case : ${{ matrix.test_case }}
192+ use_model_cache : ${{ inputs.use_model_cache }}
193+ run : |
194+ cd ${{ github.workspace }}/$example/tests
195+ if [[ "$IMAGE_REPO" == "" ]]; then export IMAGE_REPO="${OPEA_IMAGE_REPO}opea"; fi
196+ if [[ "$use_model_cache" == "true" ]]; then
197+ if [ -d "/data2/hf_model" ]; then
198+ export model_cache="/data2/hf_model"
199+ else
200+ echo "Model cache directory /data2/hf_model does not exist"
201+ export model_cache="$HOME/.cache/huggingface/hub"
202+ fi
203+ if [[ "$test_case" == *"rocm"* ]]; then
204+ export model_cache="/var/lib/GenAI/data"
205+ fi
206+ fi
207+ if [ -f "${test_case}" ]; then timeout 60m bash "${test_case}"; else echo "Test script {${test_case}} not found, skip test!"; fi
208+
209+ - name : Clean up container after test
210+ if : always()
211+ run : |
212+ set -x
213+
214+ echo "Cleaning up containers using ports..."
215+ cid=$(docker ps --format '{{.Names}} : {{.Ports}}' | grep -v ' : $' | grep -v 0.0.0.0:5000 | awk -F' : ' '{print $1}')
216+ if [[ ! -z "$cid" ]]; then docker stop $cid && docker rm $cid && sleep 1s; fi
217+
218+ echo "Cleaning up images ..."
219+ df -h
220+ sleep 1
221+ docker system df
222+ sleep 1
223+ if [[ "${{ inputs.hardware }}" == "xeon"* ]]; then
224+ docker system prune -a -f
225+ else
226+ docker images --filter reference="*/*/*:latest" -q | xargs -r docker rmi && sleep 1s
227+ docker images --filter reference="*/*:ci" -q | xargs -r docker rmi && sleep 1s
228+ docker images --filter reference="*:5000/*/*" -q | xargs -r docker rmi && sleep 1s
229+ docker images --filter reference="opea/comps-base" -q | xargs -r docker rmi && sleep 1s
230+ docker system prune -f
231+ fi
232+ sleep 5
233+ docker images
234+ sleep 1
235+ df -h
236+ sleep 1
237+ docker system df
238+ sleep 1
239+
240+ - name : Publish pipeline artifact
241+ if : ${{ !cancelled() }}
242+ uses : actions/upload-artifact@v4
243+ with :
244+ name : ${{ inputs.hardware }}_${{ inputs.example }}_${{ matrix.test_case }}
245+ path : ${{ github.workspace }}/${{ inputs.example }}/tests/*.log
0 commit comments