feat: populate upstream nginx variables when ai-proxy uses cosocket t… #20988
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [master, 'release/**'] | |
| paths-ignore: | |
| - 'docs/**' | |
| - '**/*.md' | |
| pull_request: | |
| branches: [master, 'release/**'] | |
| paths-ignore: | |
| - 'docs/**' | |
| - '**/*.md' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.run_number || github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| platform: | |
| - ubuntu-latest | |
| os_name: | |
| - linux_openresty | |
| test_dir: | |
| - t/plugin/[a-k]*.t | |
| - t/stream-plugin t/plugin/[l-z]*.t | |
| - t/admin t/cli t/config-center-yaml t/control t/core t/debug t/discovery t/error_page t/http3/admin t/misc | |
| - t/node t/pubsub t/router t/script t/secret t/stream-node t/utils t/wasm t/xds-library t/xrpc | |
| runs-on: ${{ matrix.platform }} | |
| timeout-minutes: 90 | |
| env: | |
| SERVER_NAME: ${{ matrix.os_name }} | |
| OPENRESTY_VERSION: default | |
| steps: | |
| - name: Check out code | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| submodules: recursive | |
| - name: Setup Go | |
| uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 | |
| with: | |
| go-version: "1.17" | |
| - name: Cache deps | |
| uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5 | |
| env: | |
| cache-name: cache-deps | |
| with: | |
| path: deps | |
| key: ${{ runner.os }}-${{ env.cache-name }}-${{ matrix.os_name }}-${{ hashFiles('apisix-master-0.rockspec') }} | |
| - name: Extract test type | |
| shell: bash | |
| id: test_env | |
| run: | | |
| test_dir="${{ matrix.test_dir }}" | |
| if [[ $test_dir =~ 't/plugin' ]]; then | |
| echo "type=plugin" >>$GITHUB_OUTPUT | |
| fi | |
| if [[ $test_dir =~ 't/admin ' ]]; then | |
| echo "type=first" >>$GITHUB_OUTPUT | |
| fi | |
| if [[ $test_dir =~ ' t/xrpc' ]]; then | |
| echo "type=last" >>$GITHUB_OUTPUT | |
| fi | |
| - name: Free disk space | |
| run: | | |
| bash ./ci/free_disk_space.sh | |
| - name: Set hostname | |
| run: | | |
| sudo sh -c 'echo "127.0.1.1 httpbin.local" >> /etc/hosts' | |
| - name: Linux Before install | |
| run: sudo ./ci/${{ matrix.os_name }}_runner.sh before_install | |
| - name: Linux Install | |
| run: | | |
| sudo --preserve-env=OPENRESTY_VERSION \ | |
| ./ci/${{ matrix.os_name }}_runner.sh do_install | |
| - name: Linux launch common services | |
| run: | | |
| make ci-env-up project_compose_ci=ci/pod/docker-compose.common.yml | |
| sudo ./ci/init-common-test-service.sh | |
| - name: Cache images | |
| id: cache-images | |
| uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5 | |
| env: | |
| cache-name: cache-apisix-docker-images | |
| with: | |
| path: docker-images-backup | |
| key: ${{ runner.os }}-${{ env.cache-name }}-${{ steps.test_env.outputs.type }}-${{ hashFiles(format('./ci/pod/docker-compose.{0}.yml', steps.test_env.outputs.type )) }} | |
| - if: ${{ steps.cache-images.outputs.cache-hit == 'true' }} | |
| name: Load saved docker images | |
| run: | | |
| if [[ -f docker-images-backup/apisix-images.tar ]]; then | |
| [[ ${{ steps.test_env.outputs.type }} != first ]] && sudo ./ci/init-${{ steps.test_env.outputs.type }}-test-service.sh before | |
| docker load --input docker-images-backup/apisix-images.tar | |
| echo "loaded docker images" | |
| # preserve storage space | |
| rm docker-images-backup/apisix-images.tar | |
| make ci-env-up project_compose_ci=ci/pod/docker-compose.${{ steps.test_env.outputs.type }}.yml | |
| if [[ ${{ steps.test_env.outputs.type }} != first ]]; then | |
| sudo ./ci/init-${{ steps.test_env.outputs.type }}-test-service.sh after | |
| fi | |
| fi | |
| - if: ${{ steps.cache-images.outputs.cache-hit != 'true' }} | |
| name: Linux launch services | |
| run: | | |
| [[ ${{ steps.test_env.outputs.type }} != first ]] && sudo ./ci/init-${{ steps.test_env.outputs.type }}-test-service.sh before | |
| [[ ${{ steps.test_env.outputs.type }} == plugin ]] && ./ci/pod/openfunction/build-function-image.sh | |
| make ci-env-up project_compose_ci=ci/pod/docker-compose.${{ steps.test_env.outputs.type }}.yml | |
| [[ ${{ steps.test_env.outputs.type }} != first ]] && sudo ./ci/init-${{ steps.test_env.outputs.type }}-test-service.sh after | |
| echo "Linux launch services, done." | |
| - name: Start Dubbo Backend | |
| if: matrix.os_name == 'linux_openresty' && (steps.test_env.outputs.type == 'plugin' || steps.test_env.outputs.type == 'last') | |
| run: | | |
| cur_dir=$(pwd) | |
| sudo apt update | |
| sudo apt install -y maven openjdk-8-jdk | |
| sudo update-java-alternatives --set java-1.8.0-openjdk-amd64 | |
| export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 | |
| export PATH=$JAVA_HOME/bin:$PATH | |
| cd t/lib/dubbo-backend | |
| mvn package | |
| cd dubbo-backend-provider/target | |
| java \ | |
| -Djava.net.preferIPv4Stack=true \ | |
| -jar dubbo-demo-provider.one-jar.jar > /tmp/java.log & | |
| cd $cur_dir/t/lib/dubbo-serialization-backend | |
| mvn package | |
| cd dubbo-serialization-backend-provider/target | |
| java \ | |
| -Djava.net.preferIPv4Stack=true \ | |
| -jar dubbo-demo-provider.one-jar.jar > /tmp/java2.log & | |
| # Wait for the Dubbo backends to accept connections; | |
| for port in 20880 30880; do | |
| deadline=$(( $(date +%s) + 60 )) | |
| ready=0 | |
| while [ "$(date +%s)" -lt "$deadline" ]; do | |
| if (exec 3<>/dev/tcp/127.0.0.1/$port) 2>/dev/null; then | |
| echo "dubbo backend ready on port $port" | |
| ready=1 | |
| break | |
| fi | |
| sleep 1 | |
| done | |
| if [ "$ready" -ne 1 ]; then | |
| echo "::error::dubbo backend on port $port not ready after 60s" | |
| tail -n 200 /tmp/java.log /tmp/java2.log 2>/dev/null || true | |
| exit 1 | |
| fi | |
| done | |
| - name: Build xDS library | |
| if: steps.test_env.outputs.type == 'last' | |
| run: | | |
| cd t/xds-library | |
| go build -o libxds.so -buildmode=c-shared main.go export.go | |
| - name: Build wasm code | |
| if: matrix.os_name == 'linux_openresty' && steps.test_env.outputs.type == 'last' | |
| run: | | |
| export TINYGO_VER=0.20.0 | |
| wget https://github.com/tinygo-org/tinygo/releases/download/v${TINYGO_VER}/tinygo_${TINYGO_VER}_amd64.deb 2>/dev/null | |
| sudo dpkg -i tinygo_${TINYGO_VER}_amd64.deb | |
| cd t/wasm && find . -type f -name "*.go" | xargs -Ip tinygo build -o p.wasm -scheduler=none -target=wasi p | |
| - name: Linux Script | |
| env: | |
| TEST_FILE_SUB_DIR: ${{ matrix.test_dir }} | |
| run: sudo -E ./ci/${{ matrix.os_name }}_runner.sh script | |
| - if: ${{ steps.cache-images.outputs.cache-hit != 'true' }} | |
| name: Save docker images | |
| run: | | |
| echo "start backing up, $(date)" | |
| bash ./ci/backup-docker-images.sh ${{ steps.test_env.outputs.type }} | |
| echo "backup done, $(date)" |