docker~jenkins~harbor自动远程部署

大家可以看我前面文章,里面有docker与jenkins入门到实战,今天我们直接使用harbor+docker+Jenkins远程部署了。
harbor是一个专门管理docker镜像的程序,跟gitlab管理文件应用类似啦,当然我们用harbor不仅仅是管理镜像,我们需要使用harbor配合docker+jenkins实现远程部署。
首先我们需要安装一个harbor,这边大家自行百度进行安装啦。安装好的页面,默认账号admin/Harbor12345:
docker~jenkins~harbor自动远程部署_第1张图片进入我们的harbor管理中创建我们的项目进行管理镜像:
docker~jenkins~harbor自动远程部署_第2张图片
我这边有两个镜像,我们来说一下自动部署打包的流程:
docker~jenkins~harbor自动远程部署_第3张图片
1:编写我们的jinkensfile文件,在脚本中我执行的是/sh/implement.sh位置的脚本,记得加sh文件的可执行权限:

pipeline
    {
        agent any

    stages {
  stage('正在拉取git代码~11') {
        			steps {
        				checkout([$class:'GitSCM', branches: [[name:
        				'*/master']],extensions: [],userRemoteConfigs: [[credentialsId:
        				'ba65aaec-8e0b-4695-b510-11d5857af4be', url:'http://192.168.10.7:8065/root/spring-boot.git']]])
        			}
        	}

     stage('编译构建2') {
                 steps {
                     sh label:'', script:'mvn clean package dockerfile:build'
                 }
             }
     stage('构建dock212') {
                 steps {
                     //给镜像打标签123
                     sh "docker tag hello-boot:latest 192.168.10.6:8066/test/hello-boot:latest"
                     //登陆
                     withCredentials([usernamePassword(credentialsId: '4563136a-fd34-4c43-b4dc-9480efca0b77', passwordVariable: 'password', usernameVariable: 'username')]) {
                     //登录
                     sh "docker login -u ${username} -p ${password} 192.168.10.6:8066"
                     //上传镜像
                      sh "docker push 192.168.10.6:8066/test/hello-boot:latest"
                     }
                     //删除本地镜像
                     sh "docker rmi -f hello-boot"
                     sh "docker rmi -f 192.168.10.6:8066/test/hello-boot:latest"

                     sshPublisher(publishers: [sshPublisherDesc(configName: '10.7service',
                     transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '/sh/implement.sh',
                     execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false,
                     patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '',
                     sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                 }
     }
    }
}

sh脚本文件:

harbor_url=192.168.10.6:8066
harbor_project_name=test
project_name=hello-boot
tag=latest
port=8058
echo "1"
imageName=$harbor_url/$harbor_project_name/$project_name:$tag
echo "$imageName"
echo "2"
containerId=`docker ps -a | grep -w ${project_name}:${tag} | awk '{print $1}'` 
if [ "$containerId" != "" ] ; then
echo "3"
docker stop $containerId
echo "4"
docker rm $containerId
echo "5"
echo "成功删除容器" 
fi
echo "6"
imageId=`docker images | grep -w $project_name | awk '{print $3}'`
echo "7"
if [ "$imageId" != "" ] ; then
echo "8"
docker rmi -f $imageId
echo "9"
echo "成功删除镜像"
 fi

2:在执行远程sh文件时,jenkins需要安装插件:Publish Over SSH
3:拷贝公钥到远程服务器,在我们的192.168.10.6目录/root/.ssh/:
在这里插入图片描述
我们在该路径下执行ssh-copy-id 192.168.10.7,那么192.168.10.7目录下会有一个文件:
在这里插入图片描述
然后在jenkins 系统配置中配置:
docker~jenkins~harbor自动远程部署_第4张图片
测试:
docker~jenkins~harbor自动远程部署_第5张图片
我们来看看192.168.10.7服务器docker镜像情况:
docker~jenkins~harbor自动远程部署_第6张图片
浏览器访问:
docker~jenkins~harbor自动远程部署_第7张图片
简单的微服务自动部署成功,由于小博主家里服务器及个人电脑设备是在有点卡‘感叹生活不易呜呜’,所以先部署到这里啦。大家可以自己根据简单自动部署结合自己的部署经验去构建属于自己的微服务部署。

你可能感兴趣的:(linux,linux,docker,jenkins)