jenkins,docker,harbor自动化部署项目

一、安装jenkins
1、jenkins官方文档,选择对应的操作系统(以centos为例)

https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos

sudo wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum upgrade
sudo yum install -y epel-release 
sudo yum install -y jenkins maven git
sudo systemctl daemon-reload

jenkins.repo可能会打不开,到/etc/yum.repos.d/下新建一个jenkins.repo也是一样的

sudo tee /etc/yum.repos.d/jenkins.repo <<-'EOF'
[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat-stable
gpgcheck=1
EOF

安装后启动,并设置开机自启动

sudo systemctl start jenkins
sudo systemctl enable jenkins

2、启动后访问jenkins默认端口8080
第一次访问提示你输入密码
在这里插入图片描述

cat /var/lib/jenkins/secrets/initialAdminPassword #输出的就是密码

开始安装基本的插件,等待一段时间

然后进入jenkins主界面
在这里插入图片描述
3、安装jenkins插件
因为项目使用maven打包,所以还要安装maven和ssh插件
Manage Jenkins–Manege Plugins–可选插件,搜索maven和ssh,安装即可

二、项目配置(jar包直接部署)

1、添加远程部署主机
Manage Jenkins–Configure System–找到Publish over SSH–新增一个SSH Servers
name:自定义
Hostname:远程主机IP地址
Username:主机用户名
Remote Directory:主机远程路径
然后点高级,勾选Use password authentication, or use a different key,在Passphrase / Password处输入主机的密码,填完后点Test Configuration,出现success表示添加成功

2、新建Item
源码管理:填写git地址,添加有拉取权限的git账号
构建触发器:可以勾选出发远程构建,在浏览器输入url即可自动触发构建
Build:pom.xml(文件放在/var/lib/jenkins/workspace/项目名称下) clean package -Dmaven.test.skip=true
在这里插入图片描述
Post Steps:选择第一项Run only if build succeeds,Add post-build step–Send files or execute commands over SSH
name:选择第一步添加的远程主机
Source files:安装包,默认在target下生成
Remove prefix:去掉前缀
Remote directory:安装包存放路径,会和第一步中填的地址拼接,比如第一步中填的是/opt/,此处填了/gw/,最后你的安装包在远程主机上的路径就是/opt/gw/
Exec command:执行的命令或者脚本
在这里插入图片描述
脚本可以参考:

#!/bin/sh
#Copy jar to target path
BUILD_ID=DONTKILLME #后台执行
pid=$(ps -ef|grep officialwebsite-0.0.1-SNAPSHOT.jar|grep -v grep | awk '{print $2}')

#关闭已经启动的jar进程
function stop(){
if [ -n "$pid" ]
  then
  	echo "pid进程 :$pid"
  	kill -9 $pid
 else
    echo "进程没有启动"
fi
}
stop
sleep 5s
#发布jar服务
function start(){
  cd /opt/gw
  nohup java -jar officialwebsite-0.0.1-SNAPSHOT.jar  >gw.log 2>&1 &
}
start

3、上面都配置好后就可以开始构建了,点击build now,查看控制台输出
在这里插入图片描述
最后出现success表示构建成功,此处可能不会很顺利,本人来来回回构建了几十次才成功,遇到问题多查找资料一步一步解决即可。

三、Jenkins配合docker自动化部署

1、首先我们需要一个docker的本地仓库,现在比较用的比较广泛的是harbor。
harbor下载地址
在这里插入图片描述
离线安装和在线安装都可以,前提是安装了docker-compose
解压后执行install.sh脚本就可以安装了,后续启动docker-compose up -d
在这里插入图片描述
输入harbor.yml中设置的密码,默认Harbor12345,然后创建管理用户和项目就可以使用了。
在这里插入图片描述
此处可以看到推送镜像到仓库的命令,后续会用。

2、手动登录:docker login 10.252.6.145:8081,第一次会报错,要在daemon.json中添加"insecure-registries":["10.252.6.145:8081"],改为自己对应的仓库地址,然后重启docker就能解决了。

3、添加一台远程部署的主机,用另一种方式
首先添加主机的账号密码:Manage Jenkins–Manege Credentials–找到jenkins,添加全局凭证,填写主机的用户名和密码,ID自定义
在这里插入图片描述
在这里插入图片描述
然后来到Manage Jenkins–Configure System–SSH remote hosts–新增,填写hostname主机地址,port远程端口,选择刚才添加的凭证,点check connection,出现Successfull connection表示添加成功。

4、新建项目,一开始步骤都一样,到Post Steps开始有区别
这次先增加一个Execute shell窗口,里面放入我们在本机执行的命令,参考如下

JENKINS_WAR_HOME='/var/lib/jenkins/workspace/test01/target'
DOCKERFILE_HOME='/var/lib/jenkins/workspace/test01/dockerfile'
HARBOR_IP='10.252.6.145:8081'
REPOSITORIES='test01/offcialwebsite'
HARBOR_USER='sihongxiang'
HARBOR_USER_PASSWD='Harbor12345'
 
# Copy the newest war to docker-file directory.
\cp -f ${JENKINS_WAR_HOME}/officialwebsite-0.0.1-SNAPSHOT.jar ${DOCKERFILE_HOME}
 
# Delete image early version.
sudo docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP} 
IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'`
if [ -n "${IMAGE_ID}" ];then
    sudo docker rmi ${IMAGE_ID}
fi
 
# Build image.
cd ${DOCKERFILE_HOME}
TAG=`date +%Y%m%d`
sudo docker build -t ${HARBOR_IP}/${REPOSITORIES}:${TAG} . &>/dev/null
 
# Push to the harbor registry.
sudo docker push ${HARBOR_IP}/${REPOSITORIES}:${TAG} &>/dev/null

再增加一个Excute shell script on remote host using ssh窗口。
SSH site选择刚才新增的远程主机
命令参考如下

# 拉取镜像,发布
HARBOR_IP='10.252.6.145:8081'
REPOSITORIES='test01/offcialwebsite'
HARBOR_USER='sihongxiang'
HARBOR_USER_PASSWD='Harbor12345'
 
# 登录harbor
docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP}
 
# Stop container, and delete the container.
CONTAINER_ID=`docker ps | grep "offcialwebsite" | awk '{print $1}'`
if [ -n "$CONTAINER_ID" ]; then
    docker stop $CONTAINER_ID
    docker rm $CONTAINER_ID
else #如果容器启动时失败了,就需要docker ps -a才能找到那个容器
    CONTAINER_ID=`docker ps -a | grep "offcialwebsite" | awk '{print $1}'`
    if [ -n "$CONTAINER_ID" ]; then  # 如果是第一次在这台机器上拉取运行容器,那么docker ps -a也是找不到这个容器的
        docker rm $CONTAINER_ID
    fi
fi
 
# Deleteeasy-springmvc-maven image early version.
IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'`
if [ -n "${IMAGE_ID}" ];then
    docker rmi ${IMAGE_ID}
fi
 
# Pull image.
TAG=`date +%Y%m%d`
docker pull ${HARBOR_IP}/${REPOSITORIES}:${TAG} &>/dev/null
 
# Run.
docker run -d --name offcialwebsite -p 18080:18080 ${HARBOR_IP}/${REPOSITORIES}:${TAG}

在这里插入图片描述
最后部署成功。
上面提到的dockerfile参考如下

FROM openjdk:8-jdk-alpine

ADD officialwebsite-0.0.1-SNAPSHOT.jar /opt/

EXPOSE 18080

ENTRYPOINT ["java","-jar","/opt/officialwebsite-0.0.1-SNAPSHOT.jar"]

最后关于自动化构建,有很多方案,本人选择访问特定链接触发自动部署
在这里插入图片描述
之后访问JENKINS_URL/me/my-views/view/all/job/test01/build?token=TOKEN_NAME就会触发构建。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Jenkins一个持续集成工具,用于自动化构建、测试和部署软件。Docker一个开源的容器化平台,可以帮助开发人员打包应用程序和其依赖项成为一个容器。Harbor一个企业级的Docker镜像注册表,可以帮助组织管理和存储Docker镜像。 在自动化部署流程中,Jenkins可以与DockerHarbor结合使用,实现自动化构建、打包和部署应用程序的流程。具体步骤如下: 首先,开发人员在代码仓库中提交新的代码。Jenkins会定期检测代码仓库的变化,一旦检测到新的代码提交,Jenkins就会触发自动化构建流程。 在构建过程中,Jenkins使用Docker来创建应用程序的镜像,将应用程序和其依赖项打包成一个可移植的容器。然后,Jenkins会将构建的镜像推送到Harbor中进行存储与管理。 接下来,Jenkins会触发自动化部署流程。在部署过程中,Jenkins会从Harbor中拉取最新的镜像,并将其部署到目标环境中。这可以是测试环境、预发布环境或生产环境,具体取决于组织的部署策略。 在部署完成后,Jenkins可以执行自动化测试流程,验证应用程序在目标环境中的运行情况。如果测试通过,部署流程就会顺利完成。如果测试失败,Jenkins会通知相关人员,并触发回滚流程。 通过整合JenkinsDockerHarbor,可以实现一个端到端的自动化部署流程,帮助组织提高软件交付的效率和质量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lanceeeeeeeeeeeeeeee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值