提交 7ea0ac2a 编写于 作者: J Jason Song

Merge pull request #149 from yiming187/build_env

Support build parameters by env
...@@ -25,7 +25,4 @@ target ...@@ -25,7 +25,4 @@ target
# git # git
*.orig *.orig
dev application-dev.properties
fat \ No newline at end of file
uat
prd
spring: spring:
application: application:
name: apollo-adminservice name: apollo-adminservice
profiles:
active: ctrip
server: server:
port: ${port:8090} port: ${port:8090}
......
...@@ -36,4 +36,12 @@ ...@@ -36,4 +36,12 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project> </project>
...@@ -10,7 +10,11 @@ public class TitanCondition implements Condition { ...@@ -10,7 +10,11 @@ public class TitanCondition implements Condition {
@Override @Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
if (!StringUtils.isEmpty(context.getEnvironment().getProperty("titan.url"))) { if (!StringUtils.isEmpty(context.getEnvironment().getProperty("fat.titan.url"))) {
return true;
} else if (!StringUtils.isEmpty(context.getEnvironment().getProperty("uat.titan.url"))) {
return true;
} else if (!StringUtils.isEmpty(context.getEnvironment().getProperty("pro.titan.url"))) {
return true; return true;
} }
return false; return false;
......
...@@ -3,28 +3,61 @@ package com.ctrip.apollo.biz.datasource; ...@@ -3,28 +3,61 @@ package com.ctrip.apollo.biz.datasource;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ctrip.apollo.core.enums.Env;
import com.ctrip.apollo.core.enums.EnvUtils;
import com.ctrip.framework.foundation.Foundation;
@Component @Component
public class TitanSettings { public class TitanSettings {
@Value("${titan.url:}") @Value("${fat.titan.url:}")
private String titanUrl; private String fatTitanUrl;
@Value("${titan.dbname:}") @Value("${uat.titan.url:}")
private String titanDbname; private String uatTitanUrl;
public String getTitanUrl() { @Value("${pro.titan.url:}")
return titanUrl; private String proTitanUrl;
}
@Value("${fat.titan.dbname:}")
private String fatTitanDbname;
public void setTitanUrl(String titanUrl) { @Value("${uat.titan.dbname:}")
this.titanUrl = titanUrl; private String uatTitanDbname;
@Value("${pro.titan.dbname:}")
private String proTitanDbname;
public String getTitanUrl() {
Env env = EnvUtils.transformEnv(Foundation.server().getEnvType());
switch (env) {
case FAT:
case FWS:
return fatTitanUrl;
case UAT:
return uatTitanUrl;
case TOOLS:
case PRO:
return proTitanUrl;
default:
return "";
}
} }
public String getTitanDbname() { public String getTitanDbname() {
return titanDbname; Env env = EnvUtils.transformEnv(Foundation.server().getEnvType());
switch (env) {
case FAT:
case FWS:
return fatTitanDbname;
case UAT:
return uatTitanDbname;
case TOOLS:
case PRO:
return proTitanDbname;
default:
return "";
}
} }
public void setTitanDbname(String titanDbname) {
this.titanDbname = titanDbname;
}
} }
# Titan Datasource (Ctrip only)
fat.titan.url=${fat_titan_url}
fat.titan.dbname=${fat_titan_dbname}
uat.titan.url=${uat_titan_url}
uat.titan.dbname=${uat_titan_dbname}
pro.titan.url=${pro_titan_url}
pro.titan.dbname=${pro_titan_dbname}
# DataSource
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=true
spring.datasource.validationQuery=SELECT 1
# Naming strategy
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
spring.jpa.hibernate.globally_quoted_identifiers=true
spring.jpa.properties.hibernate.globally_quoted_identifiers=true
spring.jpa.properties.hibernate.show_sql=true
package com.ctrip.apollo.util; package com.ctrip.apollo.util;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import com.ctrip.apollo.core.ConfigConsts; import com.ctrip.apollo.core.ConfigConsts;
import com.ctrip.apollo.core.MetaDomainConsts; import com.ctrip.apollo.core.MetaDomainConsts;
import com.ctrip.apollo.core.enums.Env; import com.ctrip.apollo.core.enums.Env;
import com.ctrip.apollo.core.enums.EnvUtils;
import com.ctrip.framework.foundation.Foundation; import com.ctrip.framework.foundation.Foundation;
import org.unidal.lookup.annotation.Named; import org.unidal.lookup.annotation.Named;
...@@ -60,34 +60,11 @@ public class ConfigUtil { ...@@ -60,34 +60,11 @@ public class ConfigUtil {
* @throws IllegalStateException if env is set * @throws IllegalStateException if env is set
*/ */
public Env getApolloEnv() { public Env getApolloEnv() {
Env env = transformEnv(Foundation.server().getEnvType()); Env env = EnvUtils.transformEnv(Foundation.server().getEnvType());
Preconditions.checkState(env != null, "env is not set"); Preconditions.checkState(env != null, "env is not set");
return env; return env;
} }
private Env transformEnv(String envName) {
if (Strings.isNullOrEmpty(envName)) {
return null;
}
switch (envName.toUpperCase()) {
case "LPT":
return Env.LPT;
case "FAT":
case "FWS":
return Env.FAT;
case "UAT":
return Env.UAT;
case "PRO":
return Env.PRO;
case "DEV":
return Env.DEV;
case "LOCAL":
return Env.LOCAL;
default:
return null;
}
}
public String getMetaServerDomainName() { public String getMetaServerDomainName() {
return MetaDomainConsts.getDomain(getApolloEnv()); return MetaDomainConsts.getDomain(getApolloEnv());
} }
......
spring: spring:
application: application:
name: apollo-configservice name: apollo-configservice
profiles:
active: ctrip
server: server:
port: ${port:8080} port: ${port:8080}
......
...@@ -7,24 +7,38 @@ import java.util.Properties; ...@@ -7,24 +7,38 @@ import java.util.Properties;
import com.ctrip.apollo.core.enums.Env; import com.ctrip.apollo.core.enums.Env;
import com.ctrip.apollo.core.utils.ResourceUtils; import com.ctrip.apollo.core.utils.ResourceUtils;
/**
* The meta domain will load the meta server from System environment first, if not exist, will load
* from apollo-env.properties. If neither exists, will load the default meta url.
*
* Currently, apollo supports local/dev/fat/uat/lpt/pro environments.
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public class MetaDomainConsts { public class MetaDomainConsts {
private static Map<Env, String> domains = new HashMap<>(); private static Map<Env, Object> domains = new HashMap<>();
public static final String DEFAULT_META_URL = "http://localhost:8080";
static { static {
Properties prop = new Properties(); Properties prop = new Properties();
prop = ResourceUtils.readConfigFile("apollo-env.properties", prop); prop = ResourceUtils.readConfigFile("apollo-env.properties", prop);
domains.put(Env.LOCAL, prop.getProperty("local.meta", "http://localhost:8080")); Map env = System.getProperties();
domains.put(Env.DEV, prop.getProperty("dev.meta")); domains.put(Env.LOCAL,
domains.put(Env.FAT, prop.getProperty("fat.meta")); env.getOrDefault("local_meta", prop.getProperty("local.meta", DEFAULT_META_URL)));
domains.put(Env.FWS, prop.getProperty("fws.meta")); domains.put(Env.DEV,
domains.put(Env.UAT, prop.getProperty("uat.meta")); env.getOrDefault("dev_meta", prop.getProperty("dev.meta", DEFAULT_META_URL)));
domains.put(Env.LPT, prop.getProperty("lpt.meta")); domains.put(Env.FAT,
domains.put(Env.TOOLS, prop.getProperty("tools.meta")); env.getOrDefault("fat_meta", prop.getProperty("fat.meta", DEFAULT_META_URL)));
domains.put(Env.PRO, prop.getProperty("pro.meta")); domains.put(Env.UAT,
env.getOrDefault("uat_meta", prop.getProperty("uat.meta", DEFAULT_META_URL)));
domains.put(Env.LPT,
env.getOrDefault("lpt_meta", prop.getProperty("lpt.meta", DEFAULT_META_URL)));
domains.put(Env.PRO,
env.getOrDefault("pro_meta", prop.getProperty("pro.meta", DEFAULT_META_URL)));
} }
public static String getDomain(Env env) { public static String getDomain(Env env) {
return domains.get(env); return String.valueOf(domains.get(env));
} }
} }
package com.ctrip.apollo.core.enums;
import com.ctrip.apollo.core.utils.StringUtils;
public final class EnvUtils {
public static Env transformEnv(String envName) {
if (StringUtils.isBlank(envName)) {
return null;
}
switch (envName.toUpperCase()) {
case "LPT":
return Env.LPT;
case "FAT":
case "FWS":
return Env.FAT;
case "UAT":
return Env.UAT;
case "PRO":
return Env.PRO;
case "DEV":
return Env.DEV;
case "LOCAL":
return Env.LOCAL;
default:
return null;
}
}
}
local.meta=http://localhost:8080 local.meta=http://localhost:8080
dev.meta=${dev} dev.meta=${dev_meta}
fat.meta=${fat} fat.meta=${fat_meta}
uat.meta=${uat} uat.meta=${uat_meta}
lpt.meta=${lpt} pro.meta=${pro_meta}
pro.meta=${pro}
...@@ -11,6 +11,6 @@ public class MetaDomainTest { ...@@ -11,6 +11,6 @@ public class MetaDomainTest {
public void testGetMetaDomain() { public void testGetMetaDomain() {
Assert.assertEquals("http://localhost:8080", MetaDomainConsts.getDomain(Env.LOCAL)); Assert.assertEquals("http://localhost:8080", MetaDomainConsts.getDomain(Env.LOCAL));
Assert.assertEquals("http://dev:8080", MetaDomainConsts.getDomain(Env.DEV)); Assert.assertEquals("http://dev:8080", MetaDomainConsts.getDomain(Env.DEV));
Assert.assertNull(MetaDomainConsts.getDomain(Env.PRO)); Assert.assertEquals(MetaDomainConsts.DEFAULT_META_URL, MetaDomainConsts.getDomain(Env.PRO));
} }
} }
...@@ -4,7 +4,9 @@ server: ...@@ -4,7 +4,9 @@ server:
spring: spring:
application: application:
name: apollo-portal name: apollo-portal
profiles:
active: ctrip
logging: logging:
level: level:
org.springframework.cloud: 'DEBUG' org.springframework.cloud: 'DEBUG'
......
...@@ -124,12 +124,12 @@ ...@@ -124,12 +124,12 @@
<dependency> <dependency>
<groupId>com.ctrip.framework</groupId> <groupId>com.ctrip.framework</groupId>
<artifactId>framework-foundation</artifactId> <artifactId>framework-foundation</artifactId>
<version>1.1.4</version> <version>1.1.5</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.dianping.cat</groupId> <groupId>com.dianping.cat</groupId>
<artifactId>cat-client</artifactId> <artifactId>cat-client</artifactId>
<version>1.4.6</version> <version>1.5.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.ctrip.platform</groupId> <groupId>com.ctrip.platform</groupId>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册