maven
- jenkins的工作:
- 拉取代码
- 编译java源代码,依托于maven
- 编写成docker可运行的镜像并提交到私有仓库harbor
交付maven
-
获取jenkins内jdk版本
[root@hdss7-21 ~]# kubectl exec -it jenkins-54b8469cf9-6lnd2 -n infra -- /bin/bash root@jenkins-54b8469cf9-6lnd2:/# java -version openjdk version "1.8.0_232" OpenJDK Runtime Environment (build 1.8.0_232-b09) OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
-
下载镜像
https://archive.apache.org/dist/maven/maven-3/
创建目录并解压,目录的8u232
是jdk的版本,目录名称影响流水线脚本/data/nfs-volume/jenkins_home
是挂在到容器里的目录,所以操作这个目录就相当于操作镜像里的目录
[root@hdss7-200 ~]# cd /opt/src/ [root@hdss7-200 src]# ls apache-maven-3.6.1-bin.tar.gz harbor-offline-installer-v1.8.5.tgz harbor-offline-installer-v1.8.3.tgz harbor-offline-installer-v1.8.5.tgz.1 [root@hdss7-200 src]# mkdir -p /data/nfs-volume/jenkins_home/maven-3.6.1-8u232 [root@hdss7-200 src]# tar -xvf apache-maven-3.6.1-bin.tar.gz -C /data/nfs-volume/jenkins_home/maven-3.6.1-8u232 [root@hdss7-200 src]# cd /data/nfs-volume/jenkins_home/maven-3.6.1-8u232 [root@hdss7-200 maven-3.6.1-8u232]# ls apache-maven-3.6.1 [root@hdss7-200 maven-3.6.1-8u232]# cd apache-maven-3.6.1/ [root@hdss7-200 apache-maven-3.6.1]# mv * ../ [root@hdss7-200 apache-maven-3.6.1]# cd .. [root@hdss7-200 maven-3.6.1-8u232]# rm -rf apache-maven-3.6.1/ [root@hdss7-200 maven-3.6.1-8u232]# ls bin boot conf lib LICENSE NOTICE README.txt
-
初始化maven
[root@hdss7-200 maven-3.6.1-8u232]# vim conf/settings.xml ... ... <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror> --> </mirrors> ... ...
-
maven也可以选择使用哪个版本的jdk
[root@hdss7-200 maven-3.6.1-8u232]# vim bin/mvn ... ... # JAVA_HOME Must point at your Java Development Kit installation.
-
交付dubbo底包镜像
-
底包即满足java运行环境的基础镜像,可以通过公网下载
[root@hdss7-200 ~]# docker pull docker.io/stanleyws/jre8:8u112 [root@hdss7-200 ~]# docker tag fa3a085d6ef1 harbor.od.com/public/jre:8u112 [root@hdss7-200 ~]# docker push harbor.od.com/public/jre:8u112
-
制作底包dockerfile
[root@hdss7-200 ~]# cd /data/dockerfile/ [root@hdss7-200 dockerfile]# mkdir jre8 ; cd jre8 [root@hdss7-200 jre8]# vi Dockerfile FROM harbor.od.com/public/jre:8u112 RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\ echo 'Asia/Shanghai' >/etc/timezone ADD config.yml /opt/prom/config.yml # 监控jvm ADD jmx_javaagent-0.3.1.jar /opt/prom/ # agent WORKDIR /opt/project_dir ADD entrypoint.sh /entrypoint.sh CMD ["/entrypoint.sh"] # pid为1的进程 [root@hdss7-200 jre8]# vim config.yml --- rules: - pattern: '.*' [root@hdss7-200 jre8]# wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar -O jmx_javaagent-0.3.1.jar [root@hdss7-200 jre8]# vim entrypoint.sh #!/bin/sh M_OPTS="-Duser.timezone=Asia/Shanghai -javaagent:/opt/prom/jmx_javaagent-0.3.1.jar=$(hostname -i):${M_PORT:-"12346"}:/opt/prom/config.yml" C_OPTS=${C_OPTS} JAR_BALL=${JAR_BALL} # 由资源配置清单提供 exec java -jar ${M_OPTS} ${C_OPTS} ${JAR_BALL} [root@hdss7-200 jre8]# chmod +x entrypoint.sh
-
在Harbor上新建一个公开仓库
base
,biud镜像并上传到该仓库下[root@hdss7-200 jre8]# docker build . -t harbor.od.com/base/jre8:8u112 [root@hdss7-200 jre8]# docker push harbor.od.com/base/jre8:8u112