生成镜像和推送镜像都正常,在远程控制生产服务器拉取代码并部署时有问题,好像是链接不到还是什么问题?请大哥们看看是什么问题,第一次学习,谢谢!
//git凭证ID
def git_auth="fcec1eef-995e-4ff8-a260-f9533aa46c80"
//git的url地址
def git_url="git@192.168.1.108:wcy/nlkj.git"
//定义镜像的版本号
def tag="latest"
//Harbor的url地址
def harbor_url="192.168.1.107:85"
//镜像库项目名称
def harbor_project="test01"
//Harbor登录凭证
def harbor_auth="b5c404f4-7fbb-45fc-91d3-f2cc5182515a"
//项目端口
def port="8082"
//名称
def project_name="nlkj"
node{
stage('拉取代码') {
checkout([$class: 'GitSCM', branches: [[name: "*/${branch}"]], extensions: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_url}"]]])
}
//stage('代码审查') {
// def scannerHome = tool 'Sonar-Scanner' //Sonar-Scanner为Global Tool Configuration中的名称
// withSonarQubeEnv('Sonarqube'){ //Sonarqube为Configure System中的名称
// sh "${scannerHome}/bin/sonar-scanner"
// }
//}
stage('编译打包-上传镜像') {
sh "mvn clean package dockerfile:build"
//定义镜像名称
def imageName="nlkj:${tag}"
//对镜像打上标签
sh "docker tag ${imageName} ${harbor_url}/${harbor_project}/${imageName}"
//把镜像推送到Harbor
withCredentials([usernamePassword(credentialsId: "${harbor_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
//登录Harbor
sh "docker login -u ${username} -p ${password} ${harbor_url}"
//镜像上传
sh "docker push ${harbor_url}/${harbor_project}/${imageName}"
sh "echo 镜像上传成功"
}
//删除本地镜像
sh"docker rmi -f ${imageName}"
sh"docker rmi -f ${harbor_url}/${harbor_project}/${imageName}"
//部署应用
sshPublisher(publishers: [
sshPublisherDesc(configName: 'ProductionServer',
transfers: [sshTransfer(cleanRemote: false, excludes: '',
execCommand: "/opt/jenkins_shell/deploy.sh $harbor_url $harbor_project $project_name $tag $port",
execTimeout: 120000,
flatten: false,
makeEmptyDirs: false,
noDefaultExcludes: false,
patternSeparator: '[, ]+',
remoteDirectory: '',
remoteDirectorySDF: false,
removePrefix: '', sourceFiles: '')],
usePromotionTimestamp: false,
useWorkspaceInPromotion: false, verbose: false)])
}
}
#!/bin/sh
#接收外部参数
harbor_url=$1
harbor_project=$2
project_name=$3
tag=$4
port=$5
imageName=$harbor_url/$harbor_project/$project_name:$tag
echo "$imageName"
#查询容器是否存在,存在则删除
containerId=`docker ps -a | grep -w ${project_name}:${tag} | awk '{print $1}'`
if [ "$containerId" != "" ] ; then
#停掉容器
docker stop $containerId
#删除容器
docker rm $containerId
echo "成功删除容器"
fi
#查询镜像是否存在,存在则删除
imageId=`docker images | grep -w $project_name | awk '{print $3}'`
if [ "$imageId" != "" ] ; then
#删除镜像
docker rmi -f $imageId
echo "成功删除镜像"
fi
# 登录Harbor私服
docker login -u itcast -p Itcast123 $harbor_url
# 下载镜像
docker pull $imageName
# 启动容器
docker run -di -p $port:$port $imageName
echo "容器启动成功"