环境:
jenkins 2.319.2podman 1.6.4
一、使用podman运行jenkins
jenkins安装文档
# 拉取jenkins镜像podman pull jenkinsci/blueocean# 创建本地数据存储目录并授权mkdir -p /opt/data/docker/jenkins/docker.sockchmod -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官方文档
安装好的访问地址: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
内容如下
# 基于公司私有仓库的jdk8镜像进行构建FROM 192.168.123.132:5000/jdk8:com# 添加打好的jar包COPY /opt/data/docker/jenkins/workspace/项目名称/target/itai-app-store.jar /home/manager/itai-app-store.jar# 挂载数据卷VOLUME /opt/data/docker/jenkins/workspace/项目名称/data# 声明端口EXPOSE 19090# 启动命令 设置端口 设置配置ENTRYPOINT ["java","-Duser.timezone=GMT+08","-jar","/home/manager/itai-app-store.jar","--spring.profiles.active=test","--server.port=19090"]
九、项目中创建镜像构建脚本
内容如下
#!/bin/shecho '================开始构建镜像=============='#镜像名称IMAGE_NAME='itai-app-store-java'#jar包地址SOURCE_PATH='/opt/data/docker/jenkins/workspace/项目名称/target/itai-app-store.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_NAMEcd ~/../../if [ ! -d $DATA_PATH ]; then mkdir -p $DATA_PATHfiecho '================当前docker版本=============='podman -vecho '================构建镜像开始================'podman build -t $IMAGE_NAME -f $DOCKERFILE_PATH/Dockerfile .echo '================构建镜像结束================'echo '================推送镜像开始================'echo 'tag'podman tag $IMAGE_NAME $REGISTRY_URL/$IMAGE_NAMEecho 'push'podman push $IMAGE_NAME $REGISTRY_URL/$IMAGE_NAMEecho '================推送镜像结束================'echo '================获取容器ID=================='CID=$(podman ps -a | grep "$IMAGE_NAME" | awk '{print $1}')C_STATUS=$(podman ps -a | grep "$IMAGE_NAME" | grep "Up")echo 容器ID=$CIDecho 容器状态=$C_STATUSecho '================获取镜像ID=================='IID=$(podman images | grep "$IMAGE_NAME" | awk '{print $3}')echo 镜像ID=$IIDecho '================启动容器=================='if [ -n "$CID" ]; then if [ -n "$C_STATUS" ]; then echo 停止$CID STOP_CID=$(podman stop $CID) fi echo 删除$CID DEL_CID=$(podman rm $CID)fiNEW_CID=$(podman run -d -p 19090:19090 --name $IMAGE_NAME -v $DATA_PATH:/home/manager/itai-app-store/ $IID)echo 新容器ID=$NEW_CIDecho '================容器启动结束================'
十、创建jenkins项目
输入项目名称,名称用英文,这个会变成目录,构建一个自由风格的软件项目源码管理,配置仓库信息,添加登录凭证(用户名密码),指定分支构建触发器选择Build whenever a SNAPSHOT dependency is built、选择轮询SCM、日程表填写* * * * *,这是为了定时查询github的内容是否更新,自动拉下来打包发布Build Root Pom填写Pom.xmlPost 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查看容器运行日志