1.指定maven仓库
猪齿鱼平台可以创建自己的maven仓库(nexus),但是目前上传jar包有问题,所以我们需要先使用之前的maven仓库:http://119.3.***.***:8051/repository/maven-public/。
(1).指定maven仓库的设置,请看第3小节的修改“构建镜像”流程
(2).上传jar包到maven仓库(目前一直失败,推测网络问题,先不管了)
参考文章:maven安装、环境变量配置以及使用mvn命令上传文件 - 简书 (jianshu.com)
mvn deploy:deploy-file -DgroupId=net.bytebuddy -DartifactId=byte-buddy -Dversion=1.10.10 -Dpackaging=jar -Dfile=byte-buddy-1.10.10.jar -Durl=http://119.***.***.***:8081/repository/maven-releases/ -DrepositoryId=develop-nexus
但是向猪齿鱼Maven上传jar包,总是失败(与上面同样的指令,只是换了maven地址):
mvn deploy:deploy-file -DgroupId=net.bytebuddy -DartifactId=byte-buddy -Dversion=1.10.10 -Dpackaging=jar -Dfile=byte-buddy-1.10.10.jar -Durl=https://pm-nexus.tongxin.cn/repository/shuziyingxiao-UAT-maven-repositry-mixed/ -DrepositoryId=shuziyingxiao-UAT-maven-repositry-mixed
2.关于Docker file
(1).猪齿鱼CI流程中使用的Dockerfile,在我们代码的第一层,所以如果要使用的Dockerfile(以及run.sh文件:启动java程序并连接skywalking)在第二层,那么请将其放到第一层。不再需要这样的操作,因为我们可以直接cd到有Dockerfile的目录,后续的生成Docker镜像操作可以直接利用该目录下的Dockerfile文件。
(2).使用的openjdk-alpine-skywalking:v1.0.0和openjdk8-sky-arthas:jdk基础镜像,在猪齿鱼流水线中无法从镜像仓库hub01.*******.com:7000中下载,所以将这两个基础镜像上传到docker hub中,以wit-email为例:
其基础镜像有原来的hub01.*****.com:7000/openjdk-alpine-skywalking:v1.0.0变为wdquan*****1029/openjdk-alpine-skywalking:v1.0.0
3.创建CI流水线
为某个工程创建应用流水线
点击右上角的”创建流水线”。
在弹出的创建流水线对话框中,输入流水线名称,选择java工程,选择branch。最后选择Java镜像构建。
4.修改应用流水线
选中已经创建好的流水线,然后点击右上角的“修改”
(1).删除流程
进入修改页面后,在“流程配置”这个Tab下,删掉多余的流程(比如代码扫描、部署等),只剩下如下的构建镜像,目前只支持到打包Docker镜像并上传到Docker镜像仓库(猪齿鱼自带镜像仓库:pm-harbor.******.cn/wit-znk-1282103103)
删除“代码检查(Maven)”“部署”和“Maven单元测试”这3个流程
只剩下”构建镜像”
猪齿鱼Docker镜像仓库信息已经在华为云K8s集群中配置完成。
(2).修改“构建镜像”流程
点击“Java镜像构建”,在弹出的对话框中,选择“项目依赖仓库”
在高级配置中,添加shell语句,将我们自己的maven仓库加入到settings.xml文件中。
#Bruce: add my personal maven repositry
sed -i '/<settings>/ a\ <mirrors> \
\n <mirror> \
\n <id>nexus-aliyun</id> \
\n <mirrorOf>central</mirrorOf> \
\n <name>Nexus aliyun</name> \
\n <url>http://maven.aliyun.com/nexus/content/groups/public/</url> \
\n </mirror> \
\n <mirror> \
\n <id>nexus</id> \
\n <mirrorOf>*</mirrorOf> \
\n <url>http://119.***.***.***:8051/repository/maven-public/</url> \
\n </mirror> \
\n </mirrors> ' settings.xml
在高级配置中,将mvn打包指令改为:mvn clean install -Dmaven.test.skip=true -U -s settings.xml,以跳过单元测试(不然肯定会失败),并且使用上面修改过的settings.xml文件。
在高级配置中,注释掉最后的cp target/app.jar ./app.jar
在高级配置中,添加shell指令: docker login -u w***** -p c******,登录docker hub,从docker hub中获取基础镜像openjdk-alpine-skywalking:v1.0.0和openjdk8-sky-arthas:jdk
为什么要用docker hub,不用猪齿鱼自带的docker 镜像仓库?因为pull镜像的时候,总是提示没有权限
没有权限怎样解决?加入下面的两句话。暂时还是先用docker hub,不折腾了
在高级配置中,添加cd指令,进入到有Dockerfile文件的目录
在高级配置中,去掉“上传Chart至猪齿鱼”这一步,因为我们没有使用helm chart功能。
(3).配置Docker镜像tag
在修改页面的“高级设置”tab页下,“版本策略”选择“自定义”,然后在“命名规则”中填写tag,例如dev-wit-3.0
5.CI流水线执行
(1).执行流水线
在创建好的流水线的功能菜单中,选择“全新执行”,流水线开始执行。
(2).查看log
(3).Docker镜像仓库
在“制品库管理”中选择Docker镜像仓库“wit-z****k-1*****103”
6.华为云部署
指定“镜像名称” “镜像访问凭证”等
“镜像名称”例如:pm-harbor.****.cn/wit-***-1282103103/wit-wechat-mp:dev-wit-3.0