Highlights
Java 17 Support
Apollo now supports Java Runtime Environment 8, 11, and 17 for both clients and servers.
Public Namespaces List View
A public namespaces list view is added to the apollo homepage, users could now view and search public namespaces.
Grayscale Label Support
Grayscale rules now support matching with labels for scenarios where IP is not fixed, e.g. Kubernetes.
For more information on how to use this feature, please refer apollo user guide.
Enhanced Config Export/Import
The batch config export/import feature is enhanced.
The export/import feature is also enabled for each namespace.
Unique Constraint Index
Previously, Apollo doesn't have unique constraint indices due to the soft delete design. However, there might be problems in concurrent situations. With the new DeletedAt
columns, unique indices are added for most of the tables. There are some manual steps for existing users to upgrade.
Breaking Changes
As was discussed in #3896, apollo-client drops java 1.7 support since the 2.0.0 release. The minimum Java runtime environment is 1.8(for both client and server).
What's Changed
Features
- switch apollo.config-service log from warning to info level by @lonre in #3884
- Make Access Key Timestamp check configurable by @nisiyong in #3908
- refactor: let open api more easier to use and development by @Anilople in #3943
- feat(scripts): use bash to call openapi by @Anilople in #3980
- support search by item by @lepdou in #3977
- feature: implement password policies to avoid weak passwords by @WillardHu in #4008
- public namespace basic function by @youabcd in #3850
- Extend the gray release capability to support dimensions other than IP by @zcy1010 in #4013
- bump to 2.0.0 and drop java 1.7 support by @nobodyiam in #4015
- feat: add a shortcut to scroll to the top in the dashboard by @NICEXAI in #4045
- change scrollbar css by @zeemood in #3925
- support java 17 by @nobodyiam in #4060
- optimize navbar style by @lepdou in #4073
- add language.png icon by @lepdou in #4074
- support export import config by env by @lepdou in #3947
- support only show difference keys when compare namespace by @lepdou in #4165
- add zookeeper service discovery support(#3557) by @CalebZYC in #4119
- bump guava version to 31.0.1 by @shoothzj in #4182
- Bump client springboot version by @shoothzj in #4189
- The release history of namespaces that are not properties will also show comments and release times by @klboke in #4198
- Allow disable apollo client cache by @shoothzj in #4199
- feature: isCommonlyUsed password check not hardcoded #4018 by @WillardHu in #4207
- canonical zh-cn text by @lepdou in #4214
- optimize create namespace page by @lepdou in #4213
- Add Ordered interface to ProviderManager SPI by @darcydai in #4218
- Bump xstream from 1.4.18 to 1.4.19 by @dependabot in #4223
- Using commons-lang3 to replace commons-lang by @ruanwenjun in #4225
- optimize import/export config by @lepdou in #4231
- Configure publish and rollback modal boxes to add scrollbars by @klboke in #4251
- add custom define discovery by @gy09535 in #4266
- Refactor the soft delete design by @nisiyong in #3866
- upgrade spring boot to 2.6.6 and spring cloud to 2021.0.1 by @nobodyiam in #4295
- upgrade mysql-connector-java to 8.0.28 by @Anilople #4308
Bug fixes
- Fix issue that the $ symbol is not used when reading shell variables by @ReganHe93 in #3890
- Fix issue: ingress syntax by @lijiansgit in #3933
- fix helm scripts BUG by @w-a-n-g-s-h-u-n in #4054
- Catch LinkageError for ClassLoaderUtil.isClassPresent in case class is present but is failed to load by @nobodyiam in #4097
- fix gray publish refresh item status(#4039) by @CalebZYC in #4128
- Fix the issue that property placeholder doesn't work for dubbo reference beans by @lonre in #4175
- Fix the NPE occurred when using EnableApolloConfig with Spring 3.1.1 by @nobodyiam in #4180
- fix the json number display issue when it's longer than 16 by @CalebZYC in #4183
- fix update user password failure bug by @lepdou in #4212
- Fix bug: associated namespace display incorrect in text view by @darcydai in #4219
- fix import config bug by @lepdou in #4262
- fix the potential data inconsistency issue by @nobodyiam in #4256
- use item.isDeleted to check whether the item is deleted by @nobodyiam in #4279
- Fix the apollo portal start failed issue by @nobodyiam in #4298
Misc
- remove ctrip profile by @JaredTan95 in #3920
- Remove spring dependencies from internal code by @klboke in #3937
- remove ctrip profile dependency. by @Accelerator96 in #3951
- fix gpg signing issues when deploying to maven repository with github action by @nobodyiam in #3950
- Fixed some code smells in apollo-portal module by @WillardHu in #3968
- clean ctrip profile by @JaredTan95 in #3971
- Fixed some code smells in apollo-portal module #2 by @WillardHu in #3974
- fix NullPointerException hazard in StringUtils.join(..) method by @WillardHu in #3983
- Replace String.format() with newly created class OpenApiPathBuilder by @WillardHu in #3982
- Make the constructor of AbstractApolloHttpException implementation class to support string template by @WillardHu in #3999
- Removed useless hardcoded Strings in
EnvUtils
. by @DiegoKrupitza in #4007 - chore: Simplified the
Env
class in apollo-portal that links toEnv
enum in apollo-core by @DiegoKrupitza in #4011 - Chore: Future-proofed
ConfigFileFormat
by @DiegoKrupitza in #4030 ConfigFileFormat#Properties
are now fully compatible with themselves by @DiegoKrupitza in #4033- Fix flaky test testGetPropertyNames. by @yyfMichaelYan in #4082
- Fix flaky test testAssembleQueryConfigUrl. by @yyfMichaelYan in #4083
- Update RelativeDateFormat.java by @xuxiawei in #4111
- chore: change 'ctripcorp' to 'apolloconfig' in .yaml files by @void1104 in #4112
- Flaky test fields iteration order by @yyfMichaelYan in #4095
- test(apollo-core): PropertiesUtilTest by @youyulan in #4113
- optimization omits unnecessary time conversion by @xuxiawei in #4118
- Split helm chart into another repo by @JaredTan95 in #4125
- refactor: SpringValueProcessor extract duplicate code by @mghio in #4137
- build: ctripcorp -> apolloconfig in .github/workflows/cla.yml by @Fool-coder in #4150
- Add unit tests for Utils by @joshknopp in #4193
- Change Copy Right year to 2022 by @shoothzj in #4202
- Adding JUnit. Fixes #3874 by @ayush0407 in #4271
- Test coverage by @ayush0407 in #4280
- Test coverage by @ayush0407 in #4287
Installation
Please refer Distributed Deployment Guide.
How to upgrade from v1.9.x to v2.0.0
Important Note: 2.0.0 release adds unique indices for most of the tables by adding DeletedAt
columns, so there are some manual steps to do:
- Check whether there are duplicate dirty data in your database(optional)
- Please refer the
Scripts to check whether there is any duplicate data
section in PR #3866
- Please refer the
- Apply the first part of the schema changes to ApolloConfigDB and ApolloPortalDB
- Apply apolloconfigdb-v190-v200.sql to ApolloConfigDB and apolloportaldb-v190-v200.sql to ApolloPortalDB
- Flyway users could run the following maven commands instead
mvn -N -Pconfigdb -Dflyway.target=2.0.0 flyway:migrate
mvn -N -Pportaldb -Dflyway.target=2.0.0 flyway:migrate
- Upgrade apollo-configservice
- Upgrade apollo-adminservice
- Upgrade apollo-portal
- Add unique indices to ApolloConfigDB and ApolloPortalDB
- Apply apolloconfigdb-v190-v200-after.sql to ApolloConfigDB and apolloportaldb-v190-v200-after.sql to ApolloPortalDB
- Flyway users could run the following maven commands instead
mvn -N -Pconfigdb flyway:migrate
mvn -N -Pportaldb flyway:migrate
- In case you want to rollback the unique indices, you could refer the
Scripts to rollback the unique indices
section in PR #3866
New Contributors
- @ReganHe93 made their first contribution in #3890
- @lijiansgit made their first contribution in #3933
- @WillardHu made their first contribution in #3968
- @czd890 made their first contribution in #3887
- @DiegoKrupitza made their first contribution in #4007
- @pengweiqhca made their first contribution in #4002
- @youabcd made their first contribution in #3850
- @zcy1010 made their first contribution in #4013
- @NICEXAI made their first contribution in #4027
- @zeemood made their first contribution in #3925
- @w-a-n-g-s-h-u-n made their first contribution in #4054
- @sy-records made their first contribution in #4061
- @yyfMichaelYan made their first contribution in #4082
- @xuxiawei made their first contribution in #4111
- @void1104 made their first contribution in #4112
- @youyulan made their first contribution in #4113
- @mghio made their first contribution in #4137
- @Fool-coder made their first contribution in #4150
- @shoothzj made their first contribution in #4182
- @joshknopp made their first contribution in #4193
- @darcydai made their first contribution in #4219
- @ruanwenjun made their first contribution in #4225
- @gy09535 made their first contribution in #4266
- @ayush0407 made their first contribution in #4271
- @dazuimao1990 made their first contribution in #4283