Jenkins部署Maven项目并docker发布

1、Jenkins多选项参数化构建

Jenkins需要装 Extended Choice Parameter Plug-In插件

(1)配置多项目勾选

选择参数化构建过程 --> 选择 Extended Choice Parameter

(2)配置分支选择

使用 Extended Choice Parameter 的Single Select

 

2、配置Jenkins的环境变量

JDK环境、Maven环境都已经安装好,在"系统管理"-->"全局工具配置"里面

 

在 “系统管理”-->"系统配置"-->"全局属性"-->"环境变量" 里,添加Jenkins环境变量

 

3、maven工程里编写dockerfile

FROM openjdk:8-jdk-alpine
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
EXPOSE 59003
ENV JAVA_OPTS="\
-server \
-Xmx510m \
-Xms128m \
-Xmn128m "
ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar

4、可能出错

jenkins使用dockerfile-maven-plugin进行编译时发现没有权限,错误内容:

INFO: I/O exception (java.io.IOException) caught when processing request to {}->unix://localhost:80: Permission denied
Nov 1, 2020 11:12:11 AM org.apache.http.impl.execchain.RetryExec execute
INFO: Retrying request to {}->unix://localhost:80 
..... 
Failed to execute goal com.spotify:docker-maven-plugin:1.2.2:build (default-cli) on project licensing-service: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: java.io.IOException: Permission denied -> [Help 1]

是因为 Jenkins运行的用户是 Jenkins,Jenkins用户并没有访问 docker.sock 的权限导致。

解决方式

一种方式:给jenkins用户组一个运行docker的权限即可,修改/lib/systemd/system/docker.service文件,增加启动参数  -G jenkins

/lib/systemd/system/docker.service:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
BindsTo=containerd.service
After=network-online.target firewalld.service
Wants=network-online.target
 
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 -G jenkins
ExecReload=/bin/kill -s HUP $MAINPID

第二种方式:原因是当前用户没有执行docker 权限. 将docker 权限设置为666 即可

这种方式,在每次docker重启后就会失效,因为docker.sock每次重启都会重新生成一个新的文件。所以重启后需要再执行一遍。

sudo chmod 666 /var/run/docker.sock

第三种方式:将 jenkins用户添加到 docker组里

usermod -a -G docker jenkins

// 查看用户组
cat /etc/group

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值