#第二个参数,仓库名
harbor_warehouse=$2
#第三个参数,镜像名
harbor_image=$3
#第四个参数,镜像版本号
image_version=$4
#第五个参数,宿主机端口号
host_port=$5
#第六个参数,容器端口号
container_port=$6

#1.将参数都拼接起来,告知服务器要拉取的镜像
imageName=镜像大于4g怎么写入软碟通_镜像大于4g怎么写入软碟通harbor_warehouse/镜像大于4g怎么写入软碟通_git_02image_version

#2.判断当前有没有正在运行此容器,有就删除
#获取当前容器的ID
containerId=docker ps -a | grep ${harbor_image} | awk '{print $1}' #判断容器是否存在
if [ “$containerId” != “” ] ; then
docker stop $containerId
docker rm $containerId
fi

#3.接着查看拉取的镜像目标服务器上是否已存在,有就删除
images=docker images | grep ${harbor_image} | awk '{print $2}' #判断语句,包含我要拉取的镜像就执行删除动作
if [[ “$images” =~ $image_version ]] ; then
docker rmi $images
fi

#4.拉取Harbor镜像
#登录Harbor
docker login -u admin -p Harbor12345 镜像大于4g怎么写入软碟通_运维_03harbor_warehouse/镜像大于4g怎么写入软碟通_git_02image_version
#拉取镜像
docker pull $imageName
#运行容器
docker run -d --name $harbor_image -p 镜像大于4g怎么写入软碟通_git_05container_port $imageName

添加权限,让所有用户可执行脚本

chmod a+x deploy.sh

将deploy脚本移到bin目录下,让其在任何位置都能直接使用

mv deploy.sh /usr/bin/

### 修改Jenkins任务


在镜像推送到Harbor仓库步骤的下面,再添加一个构建后操作


![在这里插入图片描述]()  
 选择目标服务器,添加执行脚本和参数命令

deploy.sh 192.168.170.111:80 monster ${JOB_NAME} $version $host_port $container_port

直接deploy.sh,目标服务器放在bin目录下可以直接运行


紧跟着Harbor地址,Monster仓库


JOB\_NAME就是当前Jenkins任务的名称mytest


version就是获取上面拉取的Gitlab标签版本号


![在这里插入图片描述]()  
 host\_port、container\_port两个参数现在是获取不到的


所以需要再添加两个参数,在上面的参数化构建添加字符参数


![在这里插入图片描述]()  
 一个宿主机端口host\_port,默认值8081


一个容器端口container\_port,默认值8080


![在这里插入图片描述]()


### 构建验证


开始构建,界面可以看见多了两个默认值的参数


![在这里插入图片描述]()
Started by user 我是真滴帅
 Running as SYSTEM
 Building in workspace /var/jenkins_home/workspace/mytest
 The recommended git tool is: NONE
 No credentials specified
git rev-parse --resolve-git-dir /var/jenkins_home/workspace/mytest/.git # timeout=10
 Fetching changes from the remote Git repository
 git config remote.origin.url http://192.168.170.111:8888/root/jenkins-cicd-mytest.git # timeout=10
 Fetching upstream changes from http://192.168.170.111:8888/root/jenkins-cicd-mytest.git
 git --version # timeout=10
 git --version # ‘git version 2.30.2’
 git fetch --tags --force --progress – http://192.168.170.111:8888/root/jenkins-cicd-mytest.git +refs/heads/:refs/remotes/origin/ # timeout=10
 git rev-parse refs/remotes/origin/main^{commit} # timeout=10
 Checking out Revision b92e927c41d08ab99a8ac8a462535deadc68c972 (refs/remotes/origin/main)
 git config core.sparsecheckout # timeout=10
 git checkout -f b92e927c41d08ab99a8ac8a462535deadc68c972 # timeout=10
 Commit message: “删除docker-compose.yml,修改页面内容”
 git rev-list --no-walk b92e927c41d08ab99a8ac8a462535deadc68c972 # timeout=10
 [mytest] $ /bin/sh -xe /tmp/jenkins13710554383855071698.sh
• git checkout v1.0.2
 HEAD is now at b92e927 删除docker-compose.yml,修改页面内容
 [mytest] $ /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven/bin/mvn clean package -DskipTests
 [INFO] Scanning for projects…
 [INFO]
 [INFO] -------------------------< com.monster:mytest >-------------------------
 [INFO] Building mytest 0.0.1-SNAPSHOT
 [INFO] from pom.xml
 [INFO] --------------------------------[ jar ]---------------------------------
 [WARNING] Parameter ‘archive’ is unknown for plugin ‘spring-boot-maven-plugin:2.6.13:repackage (repackage)’
 [INFO]
 [INFO] — clean:3.2.0:clean (default-clean) @ mytest —
 [INFO] Deleting /var/jenkins_home/workspace/mytest/target
 [INFO]
 [INFO] — resources:3.3.1:resources (default-resources) @ mytest —
 [INFO] Copying 2 resources from src/main/resources to target/classes
 [INFO]
 [INFO] — compiler:3.8.1:compile (default-compile) @ mytest —
 [INFO] Changes detected - recompiling the module!
 [INFO] Compiling 4 source files to /var/jenkins_home/workspace/mytest/target/classes
 [INFO]
 [INFO] — resources:3.3.1:testResources (default-testResources) @ mytest —
 [INFO] skip non existing resourceDirectory /var/jenkins_home/workspace/mytest/src/test/resources
 [INFO]
 [INFO] — compiler:3.8.1:testCompile (default-testCompile) @ mytest —
 [INFO] Changes detected - recompiling the module!
 [INFO] Compiling 1 source file to /var/jenkins_home/workspace/mytest/target/test-classes
 [INFO]
 [INFO] — surefire:3.2.2:test (default-test) @ mytest —
 [INFO] Tests are skipped.
 [INFO]
 [INFO] — jar:3.3.0:jar (default-jar) @ mytest —
 [INFO] Building jar: /var/jenkins_home/workspace/mytest/target/mytest.jar
 [INFO]
 [INFO] — spring-boot:2.6.13:repackage (repackage) @ mytest —
 [INFO] Replacing main artifact with repackaged archive
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESS
 [INFO] ------------------------------------------------------------------------
 [INFO] Total time: 2.677 s
 [INFO] Finished at: 2024-03-16T17:27:43Z
 [INFO] ------------------------------------------------------------------------
 [mytest] $ /var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.host.url=http://192.168.170.111:9000 ******** -Dsonar.projectKey=mytest -Dsonar.projectname=mytest -Dsonar.java.binaries=target -Dsonar.source=./ -Dsonar.projectBaseDir=/var/jenkins_home/workspace/mytest
 INFO: Scanner configuration file: /var/jenkins_home/sonar-scanner/conf/sonar-scanner.properties
 INFO: Project root configuration file: NONE
 INFO: SonarScanner 5.0.1.3006
 INFO: Java 17.0.7 Eclipse Adoptium (64-bit)
 INFO: Linux 3.10.0-1160.el7.x86_64 amd64
 INFO: User cache: /var/jenkins_home/.sonar/cache
 INFO: Analyzing on SonarQube server 9.2.3
 INFO: Default locale: “en”, source code encoding: “UTF-8”
 INFO: Load global settings
 INFO: Load global settings (done) | time=614ms
 INFO: Server id: 54000601-AYjKh1Zs1hD1Rss9XdjF
 INFO: User cache: /var/jenkins_home/.sonar/cache
 INFO: Load/download plugins
 INFO: Load plugins index
 INFO: Load plugins index (done) | time=218ms
 INFO: Plugin [l10nzh] defines ‘l10nen’ as base plugin. This metadata can be removed from manifest of l10n plugins since version 5.2.
 INFO: Load/download plugins (done) | time=297ms
 INFO: Process project properties
 INFO: Process project properties (done) | time=1ms
 INFO: Execute project builders
 INFO: Execute project builders (done) | time=1ms
 INFO: Project key: mytest
 INFO: Base dir: /var/jenkins_home/workspace/mytest
 INFO: Working dir: /var/jenkins_home/workspace/mytest/.scannerwork
 INFO: Load project settings for component key: ‘mytest’
 INFO: Load project settings for component key: ‘mytest’ (done) | time=191ms
 INFO: Load project branches
 INFO: Load project branches (done) | time=253ms
 INFO: Load project pull requests
 INFO: Load project pull requests (done) | time=26ms
 INFO: Load branch configuration
 INFO: Load branch configuration (done) | time=1ms
 INFO: Auto-configuring with CI ‘Jenkins’
 INFO: Load quality profiles
 INFO: Load quality profiles (done) | time=600ms
 INFO: Auto-configuring with CI ‘Jenkins’
 INFO: Load active rules
 INFO: Load active rules (done) | time=2826ms
 INFO: Indexing files…
 INFO: Project configuration:
 INFO: 10 files indexed
 INFO: 14 files ignored because of scm ignore settings
 INFO: Quality profile for java: Easyspeed
 INFO: Quality profile for web: Sonar way
 INFO: Quality profile for xml: Sonar way
 INFO: ------------- Run sensors on module mytest
 INFO: Load metrics repository
 INFO: Load metrics repository (done) | time=111ms
 INFO: Sensor JavaSensor [java]
 INFO: Configured Java source version (sonar.java.source): none
 INFO: JavaClasspath initialization
 INFO: JavaClasspath initialization (done) | time=7ms
 INFO: JavaTestClasspath initialization
 INFO: JavaTestClasspath initialization (done) | time=0ms
 INFO: Java “Main” source files AST scan
 INFO: 5 source files to be analyzed
 INFO: Load project repositories
 INFO: Load project repositories (done) | time=225ms
 INFO: 5/5 source files have been analyzed
 WARN: Dependencies/libraries were not provided for analysis of SOURCE files. The ‘sonar.java.libraries’ property is empty. Verify your configuration, as you might end up with less precise results.
 WARN: Unresolved imports/types have been detected during analysis. Enable DEBUG mode to see them.
 INFO: Java “Main” source files AST scan (done) | time=1189ms
 INFO: No “Test” source files to scan.
 INFO: No “Generated” source files to scan.
 INFO: Sensor JavaSensor [java] (done) | time=1406ms
 INFO: Sensor JaCoCo XML Report Importer [jacoco]
 INFO: ‘sonar.coverage.jacoco.xmlReportPaths’ is not defined. Using default locations: target/site/jacoco/jacoco.xml,target/site/jacoco-it/jacoco.xml,build/reports/jacoco/test/jacocoTestReport.xml
 INFO: No report imported, no coverage information will be imported by JaCoCo XML Report Importer
 INFO: Sensor JaCoCo XML Report Importer [jacoco] (done) | time=2ms
 INFO: Sensor CSS Rules [javascript]
 WARN: Error when running: ‘node -v’. Is Node.js available during analysis?
 INFO: Sensor CSS Rules [javascript] (done) | time=1721ms
 INFO: Sensor C# Project Type Information [csharp]
 INFO: Sensor C# Project Type Information [csharp] (done) | time=1ms
 INFO: Sensor C# Analysis Log [csharp]
 INFO: Sensor C# Analysis Log [csharp] (done) | time=16ms
 INFO: Sensor C# Properties [csharp]
 INFO: Sensor C# Properties [csharp] (done) | time=0ms
 INFO: Sensor SurefireSensor [java]
 INFO: parsing [/var/jenkins_home/workspace/mytest/target/surefire-reports]
 INFO: Sensor SurefireSensor [java] (done) | time=2ms
 INFO: Sensor HTML [web]
 INFO: Sensor HTML [web] (done) | time=50ms
 INFO: Sensor XML Sensor [xml]
 INFO: 1 source file to be analyzed
 INFO: 1/1 source file has been analyzed
 INFO: Sensor XML Sensor [xml] (done) | time=179ms
 INFO: Sensor VB.NET Project Type Information [vbnet]
 INFO: Sensor VB.NET Project Type Information [vbnet] (done) | time=1ms
 INFO: Sensor VB.NET Analysis Log [vbnet]
 INFO: Sensor VB.NET Analysis Log [vbnet] (done) | time=12ms
 INFO: Sensor VB.NET Properties [vbnet]
 INFO: Sensor VB.NET Properties [vbnet] (done) | time=0ms
 INFO: Sensor com.github.mc1arke.sonarqube.plugin.scanner.ScannerPullRequestPropertySensor
 INFO: Sensor com.github.mc1arke.sonarqube.plugin.scanner.ScannerPullRequestPropertySensor (done) | time=0ms
 INFO: ------------- Run sensors on project
 INFO: Sensor Zero Coverage Sensor
 INFO: Sensor Zero Coverage Sensor (done) | time=7ms
 INFO: Sensor Java CPD Block Indexer
 INFO: Sensor Java CPD Block Indexer (done) | time=22ms
 INFO: CPD Executor 3 files had no CPD blocks
 INFO: CPD Executor Calculating CPD for 3 files
 INFO: CPD Executor CPD calculation finished (done) | time=6ms
 INFO: Load New Code definition
 INFO: Load New Code definition (done) | time=22ms
 INFO: Analysis report generated in 88ms, dir size=101.0 kB
 INFO: Analysis report compressed in 25ms, zip size=24.7 kB
 INFO: Analysis report uploaded in 55ms
 INFO: ANALYSIS SUCCESSFUL, you can browse http://ci.hkeasyspeed.com/dashboard?id=mytest
 INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
 INFO: More about the report processing at http://ci.hkeasyspeed.com/api/ce/task?id=AY5IRf2h3PsONgf4Xut0
 INFO: Analysis total time: 9.763 s
 INFO: ------------------------------------------------------------------------