Skip to content

Commit 390a0a6

Browse files
authored
Merge branch 'master' into docs-improve-oidc
2 parents 7d6ecec + a851952 commit 390a0a6

File tree

196 files changed

+29415
-8758
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

196 files changed

+29415
-8758
lines changed

.asf.yaml

+7-2
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616
#
1717

1818
github:
19-
description: The Cloud-Native API Gateway
19+
description: The Cloud-Native API Gateway and AI Gateway
2020
homepage: https://apisix.apache.org/blog/
2121
labels:
2222
- api-gateway
23+
- ai-gateway
24+
- ai
2325
- cloud-native
2426
- nginx
2527
- luajit
@@ -38,7 +40,6 @@ github:
3840
- docker
3941
- kubernetes-ingress
4042
- kubernetes-ingress-controller
41-
- service-mesh
4243

4344
enabled_merge_buttons:
4445
squash: true
@@ -53,6 +54,10 @@ github:
5354
dismiss_stale_reviews: true
5455
require_code_owner_reviews: true
5556
required_approving_review_count: 3
57+
release/3.12:
58+
required_pull_request_reviews:
59+
require_code_owner_reviews: true
60+
required_approving_review_count: 3
5661
release/3.11:
5762
required_pull_request_reviews:
5863
require_code_owner_reviews: true

.github/PULL_REQUEST_TEMPLATE.md

+6-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@
33
<!-- Please include a summary of the change and which issue is fixed. -->
44
<!-- Please also include relevant motivation and context. -->
55

6-
Fixes # (issue)
6+
#### Which issue(s) this PR fixes:
7+
<!--
8+
*Automatically closes linked issue when PR is merged.
9+
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
10+
-->
11+
Fixes #
712

813
### Checklist
914

.github/workflows/build.yml

+11-4
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
fail-fast: false
2626
matrix:
2727
platform:
28-
- ubuntu-20.04
28+
- ubuntu-latest
2929
os_name:
3030
- linux_openresty
3131
events_module:
@@ -143,15 +143,22 @@ jobs:
143143
run: |
144144
cur_dir=$(pwd)
145145
sudo apt update
146-
sudo apt install -y maven
146+
sudo apt install -y maven openjdk-8-jdk
147+
sudo update-java-alternatives --set java-1.8.0-openjdk-amd64
148+
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
149+
export PATH=$JAVA_HOME/bin:$PATH
147150
cd t/lib/dubbo-backend
148151
mvn package
149152
cd dubbo-backend-provider/target
150-
java -Djava.net.preferIPv4Stack=true -jar dubbo-demo-provider.one-jar.jar > /tmp/java.log &
153+
java \
154+
-Djava.net.preferIPv4Stack=true \
155+
-jar dubbo-demo-provider.one-jar.jar > /tmp/java.log &
151156
cd $cur_dir/t/lib/dubbo-serialization-backend
152157
mvn package
153158
cd dubbo-serialization-backend-provider/target
154-
java -Djava.net.preferIPv4Stack=true -jar dubbo-demo-provider.one-jar.jar > /tmp/java2.log &
159+
java \
160+
-Djava.net.preferIPv4Stack=true \
161+
-jar dubbo-demo-provider.one-jar.jar > /tmp/java2.log &
155162
156163
- name: Build xDS library
157164
if: steps.test_env.outputs.type == 'last'

.github/workflows/cli.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,6 @@ jobs:
6363
./ci/${{ matrix.job_name }}_runner.sh do_install
6464
6565
- name: Linux Script
66-
run: sudo ./ci/${{ matrix.job_name }}_runner.sh script
66+
run: |
67+
sudo chmod +x /home/runner
68+
sudo ./ci/${{ matrix.job_name }}_runner.sh script

.github/workflows/gm-cron.yaml.disabled

+11-4
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
fail-fast: false
1515
matrix:
1616
platform:
17-
- ubuntu-20.04
17+
- ubuntu-latest
1818
os_name:
1919
- linux_openresty_tongsuo
2020
test_dir:
@@ -126,15 +126,22 @@ jobs:
126126
run: |
127127
cur_dir=$(pwd)
128128
sudo apt update
129-
sudo apt install -y maven
129+
sudo apt install -y maven openjdk-8-jdk
130+
sudo update-java-alternatives --set java-1.8.0-openjdk-amd64
131+
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
132+
export PATH=$JAVA_HOME/bin:$PATH
130133
cd t/lib/dubbo-backend
131134
mvn package
132135
cd dubbo-backend-provider/target
133-
java -Djava.net.preferIPv4Stack=true -jar dubbo-demo-provider.one-jar.jar > /tmp/java.log &
136+
java \
137+
-Djava.net.preferIPv4Stack=true \
138+
-jar dubbo-demo-provider.one-jar.jar > /tmp/java.log &
134139
cd $cur_dir/t/lib/dubbo-serialization-backend
135140
mvn package
136141
cd dubbo-serialization-backend-provider/target
137-
java -Djava.net.preferIPv4Stack=true -jar dubbo-demo-provider.one-jar.jar > /tmp/java2.log &
142+
java \
143+
-Djava.net.preferIPv4Stack=true \
144+
-jar dubbo-demo-provider.one-jar.jar > /tmp/java2.log &
138145

139146
- name: Build xDS library
140147
if: steps.test_env.outputs.type == 'last'

.github/workflows/gm.yml.disabled

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
fail-fast: false
2626
matrix:
2727
platform:
28-
- ubuntu-20.04
28+
- ubuntu-latest
2929
os_name:
3030
- linux_openresty_tongsuo
3131
test_dir:

.github/workflows/http3.yml

+11-4
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
fail-fast: false
2626
matrix:
2727
platform:
28-
- ubuntu-20.04
28+
- ubuntu-latest
2929
os_name:
3030
- linux_openresty
3131
events_module:
@@ -144,15 +144,22 @@ jobs:
144144
run: |
145145
cur_dir=$(pwd)
146146
sudo apt update
147-
sudo apt install -y maven
147+
sudo apt install -y maven openjdk-8-jdk
148+
sudo update-java-alternatives --set java-1.8.0-openjdk-amd64
149+
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
150+
export PATH=$JAVA_HOME/bin:$PATH
148151
cd t/lib/dubbo-backend
149152
mvn package
150153
cd dubbo-backend-provider/target
151-
java -Djava.net.preferIPv4Stack=true -jar dubbo-demo-provider.one-jar.jar > /tmp/java.log &
154+
java \
155+
-Djava.net.preferIPv4Stack=true \
156+
-jar dubbo-demo-provider.one-jar.jar > /tmp/java.log &
152157
cd $cur_dir/t/lib/dubbo-serialization-backend
153158
mvn package
154159
cd dubbo-serialization-backend-provider/target
155-
java -Djava.net.preferIPv4Stack=true -jar dubbo-demo-provider.one-jar.jar > /tmp/java2.log &
160+
java \
161+
-Djava.net.preferIPv4Stack=true \
162+
-jar dubbo-demo-provider.one-jar.jar > /tmp/java2.log &
156163
157164
- name: Build xDS library
158165
if: steps.test_env.outputs.type == 'last'

.github/workflows/kubernetes-ci.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
fail-fast: false
2626
matrix:
2727
platform:
28-
- ubuntu-20.04
28+
- ubuntu-latest
2929
os_name:
3030
- linux_openresty
3131

.github/workflows/redhat-ci.yaml

+7-3
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ permissions:
1818
jobs:
1919
test_apisix:
2020
name: run ci on redhat ubi
21-
runs-on: ubuntu-20.04
21+
runs-on: ubuntu-latest
2222
timeout-minutes: 90
2323
strategy:
2424
fail-fast: false
@@ -101,11 +101,15 @@ jobs:
101101
cd t/lib/dubbo-backend
102102
mvn package
103103
cd dubbo-backend-provider/target
104-
java -Djava.net.preferIPv4Stack=true -jar dubbo-demo-provider.one-jar.jar > /tmp/java.log &
104+
java \
105+
-Djava.net.preferIPv4Stack=true \
106+
-jar dubbo-demo-provider.one-jar.jar > /tmp/java.log &
105107
cd $cur_dir/t/lib/dubbo-serialization-backend
106108
mvn package
107109
cd dubbo-serialization-backend-provider/target
108-
java -Djava.net.preferIPv4Stack=true -jar dubbo-demo-provider.one-jar.jar > /tmp/java2.log &
110+
java \
111+
-Djava.net.preferIPv4Stack=true \
112+
-jar dubbo-demo-provider.one-jar.jar > /tmp/java2.log &
109113
110114
- name: Build xDS library
111115
if: steps.test_env.outputs.type == 'last'

.github/workflows/source-install.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
fail-fast: false
2626
matrix:
2727
platform:
28-
- ubuntu-20.04
28+
- ubuntu-latest
2929
os_platform:
3030
- ubuntu
3131
- redhat

.github/workflows/tars-ci.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
fail-fast: false
2626
matrix:
2727
platform:
28-
- ubuntu-20.04
28+
- ubuntu-latest
2929
os_name:
3030
- linux_openresty
3131

.ignore_words

+2
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ nd
77
hel
88
nulll
99
smove
10+
aks
11+
nin

.requirements

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@
1717

1818
APISIX_PACKAGE_NAME=apisix
1919

20-
APISIX_RUNTIME=1.2.1
20+
APISIX_RUNTIME=1.3.0

CHANGELOG.md

+63
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ title: Changelog
2323

2424
## Table of Contents
2525

26+
- [3.12.0](#3120)
2627
- [3.11.0](#3110)
2728
- [3.10.0](#3100)
2829
- [3.9.0](#390)
@@ -78,6 +79,68 @@ title: Changelog
7879
- [0.7.0](#070)
7980
- [0.6.0](#060)
8081

82+
## 3.12.0
83+
84+
### Change
85+
86+
- replace plugin attribute with plugin metadata in `opentelemetry` plugin [#11940](https://github.com/apache/apisix/pull/11940)
87+
- add expiration time for all Prometheus metrics [#11838](https://github.com/apache/apisix/pull/11838)
88+
- allow workflow config without case [#11787](https://github.com/apache/apisix/pull/11787)
89+
- refactor: ai-content-moderation to ai-aws-content-moderation (#12010)
90+
- rectify business logic/code in ai-proxy [#12055](https://github.com/apache/apisix/pull/12055)
91+
92+
### Bugfixes
93+
94+
- Fix: resync etcd when a lower revision is found [#12015](https://github.com/apache/apisix/pull/12015)
95+
- Fix: remove model options' `stream` default value [#12013](https://github.com/apache/apisix/pull/12013)
96+
- Fix: grpc-web response contains two trailer chunks [#11988](https://github.com/apache/apisix/pull/11988)
97+
- Fix: event_id is nil in chaitin-waf [#11651](https://github.com/apache/apisix/pull/11651)
98+
- Fix: race condition problem while update upstream.nodes [#11916](https://github.com/apache/apisix/pull/11916)
99+
- Fix: `upstream_obj.upstream` should not be a string [#11932](https://github.com/apache/apisix/pull/11932)
100+
- Fix: query params in override.endpoint not being sent to LLMs [#11863](https://github.com/apache/apisix/pull/11863)
101+
- Fix: corrupt data in routes() response due to healthchecker data [#11844](https://github.com/apache/apisix/pull/11844)
102+
- Fix: deepcopy should copy same table exactly only once [#11861](https://github.com/apache/apisix/pull/11861)
103+
- Fix: disallow empty key configuration attributes [#11852](https://github.com/apache/apisix/pull/11852)
104+
- Fix: etcd watch restart when receive invalid revision [#11833](https://github.com/apache/apisix/pull/11833)
105+
- Fix: missing parsed_url nil check [#11637](https://github.com/apache/apisix/pull/11637)
106+
- Fix: use `plugin.get` to fetch plugin configured in multi-auth plugin [#11794](https://github.com/apache/apisix/pull/11794)
107+
- Fix: allow special characters in uri params [#11788](https://github.com/apache/apisix/pull/11788)
108+
- Fix: add nil check to conf in body-transformer [#11768](https://github.com/apache/apisix/pull/11768)
109+
- Fix: use max_req_body_bytes field in custom_format [#11771](https://github.com/apache/apisix/pull/11771)
110+
- Fix: health checker can't be released due to health parent being released early [#11760](https://github.com/apache/apisix/pull/11760)
111+
- Fix: use right modifiedIndex for consumer when use credential [#11649](https://github.com/apache/apisix/pull/11649)
112+
113+
### Core
114+
115+
- upgrade openresty version to v1.27.11 [#11936](https://github.com/apache/apisix/pull/11936)
116+
- Support the use of system-provided CA certs in `ssl_trusted_certificate` [#11809](https://github.com/apache/apisix/pull/11809)
117+
- support _meta.pre_function to execute custom logic before execution of each phase [#11793](https://github.com/apache/apisix/pull/11793)
118+
- support anonymous consumer [#11917](https://github.com/apache/apisix/pull/11917)
119+
- accelerate the creation of the consumer cache [#11840](https://github.com/apache/apisix/pull/11840)
120+
- replace 'string.find' with 'core.string.find' [#11886](https://github.com/apache/apisix/pull/11886)
121+
- workflow plugin registration [#11832](https://github.com/apache/apisix/pull/11832)
122+
123+
### Plugins
124+
125+
- refactor ai-proxy and ai-proxy-multi [#12030](https://github.com/apache/apisix/pull/12030)
126+
- support embeddings API [#12062](https://github.com/apache/apisix/pull/12062)
127+
- implement rate limiting based fallback strategy [#12047](https://github.com/apache/apisix/pull/12047)
128+
- ai-rate-limiting plugin [#12037](https://github.com/apache/apisix/pull/12037)
129+
- add `valid_issuers` field in `openid-connect` plugin [#12002](https://github.com/apache/apisix/pull/12002)
130+
- add ai-prompt-guard plugin [#12008](https://github.com/apache/apisix/pull/12008)
131+
- add jwt audience validator [#11987](https://github.com/apache/apisix/pull/11987)
132+
- store JWT in the request context [#11675](https://github.com/apache/apisix/pull/11675)
133+
- support proxying openai compatible LLMs [#12004](https://github.com/apache/apisix/pull/12004)
134+
- add `ai-proxy-multi` plugin [#11986](https://github.com/apache/apisix/pull/11986) [#12030](https://github.com/apache/apisix/pull/12030)
135+
- make rate limiting response header names configurable [#11831](https://github.com/apache/apisix/pull/11831)
136+
- support mulipart content-type in `body-transformer` [#11767](https://github.com/apache/apisix/pull/11767)
137+
- plugins in multi-auth returns error instead of logging it [#11775](https://github.com/apache/apisix/pull/11775)
138+
- support configuring `key_claim_name` [#11772](https://github.com/apache/apisix/pull/11772)
139+
- add Total request per second panel in grafana dashboard [#11692](https://github.com/apache/apisix/pull/11692)
140+
- add ai-rag plugin [#11568](https://github.com/apache/apisix/pull/11568)
141+
- add ai-content-moderation plugin [#11541](https://github.com/apache/apisix/pull/11541)
142+
- use setmetatable to set hidden variables without effecting serialisation [#11770](https://github.com/apache/apisix/pull/11770)
143+
81144
## 3.11.0
82145

83146
### Change

Makefile

+2-5
Original file line numberDiff line numberDiff line change
@@ -374,17 +374,14 @@ install: runtime
374374
$(ENV_INSTALL) -d $(ENV_INST_LUADIR)/apisix/plugins/ai-proxy
375375
$(ENV_INSTALL) apisix/plugins/ai-proxy/*.lua $(ENV_INST_LUADIR)/apisix/plugins/ai-proxy
376376

377-
$(ENV_INSTALL) -d $(ENV_INST_LUADIR)/apisix/plugins/ai-proxy/drivers
378-
$(ENV_INSTALL) apisix/plugins/ai-proxy/drivers/*.lua $(ENV_INST_LUADIR)/apisix/plugins/ai-proxy/drivers
377+
$(ENV_INSTALL) -d $(ENV_INST_LUADIR)/apisix/plugins/ai-drivers
378+
$(ENV_INSTALL) apisix/plugins/ai-drivers/*.lua $(ENV_INST_LUADIR)/apisix/plugins/ai-drivers
379379

380380
$(ENV_INSTALL) -d $(ENV_INST_LUADIR)/apisix/plugins/ai-rag/embeddings
381381
$(ENV_INSTALL) apisix/plugins/ai-rag/embeddings/*.lua $(ENV_INST_LUADIR)/apisix/plugins/ai-rag/embeddings
382382
$(ENV_INSTALL) -d $(ENV_INST_LUADIR)/apisix/plugins/ai-rag/vector-search
383383
$(ENV_INSTALL) apisix/plugins/ai-rag/vector-search/*.lua $(ENV_INST_LUADIR)/apisix/plugins/ai-rag/vector-search
384384

385-
# ai-content-moderation plugin
386-
$(ENV_INSTALL) -d $(ENV_INST_LUADIR)/apisix/plugins/ai
387-
$(ENV_INSTALL) apisix/plugins/ai/*.lua $(ENV_INST_LUADIR)/apisix/plugins/ai
388385

389386
$(ENV_INSTALL) bin/apisix $(ENV_INST_BINDIR)/apisix
390387

NOTICE

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Apache APISIX
2-
Copyright 2019-2024 The Apache Software Foundation
2+
Copyright 2019-2025 The Apache Software Foundation
33

44
This product includes software developed at
55
The Apache Software Foundation (http://www.apache.org/).

README.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
#
1818
-->
1919

20-
# Apache APISIX API Gateway
20+
# Apache APISIX API Gateway | AI Gateway
2121

2222
<img src="./logos/apisix-white-bg.jpg" alt="APISIX logo" height="150px" align="right" />
2323

@@ -32,7 +32,9 @@
3232

3333
APISIX API Gateway provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more.
3434

35-
You can use **APISIX API Gateway** to handle traditional north-south traffic,
35+
APISIX can serve as an **AI Gateway** through its flexible plugin system, providing AI proxying, load balancing for LLMs, retries and fallbacks, token-based rate limiting, and robust security to ensure the efficiency and reliability of AI agents.
36+
37+
You can use APISIX API Gateway to handle traditional north-south traffic,
3638
as well as east-west traffic between services.
3739
It can also be used as a [k8s ingress controller](https://github.com/apache/apisix-ingress-controller).
3840

0 commit comments

Comments
 (0)