Jenkins从github拉取springboot项目代码打包发布到podman容器运行

环境:

  • jenkins 2.319.2
  • podman 1.6.4

一、使用podman运行jenkins

jenkins安装文档

# 拉取jenkins镜像
podman pull jenkinsci/blueocean
# 创建本地数据存储目录并授权
mkdir -p /opt/data/docker/jenkins/docker.sock
chmod -R 777 /opt/data
# 查看镜像信息
podman images | grep jenkins/blueocean
# 运行jenkins容器
# $IID需要替换成jenkins镜像ID 备注:-v映射目录 localtime同步容器和主机时间 -e后面的参数设置时区
podman run -d --rm -u root -p 9999:8080 -v /opt/data/docker/jenkins:/var/jenkins_home -v /opt/data/docker/jenkins/docker.sock:/var/run/docker.sock -v /etc/localtime:/etc/localtime -v "$HOME":/home -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --name jenkins $IID
# 查看运行日志
podman logs jenkins
# 日志后面有一行很特别的字符串是管理员密码,详情参考jenkins官方文档



# 实际我的启动命令,要设置最大文件打开数,设置最大内存
podman run --ulimit nofile=655360 -d -u root -p 9999:8080 -v /opt/data/docker/jenkins:/var/jenkins_home -v /opt/data/docker/jenkins/docker.sock:/var/run/docker.sock -v /etc/localtime:/etc/localtime -v "$HOME":/home -e JAVA_OPTS="-Duser.timezone=Asia/Shanghai -Xmx2g" --name jenkins 507a5f2bc38d

安装好的访问地址:http://你安装的IP/9999

二、使用podman运行本地镜像仓库registry

可有可无,用来存放打包好的镜像

三、jenkins安装Locale,汉化比较完整

Dashboard > 系统管理 > 插件管理 > 可用搜索“Locale” 安装Locale Plugin,应该要重启jenkins

四、jenkins安装SSH

Dashboard > 系统管理 > 插件管理 > 可用搜索“SSH” 安装SSH Plugin,应该要重启jenkins

Dashboard > 系统管理 > 系统配置 > SSH remote hosts 一栏填写你可能会用到的主机SSH连接信息

五、jenkins安装Maven

Dashboard > 系统管理 > 插件管理 > 可用搜索“Maven” 安装Maven Integration Plugin,应该要重启jenkins

Dashboard > 系统管理 > 全局工具配置 > 最下面Maven一栏选择Maven版本进行安装 > 这个Maven会给你安装到下面

/opt/data/docker/jenkins/tools/hudson.tasks.Maven_MavenInstallation/MAVEN3.8.4/

第一次用jenkins构建项目后这个目录就会出来,按需要看是否需要修改这个目录下的maven conf/settings.xml文件

六、jenkins安装jdk

Dashboard > 系统管理 > 全局工具配置 > jdk一栏

七、jenkins安装Git

Dashboard > 系统管理 > 全局工具配置 > git一栏

八、项目中创建Dockerfile

内容如下

# 基于centos7.9.2009镜像进行构建
FROM centos:centos7.9.2009
# 作者
MAINTAINER gzaisino<gz.aisino.com>
# 指定工作目录 这行应该是不需要
WORKDIR /usr/local
# 加载dpkg运行环境
RUN yum -y install java-1.8.0 \
    && yum -y install epel-release \
    && yum repolist \
    && yum -y install dpkg-devel dpkg-dev
# 添加打好的jar包
COPY /opt/data/docker/jenkins/workspace/项目名称/target/JAR包名称 /home/manager/JAR包名称
# 挂载数据卷
VOLUME /opt/data/docker/jenkins/项目名称/data
# 声明端口
EXPOSE 19090
# 启动命令 设置端口 设置配置 因为我的podman是在manager用户下运行
ENTRYPOINT ["java","-Duser.timezone=GMT+08","-jar","/home/manager/JAR包名称","--spring.profiles.active=test","--server.port=19090"]

九、项目中创建镜像构建脚本

内容如下

#!/bin/sh
echo '================开始构建镜像=============='
#镜像名称
IMAGE_NAME='itai-app-store-java'
#jar包地址
SOURCE_PATH='/opt/data/docker/jenkins/workspace/项目名称/target/JAR包名称'
#Dockerfile地址
DOCKERFILE_PATH='/opt/data/docker/jenkins/workspace/项目名称/script/docker'
#数据卷
DATA_PATH='/opt/data/docker/jenkins/workspace/项目名称/data'
#仓库地址
REGISTRY_URL='192.168.123.132:5000'
echo IMAGE_NAME=$IMAGE_NAME
cd ~/../../
if [ ! -d $DATA_PATH ]; then
 mkdir -p $DATA_PATH
fi

echo '================当前docker版本=============='
podman -v

echo '================构建镜像开始================'
podman build -t $IMAGE_NAME -f $DOCKERFILE_PATH/Dockerfile .
echo '================构建镜像结束================'

echo '================推送镜像开始================'

echo 'tag'
podman tag $IMAGE_NAME $REGISTRY_URL/$IMAGE_NAME
echo 'push'
podman push $IMAGE_NAME $REGISTRY_URL/$IMAGE_NAME
echo '================推送镜像结束================'

echo '================获取容器ID=================='
CID=$(podman ps -a | grep "$IMAGE_NAME" | awk '{print $1}')
C_STATUS=$(podman ps -a | grep "$IMAGE_NAME" | grep "Up")
echo 容器ID=$CID
echo 容器状态=$C_STATUS

echo '================获取镜像ID=================='
IID=$(podman images | grep "$IMAGE_NAME" | awk '{print $3}')
echo 镜像ID=$IID

echo '================启动容器=================='
if [ -n "$CID" ]; then
 if [ -n "$C_STATUS" ]; then
  echo 停止$CID
  STOP_CID=$(podman stop $CID)
 fi
 echo 删除$CID
 DEL_CID=$(podman rm $CID)
fi
NEW_CID=$(podman run -d -p 19090:19090 --name $IMAGE_NAME -v $DATA_PATH:/home/manager/itai-app-store/ $IID)
echo 新容器ID=$NEW_CID

echo '================容器启动结束================'

十、创建jenkins项目

  1. 输入项目名称,名称用英文,这个会变成目录,构建一个Maven项目
  2. 源码管理,配置仓库信息,添加登录凭证(用户名密码),指定分支
  3. 构建触发器选择Build whenever a SNAPSHOT dependency is built、选择轮询SCM、日程表填写* * * * *,这是为了定时查询github的内容是否更新,自动拉下来打包发布
  4. Build Root Pom填写Pom.xml
  5. Post Steps 选择 Run  only if build succeeds,选择Execute shell script on remote host using ssh,因为jenkins是在容器里,需要调用主机上的脚本构建镜像,SSH site选择第四步配置的主机,Command填写
sh /opt/data/docker/jenkins/workspace/项目名称/script/docker/image_build.sh

保存就行,最后通过点击 Dashboard > 立即构建 构建项目,刷新左下角会出现进度,点击进度可以查看构建日志找问题,容器运行失败可以通过podman logs 容器ID查看容器运行日志

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值