Jenkins搭建以及构建docker镜像

作者:John-Li

未经允许!禁止转载!

借鉴于:https://www.yuque.com/u32605276/ggmv94/mtwg6cb4uxl52x2x?singleDoc=#Tb2yP

安装Jenkins

下载jdk或者自己上传包 https://www.oracle.com/java/technologies/downloads/

Maven下载 https://downloads.apache.org/maven/maven-3/

wget https://downloads.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz

tar -xvzf apache-maven-3.8.8-bin.tar.gz

tar zxvf jdk-8u121-linux-x64.tar.gz

mv jdk1.8.0_121/ java

mv apache-maven-3.8.8/ java/maven

mv java/ /usr/local/
配置环境变量: vim /etc/profile


JAVA_HOME=/usr/local/java
MAVEN_HOME=/usr/local/java/maven
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME MAVEN_HOME

source /etc/profile 刷新配置

java -version 验证一下

mvn -v
jenkins服务rpm包下载地址https://get.jenkins.io/redhat/

选择jenkins对需要的版本,复制链接地址或者直接点击下载都可以

wget https://get.jenkins.io/redhat/jenkins-2.361-1.1.noarch.rpm --no-check-certificate

yum install epel-release java-11-openjdk-devel -y

rpm -ivh jenkins-2.361-1.1.noarch.rpm rpm安装或者yum安装都可以

yum -y install jenkins-2.361-1.1.noarch.rpm

systemctl daemon-reload

systemctl start jenkins 启动jenkins

systemctl status jenkins 查看一下jenkins的状态

启动时间会很久,稍等3分钟后访问IP+8080

安装插件

Git server
Git Parameter
Docker
Deploy to container 
Publish Over SSH 
ssh
Image Tag Parameter
Yet Another Docker
Maven Integration plugin
GIT plugin
#安装好后重启Jenkins

配置SSH免密

公钥发送到后端服务器,才能实现免密;
[root@jenkins ~]# ssh-keygen
[root@jenkins ~]# ssh-copy-id -i root@后端服务器地址

配置Docker工具

系统管理-->>全局工具配置-->>Docker

image.png

添加凭据

系统管理-->> Manage Credentials 

img

#类型选择
Docker Registry Auth

Email:(写仓库最开始网址)
https://registry.cn-hangzhou.aliyuncs.com

用户名:(登录仓库的用户名)

密码:(登录仓库的密码)

img

创建项目

配置jenkins机器私钥和后端机器地址
系统管理-->>系统配置-->>Publish over SSH

Publish over SSH	#配置jenkins机器私钥

img

系统管理-->>系统配置-->>SSH Servers
SSH Servers				#配置远程后端服务器

img

构建一个自由风格的项目

img

选择丢弃旧的构建设置相应参数

3bf250a2f036e54733f884c77ee1eda.png

选择参数化构建过程中的Image Tag Parameter设置相应参数
Name(标签):DOCKER_IMAGE		#可自定义
Image Name(命令空间/镜像名):aceqwe-doceker/hexo
Tag Filter Pattern(标记筛选器模式):.*			#根据实际情况,可以使用正则表达式
Registry URL(仓库地址):https://registry.cn-hangzhou.aliyuncs.com
Tag Ordering(排序方式):Descending Versions(降序)
# Natural Ordering:自然排序
# Reverse Natural Ordering:反向自然排序
# Descending Versions:降序
# Ascending Versions:升序

img

在构建选择执行shell选项
docker login --username=用户名 -p 密码 registry.cn-hangzhou.aliyuncs.com
docker pull registry.cn-hangzhou.aliyuncs.com/${DOCKER_IMAGE}
rm -rf 项目名称.tar
docker save -o 项目名称.tar registry.cn-hangzhou.aliyuncs.com/${DOCKER_IMAGE}
docker rmi registry.cn-hangzhou.aliyuncs.com/${DOCKER_IMAGE}

image.png

设置构建后操作,将镜像压缩的包传送到目标服务器,执行脚本运行docker镜像
Name:ssh-test									#设置的远程服务器
Source files(源文件):hexo.tar 					#镜像压缩后的名字
Remote directory(远程目录):upload				#存放压缩文件目录(可自定义)
Exec command(远程脚本):/opt/upload/hexo/hexo-up.sh		#脚本存放目录

img

编写远程脚本(可以自己增加命令与命令运行间隔时间)
#此脚本放在后端服务器上
[root@k8s-node2 upload]# cd /opt/upload/项目名
[root@k8s-node2 项目名]# vim 项目名.sh
#!/bin/bash
# 备份目录
BACKDIR=/opt/back-dir/项目名字
# 更新目录
UPDATADIR=/opt/upload/项目名字
# 新容器信息目录
NEW_CONTAINER_DIR=/opt/upload/项目名字/CONTAINER_NAME

# 旧镜像版本号
TAG=$(docker images | grep registry.cn-hangzhou.aliyuncs.com/仓库地址 | awk -F" " '{print $2}')
# 旧镜像名字
IMAGES=registry.cn-hangzhou.aliyuncs.com/仓库地址:$TAG
# 旧容器名字
OLD_CONTAINER_NAME=$(docker ps -a |grep registry.cn-hangzhou.aliyuncs.com/仓库地址 |awk '{print $NF}')

DIR(){
        if [ ! -d $BACKDIR ];then
            rm -rf $BACKDIR
            mkdir -p $BACKDIR
        fi
        if [ ! -d $NEW_CONTAINER_DIR ];then
            rm -rf $NEW_CONTAINER_DIR
            mkdir -p $NEW_CONTAINER_DIR
        fi
}
BACK(){
        DIR
        if [ -f $UPDATADIR/项目名字.tar ];then
            mv $UPDATADIR/项目名字.tar $BACKDIR/项目名字-$(date "+%F-%T").tar
        fi
        mv /root/upload/项目名字.tar $UPDATADIR
}
DOCKERIMAGES(){
        echo $IMAGES &>$NEW_CONTAINER_DIR/images.txt
        echo $OLD_CONTAINER_NAME &> $NEW_CONTAINER_DIR/CONTAINER.txt
        docker ps -a |grep '项目名字'
        if [ $? -eq 0 ];then
                docker stop $(cat $NEW_CONTAINER_DIR/CONTAINER.txt)
                docker rm $(cat $NEW_CONTAINER_DIR/CONTAINER.txt)
        fi
        docker images |grep 'registry.cn-hangzhou.aliyuncs.com/仓库地址'
        if [ $? -eq 0 ];then
        docker rmi $(cat $NEW_CONTAINER_DIR/images.txt)
        fi
}
START(){
        DOCKERIMAGES
        docker load < $UPDATADIR/项目名字.tar &> $NEW_CONTAINER_DIR/images.txt && \
        awk -F " " '{print $3}' $NEW_CONTAINER_DIR/images.txt |awk -F"/" '{print $NF}' > $NEW_CONTAINER_DIR/NEW_CONTAINER_NAME.txt && \
        sed -i "s+:++g" $NEW_CONTAINER_DIR/NEW_CONTAINER_NAME.txt && \
        sed -i "s+v++g" $NEW_CONTAINER_DIR/NEW_CONTAINER_NAME.txt && \
        sed -i "s+\.++g" $NEW_CONTAINER_DIR/NEW_CONTAINER_NAME.txt
        sleep 3
        docker run 项目启动命令
}
BACK
START
进行构建查看结果

image.png

image.png

结果显示成功运行镜像

img

image.png

作者:John-Li

未经允许!禁止转载!

借鉴于https://www.yuque.com/u32605276/ggmv94/mtwg6cb4uxl52x2x?singleDoc=#Tb2yP
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 我可以给你一些步骤来帮助你使用Jenkins构建镜像并发布:1.首先,确保你的Jenkins安装完整并正确配置;2.接着,构建你的应用程序,可以使用Maven或其他构建工具;3.然后,使用Docker构建一个镜像,包括你之前构建的应用程序;4.最后,使用Jenkins镜像发布到你的容器服务中。希望这些步骤能帮到你! ### 回答2: Jenkins是一个流行的持续集成和持续交付工具,它可以帮助我们自动化构建和发布应用程序。下面是一些步骤,教你如何在Jenkins构建镜像并发布: 1. 安装Jenkins:首先,你需要在你的机器上安装Jenkins。你可以通过Jenkins的官方网站下载适合你的操作系统的安装程序,并按照指示进行安装。 2. 配置Jenkins:安装完成后,你需要打开Jenkins,配置一些必要的设置。例如,你可以设置用户名和密码以确保安全性,然后选择适合你的插件。 3. 创建一个新的Jenkins任务:在Jenkins主界面,点击“新建任务”来创建一个新的任务。选择“自由风格的软件工程”模板并配置一些基本信息,比如任务的名称和描述。 4. 配置源码管理:在“配置”选项中,你需要指定你的源码管理方式。你可以选择Git、SVN或其他支持的版本控制系统。然后,提供源代码的URL和访问凭证。 5. 配置构建过程:在构建环境中,你可以选择构建触发器,例如定时构建或源代码变更构建。然后,配置构建步骤,以告诉Jenkins如何构建你的镜像。你可以使用Docker构建镜像,然后将其推送到Docker Registry。 6. 配置构建后操作:构建完成后,你可能希望执行一些后续操作,例如发送构建结果通知、触发其他任务或者部署应用程序。你可以在“构建后操作”中配置这些操作。 7. 保存并运行任务:完成所有配置后,点击保存并运行你的任务。Jenkins将开始自动构建镜像并发布。 通过以上步骤,你应该能了解如何使用Jenkins构建镜像并发布。Jenkins的灵活性和可扩展性使其成为持续集成和持续交付过程中的重要工具,可以帮助简化和自动化构建和发布工作。 ### 回答3: 通过Jenkins构建镜像并发布的过程如下: 1. 通过Jenkins安装Docker插件:首先,在Jenkins的管理页面中选择“插件管理”,然后搜索并安装Docker插件。安装完成后,重启Jenkins使插件生效。 2. 配置Jenkins的全局设置:在Jenkins的管理页面中,选择“系统设置”,找到并配置Docker的路径。这将允许Jenkins使用Docker进行构建和发布镜像的操作。 3. 创建Jenkins任务:在Jenkins的主页面中,选择“新建任务”来创建一个新的任务。选择自由风格或流水线等适合的任务类型。 4. 配置构建触发器:在任务配置页面中,选择添加触发器,如触发自动构建的Git/SCM触发器或定时触发器。 5. 配置源码管理:选择Git或其他版本控制工具,并配置源码的仓库地址、分支等信息。 6. 配置构建环境:选择在构建过程中使用Docker容器,并配置Docker镜像的名称、版本等信息。 7. 配置构建步骤:在构建过程中添加构建步骤,比如执行Shell脚本或者执行Maven/Gradle构建命令。 8. 配置构建后操作:可以选择构建完成后进行的操作,如触发其他任务、发送邮件通知等。 9. 保存并构建任务:保存配置后,可以手动触发构建任务,Jenkins将会根据配置的步骤执行构建操作。 10. 查看构建结果:在Jenkins的任务页面中,可以查看构建的日志输出和构建结果。如果构建成功,镜像将会被构建并发布到指定的容器仓库中。 通过上述步骤,你就可以使用Jenkins进行镜像的自动化构建和发布了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值