公司是港企,项目都部署在OpenShift上统一管理,因为运行环境为香港网络(外网),配置、中间件等大陆无法直接访问联通。因此在大陆开发时,测试是个很大的问题。为了避免往Git上频繁提交未确定可用的版本,选择用利用OpenShift的ImageStream来部署和测试未完成的临时版本。
①首先需要安装OpenShift的命令行客户端oc
直接下载解压oc.exe
,配置好环境变量就行。
②登录
先登上OpenShift获取登录指令:
他会让你再次登录,登录后直接点击显示token
复制这个oc指令,回到oc客户端执行登录
登录完就可以关掉客户端了。
③在maven中配置OpenShift
在pom.xml中配置好OpenShift的相关参数和插件
<profile>
<id>dev-ocp4</id>
<properties>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>openshift-maven-plugin</artifactId>
<configuration>
<access>
<namespace>dmg-sit</namespace>
<masterUrl>https://api.ocp.xxxx.com:6443</masterUrl>
<apiVersion>v1</apiVersion>
</access>
</configuration>
</plugin>
</plugins>
</build>
</profile>
比如这里配置的id是dev-ocp4
,OpenShift的命名空间是dmg-sit
,url是https://api.ocp.xxxx.com:6443
等等。
④修改版本信息
比如原本的版本名是1.2.1-SNAPSHOT
<groupId>com.xxx.dmg</groupId>
<artifactId>dmg-xxx-api</artifactId>
<version>1.2.1-SNAPSHOT</version>
<name>dmg-courier-admin-api</name>
<description>DM2.0 API xxx Portal</description>
改成临时版本名1.2.1-ECHOO-TEST
<groupId>com.xxx.dmg</groupId>
<artifactId>dmg-xxx-api</artifactId>
<version>1.2.1-ECHOO-TEST</version>
<name>dmg-courier-admin-api</name>
<description>DM2.0 API xxx Portal</description>
⑤把版本推上OpenShift的镜像流中
直接在Terminal执行maven的build
指令,注意指定配置的id,这里是dev-ocp4
,oc:build
是把构建好的项目以镜像的形式推上OpenShift。
mvn -DskipTests -P dev-ocp4 clean package oc:build
⑥查看镜像有没有成功推上
找到项目,点进去看tag有没有刚才推的临时版本
⑦切换部署版本
切换为临时版本(tag)
保存即可,因为配置了CI/CD,容器会自动部署。
在成功部署之前,不会kill掉原有的那个服务,保持高可用。
⑧敲定版本,提交git
当部署测试后没问题,那么就可以把项目的版本改回来,然后推上git。
最后记得把容器的部署版本设置回去。