Skywalking --- 通过zip源码包进行编译打包安装

991 阅读2分钟

本文介绍在无法通过git clone方式下载github上的skywalking源码的情况下,如何能够通过github上下载的zip包完成编译打包。

源码准备

下载源码

github.com/apache/skyw… image.png

下载skywalking-data-collect-protocol 的 proto文件

github.com/apache/skyw… image.png

下载proto文件并拷贝到目录skywalking/apm-protocol/apm-network/src/main/proto/(这个原来的是个submodule) 下

如果不做上述处理,会编译报错“程序包org.apache.skywalking.apm.network.common.v3不存在”

参考issue: github.com/apache/skyw…

If you download in zip ,all proto files do not exist ,you should download proto files (github.com/apache/skyw… )again and put them into /apm-protocol/apm-network/src/main/proto/ and run ./mvnw compile -Dmaven.test.skip=true\

下载 skywalking-query-protocol/ 的 proto文件

github.com/apache/skyw…

image.png github.com/apache/skyw…

下载proto文件并拷贝到目录skywalking/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol(同样是个submodule)

image.png

不然oap-server启动后会报错

2022-09-07 08:06:16,616 org.apache.skywalking.oap.server.starter.OAPServerBootstrap 60 [main] ERROR [] - [9.1.0-ebd1dc4] classpath:query-protocol/common.graphqls

java.io.FileNotFoundException: classpath:query-protocol/common.graphqls

	at graphql.kickstart.tools.SchemaParserBuilder.readFile(SchemaParserBuilder.kt:193) ~[graphql-java-tools-12.0.2.jar:?]

	at graphql.kickstart.tools.SchemaParserBuilder.parseDocuments(SchemaParserBuilder.kt:171) ~[graphql-java-tools-12.0.2.jar:?]

	at graphql.kickstart.tools.SchemaParserBuilder.parseDefinitions(SchemaParserBuilder.kt:159) ~[graphql-java-tools-12.0.2.jar:?]

	at graphql.kickstart.tools.SchemaParserBuilder.scan(SchemaParserBuilder.kt:152) ~[graphql-java-tools-12.0.2.jar:?]

	at graphql.kickstart.tools.SchemaParserBuilder.build(SchemaParserBuilder.kt:200) ~[graphql-java-tools-12.0.2.jar:?]

	at org.apache.skywalking.oap.query.graphql.GraphQLQueryProvider.start(GraphQLQueryProvider.java:141) ~[query-graphql-plugin-9.1.0.jar:9.1.0]

	at org.apache.skywalking.oap.server.library.module.BootstrapFlow.start(BootstrapFlow.java:46) ~[library-module-9.1.0.jar:9.1.0]

	at org.apache.skywalking.oap.server.library.module.ModuleManager.init(ModuleManager.java:60) ~[library-module-9.1.0.jar:9.1.0]

	at org.apache.skywalking.oap.server.starter.OAPServerBootstrap.start(OAPServerBootstrap.java:44) [server-starter-9.1.0.jar:9.1.0]

	at org.apache.skywalking.oap.server.starter.OAPServerStartUp.main(OAPServerStartUp.java:23) [server-starter-9.1.0.jar:9.1.0]

添加ui的submodule

下载skywalking-ui源码github.com/apache/skyw… image.png

并放到自己的代码仓库中git.xxxxxx.com/skywalking-…

然后,在skywalking工程目录下添加刚刚自己上传的ui代码仓为skywalking工程的submodule

cd skywalking
git submodule add https://git.xxxxxx.com/skywalking-booster-ui.git skywalking-ui

编译

cd skywalking
 ./mvnw clean package -Dmaven.test.skip

开发java项目少不了要用到maven或者gradle,对比gradle而言,可能maven要更加常用一些。要使用maven那就必要要安装maven,如果有些用户不想安装maven怎么办?或者说用户不想全局安装maven,那么可以使用项目级别的Maven Wrapper来实现这个功能。 segmentfault.com/a/119000002…

打包UI镜像

参考:blog.csdn.net/u013276277/…

  • 拷贝skywalking/dist下的文件apache-skywalking-apm-bin.tar.gz拷贝到skywalking/docker/ui下

我们打包后在工程的dist文件夹下有个apache-skywalking-apm-bin.tar.gz文件,没编译打包是没有dist这个文件夹的,构建镜像签需要把apache-skywalking-apm-bin.tar.gz文件放在构建目录中。

  • 修改Dockerfile
ARG DIST="apache-skywalking-apm-bin.tar.gz"
  • 打镜像
 docker build -t xxxxxxxxx/apache/skywalking-ui:v0.0.1  --no-cache .
 docker push xxxxxxxxx/apache/skywalking-ui:v0.0.1

打包OAP镜像

  • 拷贝skywalking/dist下的文件apache-skywalking-apm-bin.tar.gz拷贝到skywalking/docker/oap下

  • 修改Dockerfile

ARG SKYWALKING_CLI_VERSION="0.10.0"

ARG DIST="apache-skywalking-apm-bin.tar.gz"

  • 打镜像
 docker build -t xxxxxxxxx/apache/skywalking-oap:v0.0.1  --no-cache .
 docker push xxxxxxxxx/apache/skywalking-oap:v0.0.1