-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild-init-oracle.sh
188 lines (183 loc) · 12 KB
/
build-init-oracle.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
#!/bin/sh
#=====================================================================================================
# 以后各个客户化产品的发布过程流程大致如下:
# 1、在个性化定制项目https://github.com/tongpi/carbon-ui-custom-is.git上创建新的分支:<项目代号>作为分支名称,然后继续个性化修改,push到github
# 2、工具项目需要规划好域名、数据库连接等参数
# 3、在docker镜像个性化定制项目https://github.com/tongpi/gds-wso2-docker-is.git上创建同样的分支,然后根据上一步规划修改build-init-default.sh和build-init-default.sh中的配置参数
# 4、在Jenkins上创建一个gds-wso2-docker-is-【分支名】-oracle的任务,构建该任务
# 5、测试
# 6、下载第三步任务的构建成品*.tar刻盘交项目部进行现场部署
#=====================================================================================================
#
#修改以下环境变量适合你的环境,其中:
# JAVA_HOME JDK的安装目录,如:/usr/java/jdk1.8.0_144。要是为了找到keytool命令
# PROCUCT_NAME IS身份管理服务器的产品名称。用来生成镜像名称和可独立部署的安装包的文件名
# PROCUCT_VERSION IS身份管理服务器的版本。用来生成镜像版本和可独立部署的安装包的文件名
# IS_HOST_NAME IS身份管理服务器的机器的主机域名 如:is.cd.mtn 用来修改conf/carbon.xml
# IS_HOST_PORT IS身份管理服务器的机器的主服务端口 用来生成提示信息
# IS_SERVER_DISPLAY_NAME IS身份管理服务器的显示名称,在管理控制台的首页上显示。如:XXXXX学院统一身份管理服务器. 用来修改conf/carbon.xml
#
# 以下用来修改<PRODUCT_HOME>/repository/conf/datasources下的数据源配置文件master-datasources.xml等
#
# DB_HOST IS身份管理服务器的主数据库Oracle的主机地址,如:192.168.3.49
# DB_PORT IS身份管理服务器的主数据库Oracle的端口,如:1521
# DB_SID IS身份管理服务器的主数据库Oracle的SID,如:kyy
# DB_USERNAME IS身份管理服务器的主数据库Oracle的用户名
# DB_PASSWORD IS身份管理服务器的主数据库Oracle的密码
#
# CARBON_UI_CUSTOM_IS_BRANCH IS管理控制台个性化定制项目的分支名称,缺省是master
#======================================================================================================
export JAVA_HOME=/opt/java/jdk1.8.0_144
PROCUCT_NAME=wso2is
PROCUCT_VERSION=5.7.0
IS_HOST_NAME=${IS_HOST_NAME:-is.od.mtn}
IS_HOST_PORT=${IS_HOST_PORT:-9543}
IS_SERVER_DISPLAY_NAME=${IS_SERVER_DISPLAY_NAME:-"统一身份服务器(Oracle)"}
DB_HOST=${DB_HOST:-192.168.3.49}
DB_PORT=${DB_PORT:-1521}
DB_SID=${DB_SID:-kyy}
DB_USERNAME=${DB_USERNAME:-wch_is}
DB_PASSWORD=${DB_PASSWORD:-a1b2c3}
CARBON_UI_CUSTOM_IS_BRANCH=${CARBON_UI_CUSTOM_IS_BRANCH:-master}
PROCUCT_RELEASE_ZIP_FILE_DOWNLOAD_COMMAND="wget -N -q --http-user=admin --http-password=a1b2c3d4 --auth-no-challenge http://192.168.3.69:9080/job/product-is/lastSuccessfulBuild/artifact/modules/distribution/target/wso2is-5.7.0.zip"
#-------------------------------------------------------------------------------------------
echo "===================环境变量==================================="
echo JAVA_HOME=$JAVA_HOME
echo PROCUCT_NAME=$PROCUCT_NAME
echo PROCUCT_VERSION=$PROCUCT_VERSION
echo IS_HOST_NAME=$IS_HOST_NAME
echo IS_HOST_PORT=$IS_HOST_PORT
echo IS_SERVER_DISPLAY_NAME=$IS_SERVER_DISPLAY_NAME
echo CARBON_UI_CUSTOM_IS_BRANCH=$CARBON_UI_CUSTOM_IS_BRANCH
echo DB_HOST=$DB_HOST
echo DB_PORT=$DB_PORT
echo DB_SID=$DB_SID
echo DB_USERNAME=$DB_USERNAME
echo DB_PASSWORD=******
echo "注意:执行脚本之前可以提前设置好以上环境变量"
echo "============================================================"
#-------------------------------------------------------------------------------------------
CUR_DIR=$PWD
if [ ! -d "$PWD/docker-is" ]; then
git clone https://github.com/tongpi/docker-is.git
fi
IS_HOME=$PWD/docker-is/dockerfiles/ubuntu/is/files/$PROCUCT_NAME-$PROCUCT_VERSION
echo "IS_HOME=$IS_HOME"
PROCUCT_RELEASE_ZIP_FILE=$PROCUCT_NAME-$PROCUCT_VERSION.zip
rm $PROCUCT_RELEASE_ZIP_FILE
echo "开始从产品仓库下载$PROCUCT_RELEASE_ZIP_FILE到本地磁盘……"
$PROCUCT_RELEASE_ZIP_FILE_DOWNLOAD_COMMAND
if [ ! -f "$PROCUCT_RELEASE_ZIP_FILE" ]; then
# wget $PROCUCT_RELEASE_ZIP_FILE
echo "========================================================================================================================="
echo "用法:"
echo "请首先复制从IS源代码库( https://github.com/tongpi/product-is.git)构建出来的$PROCUCT_NAME-$PROCUCT_VERSION.zip到$0脚本所在目录下"
echo "========================================================================================================================="
exit 1
fi
rm -Rf $IS_HOME
# 自动安装zip包
if type unzip >/dev/null 2>&1; then
echo "zip软件包已经安装"
else
echo "正在安装zip软件包……"
sudo apt-get install zip --assume-yes > /dev/null
fi
#-------------------------------------------------------------------------------------------
unzip $PROCUCT_RELEASE_ZIP_FILE -d $PWD/docker-is/dockerfiles/ubuntu/is/files > /dev/null
echo "已解压缩PROCUCT_RELEASE_ZIP_FILE到$PWD/docker-is/dockerfiles/ubuntu/is/files目录下"
# 这一步是给docker build准备的
cp ./jdbc-drivers/*.jar $PWD/docker-is/dockerfiles/ubuntu/is/files/
# 这一步仅仅为了单独部署而准备,对build docker image来说不是必需的
cp ./jdbc-drivers/*.jar $IS_HOME/repository/components/lib/
echo "已复制数据库jdbc驱动到$PWD/docker-is/dockerfiles/ubuntu/is/files目录下"
# 给IS部署cas构件 添加org.wso2.carbon.identity.sso.cas-2.0.X.jar文件到$IS_HOME/repository/components/dropins目录下即可
cp ./connectors/org.wso2.carbon.extension.identity.sso.cas-2.0.2.jar $IS_HOME/repository/components/dropins/
echo "已复制org.wso2.carbon.extension.identity.sso.cas-2.0.2.jar到$IS_HOME/repository/components/dropins/目录下"
# "-------------------------------------------------------------------------------------------"
echo "开始进行IS管理控制台个性化定制组件的安装工作"
if [ ! -d "$PWD/carbon-ui-custom-is" ]; then
git clone -b $CARBON_UI_CUSTOM_IS_BRANCH https://github.com/tongpi/carbon-ui-custom-is.git
else
rm -Rf $PWD/carbon-ui-custom-is
git clone -b $CARBON_UI_CUSTOM_IS_BRANCH https://github.com/tongpi/carbon-ui-custom-is.git
fi
cd carbon-ui-custom-is
mvn clean install > /dev/null
cp modules/org.wso2.carbon.ui_fragment/target/org.wso2.carbon.ui_4.4.35_fragment-1.0.0.jar ../docker-is/dockerfiles/ubuntu/is/files/$PROCUCT_NAME-$PROCUCT_VERSION/repository/components/dropins/
cp modules/org.wso2.carbon.ui_patch/target/org.wso2.carbon.ui_4.4.35_patch-1.0.0.jar ../docker-is/dockerfiles/ubuntu/is/files/$PROCUCT_NAME-$PROCUCT_VERSION/repository/components/dropins/
#添加定制cas登录页的样式
UI_CUR_DIR=$PWD
cd ../docker-is/dockerfiles/ubuntu/is/files/$PROCUCT_NAME-$PROCUCT_VERSION/repository/deployment/server/webapps
unzip -oq authenticationendpoint.war -d authenticationendpoint && rm -rf authenticationendpoint.war
cp -r $UI_CUR_DIR/assets/customCasStyle/* authenticationendpoint
cd authenticationendpoint && zip -r ../authenticationendpoint.war . && cd .. && rm -rf authenticationendpoint
cd $CUR_DIR
# "-------------------------------------------------------------------------------------------"
# 自动配置服务器相关证书以及文件编码转换等工作
chmod +x ./scripts/*.sh
./scripts/is_auto_config.sh $IS_HOME $IS_HOST_NAME $IS_SERVER_DISPLAY_NAME
# 自动配置服务器主数据库配置为oracle等工作
./scripts/is_auto_config_oracle.sh $IS_HOME $DB_HOST $DB_PORT $DB_SID $DB_USERNAME $DB_PASSWORD
# echo "尝试删除旧的IS本地docker 镜像......"
# echo docker rmi $CARBON_UI_CUSTOM_IS_BRANCH/$PROCUCT_NAME:o$PROCUCT_VERSION
# sudo docker rmi $CARBON_UI_CUSTOM_IS_BRANCH/$PROCUCT_NAME:o$PROCUCT_VERSION > /dev/null
# "-------------------------------------------------------------------------------------------"
echo "检查容器是否存在,若存在,就先删除"
DOCKER_CONTAINER_NAME=$IS_HOST_NAME
if [ ! "$(docker ps -q -f name=$DOCKER_CONTAINER_NAME)" ]; then
if [ "$(docker ps -aq -f status=exited -f name=$DOCKER_CONTAINER_NAME)" ]; then
sudo docker rm $DOCKER_CONTAINER_NAME
fi
else
sudo docker stop $DOCKER_CONTAINER_NAME
sudo docker rm $DOCKER_CONTAINER_NAME
fi
echo "开始构建新的IS的docker镜像......"
echo "-------------------------------------------------------------------------------------------"
cd $PWD/docker-is/dockerfiles/ubuntu/is
echo "docker build -t $CARBON_UI_CUSTOM_IS_BRANCH/$PROCUCT_NAME:o$PROCUCT_VERSION ."
sudo docker build -t $CARBON_UI_CUSTOM_IS_BRANCH/$PROCUCT_NAME:o$PROCUCT_VERSION .
cd $CUR_DIR
#生成能够在单独部署的wso2is版本到$PWD/target/目录下
echo "开始构建可单独部署的wso2is版本......"
# "-------------------------------------------------------------------------------------------"
if [ ! -d "$PWD/target" ]; then
mkdir target
else
rm -f $PWD/target/$PROCUCT_NAME-$PROCUCT_VERSION-oracle.zip
fi
cd $PWD/docker-is/dockerfiles/ubuntu/is/files
echo "导出is单独部署的zip包到$CUR_DIR/target/目录下"
zip -r $CUR_DIR/target/$PROCUCT_NAME-$PROCUCT_VERSION-oracle.zip ./$PROCUCT_NAME-$PROCUCT_VERSION > /dev/null
cd $CUR_DIR
# "-------------------------------------------------------------------------------------------"
#导出镜像文件以便迁移到其它docker环境中
echo "导出is单独部署的镜像包到$PWD/target/目录下"
sudo docker save -o $PWD/target/$PROCUCT_NAME-o$PROCUCT_VERSION.tar $CARBON_UI_CUSTOM_IS_BRANCH/$PROCUCT_NAME:o$PROCUCT_VERSION
echo "重新创建容器$DOCKER_CONTAINER_NAME"
sudo docker run -d --hostname $IS_HOST_NAME --name $DOCKER_CONTAINER_NAME --restart=always -p $IS_HOST_PORT:9443 $CARBON_UI_CUSTOM_IS_BRANCH/$PROCUCT_NAME:o$PROCUCT_VERSION
#处理dashboad不能访问的问题,原因是dashboard的安全机制不能解析$IS_HOST_NAME
#sleep 60s
#sudo docker exec -u 0 $DOCKER_CONTAINER_NAME -bin/bash -c "echo 127.0.0.1 $IS_HOST_NAME >> /etc/hosts"
# "-------------------------------------------------------------------------------------------"
echo " ################################################################"
echo
echo " 访问IS的管理控制台:https://$IS_HOST_NAME:$IS_HOST_PORT/carbon"
echo " 注意:你可能需要给你的hosts中添加添加如下的主机域名解析:"
echo " 192.168.3.69 $IS_HOST_NAME"
echo
echo " ###############################################################"
echo "========================================================================================================================="
echo "提示 1:"
echo "IS的本地镜像版本已生成 TAG为:$CARBON_UI_CUSTOM_IS_BRANCH/$PROCUCT_NAME:o$PROCUCT_VERSION"
echo "你可以复制$PWD/target/$PROCUCT_NAME-o$PROCUCT_VERSION.tar文件到光盘以便迁移到其它docker环境中"
echo "你也可以直接在本机执行如下的docker命令来启动IS:"
echo " docker run -it -p $IS_HOST_PORT:9443 $CARBON_UI_CUSTOM_IS_BRANCH/$PROCUCT_NAME:o$PROCUCT_VERSION"
echo " docker run -d -p $IS_HOST_PORT:9443 --name $IS_HOST_NAME --restart=always $CARBON_UI_CUSTOM_IS_BRANCH/$PROCUCT_NAME:o$PROCUCT_VERSION"
echo "提示 2:"
echo "已生成能够在单独部署的wso2is版本到$PWD/target/目录下的$PROCUCT_NAME-$PROCUCT_VERSION-oracle.zip文件中"
echo "你可以直接复制该文件来独立安装已按产品化要求配置好的IS运行版"
echoecho "提示 3:"
echo "IS服务一旦启动,你可以通过类似下面的地址访问IS的管理控制台:"
echo " https://$IS_HOST_NAME:$IS_HOST_PORT/carbon"