Jenkins运行在docker中使用Maven构建Java应用程序

这篇笔记是Jenkins入门教程使用Maven构建Java应用程序的一个补充说明,因为我照着文档操作的过程中遇到不少问题,遂一一做个笔记。

我的主机是Windows 11,安装的docker是Docker Desktop 4.18.0。

第一点,在Windows里执行docker命令创建Jenkins container的时候,原文的命令如下。在我的环境下,%HOMEPATH%是\Users\jinga,直接报找不到路径的错。HOMEPATH的正确路径是C:\Users\jinga   然后为了方便,加上--name jenkins来指定container名字。

docker run ^
  --rm ^
  -u root ^
  -p 8080:8080 ^
  -v jenkins-data:/var/jenkins_home ^
  -v /var/run/docker.sock:/var/run/docker.sock ^
  -v "%HOMEPATH%":/home ^
  jenkinsci/blueocean

更改之后的命令如下。这样jenkins就运行在container中了。

docker run ^
  --rm ^
  -u root ^
  -p 8080:8080 ^
  -v jenkins-data:/var/jenkins_home ^
  -v /var/run/docker.sock:/var/run/docker.sock ^
  -v C:\Users\jinga:/home ^
  --name jenkins ^
  jenkinsci/blueocean

第二点,jenkins运行起来后,版本是2.361.4,版本比较低,我看了一下,目前最新版已经到2.399了。这导致的第一个问题就是,好些plugin因为版本低要升级。比方说,升级mailer。具体步骤如下。

  1. 从Dashboard>系统管理,这里已经可以看到很多红色警告了。点插件管理>update,在查找里输入mailer,勾选,点击下载待重启后安装。一般很快就安装,提示“下载成功,下次启动时生效”。这个时候,要重启container。步骤如下。
  2. docker ps -a 找到container的ID或名字,假设container叫jenkins
  3. docker container restart jenkins   重启container

第三点,因为jenkins的版本较低,所以我选择升级jenkins。我采取的步骤如下,jenkins是我的container名字。

  1. 在Windows主机上, download new version package of Jenkins from below link.我下载的是2.387.2版本 Jenkins download and deployment
  2. 如果jenkins container没启动,跑一下上面的启动命令让jenkins container运行起来。
  3. get Jenkins container id by docker ps -a
  4. copy downloaded jenkins.war in step 1 to docker, by docker cp jenkins.war jenkins:/
  5. log into container by docker  exec -it jenkins bash
  6. move jenkins.war to right directory by mv jenkins.war /usr/share/jenkins/jenkins.war
  7. exit and restart container by exit
  8. restart container by docker container restart jenkins

这样就把jenkins升级了,登录http://localhost:8080/确定已是升级后的版本。

第四点,升级完jenkins之后,要重新做一个image,要不然,下次启动jenkins container还用jenkinsci/blueocean这个base image,前面的升级就白做了。命令如下(jenkins是我的container名字)。

docker commit jenkins jenkins2.387.2:latest        从container保存image

docker images -a  可以显示所有images

这样操作之后,启动命令里面就要指定新的image名字jenkins2.387.2了,所以启动命令变成如下。

docker run ^
  --rm ^
  -u root ^
  -p 8080:8080 ^
  -v jenkins-data:/var/jenkins_home ^
  -v /var/run/docker.sock:/var/run/docker.sock ^
  -v C:\Users\jinga:/home ^
  --name jenkins ^
jenkins2.387.2

第五点,在“在Jenkins中创建你的流水线项目”一节中,配置Repository URL 的时候,我的local path不管怎么写都报无法识别,而且是给出的提示信息当中,全是git远程路径,所以我设置为我clone过来后在我的账户下的simple-java-maven-app的git路径,如下。https://github.com/jiabinliao/simple-java-maven-app.git  

第六点,需要安装docker pipeline这个plugin,否则运行pipeline的时候会报如下错误。安装之后重启container即可。

workflowscript: 3:Invalid agent type "docker" specified. Must be one of [any, label, none].

以上,仅做笔记以供参考。

另外,我好奇image存在哪里,找了一下,确定是存在C:\Users\jinga\AppData\Local\Docker\wsl\data\ext4.vhdx 4

可能因为是在Windows下的缘故,docker还是虚拟出来一块硬盘来存放所有data。这点其实跟VM有点像了。

你可能感兴趣的:(Java,Jenkins,java,jenkins,docker,maven)