上篇简单介绍了 onedev ,这篇我们具体拿个 java spring 的项目来实际编译一下
首先必须确认环境:
onedev 和 agent 都是用 root 安装运行的,然后已经安装了 docker,且 selinux 设置为 disabled,否则会出权限麻烦。
我们用的例子是 spring 的 petclinic,正常的 build 的步骤如下:
1git clone https://github.com/spring-projects/spring-petclinic.git
2cd spring-petclinic
3./mvnw package
我们首先在 onedev 的 projects 新建一个项目 spring-boot
然后到 clone 下来的源代码目录下
1cd spring-petclinic
2
3git init
4git add .
5git commit -m "Spring boot demo project"
6
7git remote add origin http://192.168.86.101:6610/spring-boot
8git push --set-upstream origin master
这样就可以在 spring-boot 里看到代码了
然后看上图,有个紫色灯泡,Enable build support by adding.onedev-buildspec.yml
,点那个链接
我们增加一个 build 的步骤,里面再增加两个 job,一个是 Get code ,一个是 build
第一步肯定是把代码拿下来,选择 Checkout Code ,命名为 Get code ,然后其他保持缺省配置,保存
第二步就是 build 代码,选择 Execute Shell/Batch Commands,然后实际是启动了一个 docker 镜像来执行 build 的过程
-
Image 填入:maven:3.5-jdk-8-alphine
-
Commands 填入:
1unset MAVEN_CONFIG 2cat << EOF >> /root/.m2/settings.xml 3<settings> 4 <proxies> 5 <proxy> 6 <id>default</id> 7 <active>true</active> 8 <protocol>http</protocol> 9 <host>192.168.1.10</host> 10 <port>3128</port> 11 </proxy> 12 </proxies> 13</settings> 14EOF 15./mvnw package
解释一下,maven:3.5-jdk-8-alphine 这个镜像,如果在里面执行 mvnw package ,会报错 repository 的错,所以必须把 MAVEN_CONFIG 的环境变量给删除,另外整个 build 过程会去拉 N 多包和配置,大概200多兆,如果不翻墙,基本是失败。所以这里强制 mvn 使用了代理!!!否则 build 一天都不会成功。
第三步是配置 mvn repository的缓存,大家不想每次build都去下一遍依赖包吧,在 More Settings 设置
在Caches里填入:
-
key: maven-cache
-
path: /root/.m2/repository
然后执行 Build , 然后等待,第一次时间会很长,终于 Successful 了
接下来的步骤就可以用 Dockerfile 生成镜像,然后推到 Harbor,再下载或者 gitops下载来各种 yaml 文件,拉 kubectl 和配置文件,就可以推送到 kubernetes 了。
补充一下,在别的地方突然看到有 maven 的阿里镜像地址,记录一下:
1 <mirror>
2 <id>alimaven</id>
3 <name>aliyun maven</name>
4 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
5 <mirrorOf>*</mirrorOf>
6 </mirror>