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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值