本次配置时,jenkins需要配置在外网可访问的服务器上,因为在git push内容到github时,触发Webhooks并推送到jenkins服务器上。

 

1. 配置Github(通过秘钥登录)

生成秘钥:

ssh-keygen -t rsa -b 4096 -C "1248741476@qq.com"

在github设置密钥(公钥):

将公钥 id_rsa.pub里的内容填入如下 Key中,Title可任意取。

检查是否key值配置成功,使用key值的方式进行clone,如下:

 

设置带权限的access_token

生成token的秘钥

 

2. 配置Jenkins

Jenkins安装参考博客

安装git、github插件(系统管理 --> 插件管理)

配置系统环境(系统管理 --> 系统设置)

添加token密钥:

其中下面的 Secret中的值为配置 Personal access tokens生成的 token秘钥。

下面 secret text为上面的描述, Test connection用来测试验证是否通过。

 

3. Job配置

点击Add 添加验证。

root为我服务器使用的用户名,大家可以根据自己的实际情况配置,Private Key 可以如下获取。记住需要在github上传服务的公钥。

继续配置。

 

4. 容器配置

4.1 更改主机系统配置(jenkins服务器上配置)

常见错误一:sudo: sorry, you must have a tty to run sudo

解决方法:#Default requrrity(文件路径:/etc/sudoers,如果文件中没有这个就不用理会)

 

常见错误二:sudo: no tty present and no askpass program specified

解决方法:jenkins ALL = NOPASSWD: /usr/bin/docker,/usr/bin/chown,/usr/bin/mv

 

4.2 挂载目录

# 存储路径
SAVE_PATH=/tmp/job_files

# 保存的文件名称
FILE_NAME=`date "+%Y%m%d"`_${BUILD_NUMBER}.jar

# 进入工作空间
echo "workspace==========${WORKSPACE}"

# mvn编译
# cd ${WORKSPACE}
# mvn clean install
# -f为指定pom文件
# --rm在编译完后将容器删除,节省空间
sudo docker run --rm --name my-maven-project -v ${WORKSPACE}:${WORKSPACE} maven:3.5-jdk-7 mvn clean install -f ${WORKSPACE}/pom.xml

# 保存文件
sudo mv target/*.jar $SAVE_PATH/$FILE_NAME

# 执行jar包并且验证
java -cp $SAVE_PATH/$FILE_NAME com.mycompany.helloworld.App

 

4.3 push提交触发Webhooks

触发Webhooks后推送到Jenkins服务器进行构建,运行成功。

注意:因为容器每次执行后都会销毁,没有设置maven的缓冲目录,这样导致每次容器运行时都需要实时下载依赖,速度会慢一些,为此可以将本地的maven仓库与容器中的maven仓库绑定起来,这样会大大加快容器运行的速度。

 

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐