在开始之前,我们需要保证系统中已经安装了Docker、JDK、Maven。
我这里使用的是 2.344 版本的 Jenkins,拉取命令如下:
docker pull jenkins/jenkins:2.344
需要稍微等一会,等待拉取完成。
镜像下载完成后,我们可以通过如下命令查看我们 docker 中的所有镜像。
docker images
这里可以看到我们刚才拉取的 2.344版本的 Jenkins 镜像。
下载镜像成功后,我们需要用此镜像运行一个容器,命令如下:
docker run \
-d \
--name jenkins \
-u 0 \
-p 9999:8080 \
-p 8888:8888 \
-p 50000:50000 \
-v /usr/local/java/jdk-11.0.18:/usr/local/java/jdk-11.0.18 \
-v /usr/local/maven/apache-maven-3.6.1:/usr/local/maven/apache-maven-3.6.1 \
-v /home/jenkins_home:/home/jenkins_home \
jenkins/jenkins:2.344
命令解释:
最后的 jenkins/jenkins:2.344 表示当前启动的容器是基于哪个镜像的,语法 Repository:Tag,如果当前的镜像是唯一的,也可以不用加Tag。
此处我将本地系统的 jdk11 和 maven 都映射到了 当前启动的容器中,而路径我为了便于统一(容器内的路径可以随便自定义),容器内的路径设置为和容器外一样的路径。
/usr/local/java/jdk-11.0.18 路径为本地系统JAVA_HOME 配置的路径,如果忘记了配置的路径,可以通过如下命令查看:
which java
我们复制路径到bin目录的上一级即可,如此处为:/usr/local/java/jdk-11.0.18
/usr/local/maven/apache-maven-3.6.1 路径为本地系统JAVA_HOME 配置的路径,如果忘记了配置的路径,可以通过如下命令查看:
which mvn
同理,复制到 bin 目录的上一层即可,此处为:/usr/local/maven/apache-maven-3.6.1
当我们输入上述的 docker run 命令后,会生成一个容器,我们可以通过命令查看当前启动的容器:
docker ps
如果某些同学输入命令后,没有看到该信息,那说明我们的容器运行失败了,可以通过如下命令查看所有容器的状态:
docker ps -a
这里的 STATUS 大概率会显示 Exit… 表明你的容器启动失败。我们可以查看具体原因。
如果我们的容器启动成功,那么我们直接访问 本地的ip:9999 即可查看到当前页面。
此时我们如果直接在本地输入命令 cat /var/jenkins_home/secrets/initialAdminPassword 是查看不到的,因为该路径是容器内部的路径,我们需要先进入容器内部,再输入该命令,才能够成功看到密码。
进入容器命令:
docker exec -it 容器id/容器名称 bash
你可以输入的容器id或者容器名称,我一般习惯输入容器名称,如果你的 docker run 命令和我一样,那么可以直接复制如下命令进入容器内部:
docker exec -it jenkins bash
成功进入容器后,我们在输入如下命令查看初始密码:
cat /var/jenkins_home/secrets/initialAdminPassword
我们复制打印出来的密码,粘贴到网页,点击“继续”,进行下一步操作。
此处我建议点击“安装推荐的插件”的选项。然后耐心等待,有可能部分插件会安装失败,因为此处的下载源在国外。部分插件安装失败,我们可以点击重试,如果多次重试仍然失败(就是我本人),我们直接点击下一步。
这里可以输入你想创建的账号,输入完毕后,点击保存并完成。
这里默认即可,点击保存并完成。
点击 “开始使用Jenkins”,就可以进入到 Jenkins 的页面了。
Maven插件默认是不会给我们安装的,因此我们需要自己安装。
首先点击左侧 “Manage Jenkins”,然后找到 “Manage Plugins”并点击,
然后点击“可选插件”并输入 maven,找到如下插件 Maven Integration plugin,点击下面的 Install without restart。
首先点击左侧 “Manage Jenkins”,然后找到 “Global Tool Configuration”并点击,
输入别名及JAVA_HOME,这里的JAVA_HOME对应的是我们docker容器内部的JAVA_HOME,而我们在第三步将运行容器,将 java 映射的地址为 /usr/local/java/jdk-11.0.18(根据你 docker run 时的配置填写),因此这里直接上即可,如图:
/usr/local/java/jdk-11.0.18
Git会在我们自定义Jenkins时安装插件的时候,自动帮我们安装,此处我们无需填写,默认即可。
同理,此处需要填写maven的别名和MAVEN_HOME.
/usr/local/maven/apache-maven-3.6.1
我们填上即可。
最后我们点击应用,然后点击保存即可。
首先,回到Jenkins首页,点击“+新建任务”,如图:
输入我们项目的名称,点击构建一个Maven项目,然后点击确定,如图:
首先配置我们的Git仓库地址,此处我用的是自己开源的项目,所以无需填写凭证,如果大家的项目需要凭证,可以自行添加:
添加凭证非常简单,我相信都会,填好需要的账号密码点击保存即可。
当我们添加完后,URL下方没有出现红色的错误提示表示能够正常连接到该仓库了,可以继续配置仓库分支,这里我选用的是一个 helloworld 的分支,大家根据实际情况自行填写:
接下来就是配置Maven,对项目进行打包,Root POM 不用修改,就用 pom.xml,而 Goals and options 我们填写:
clean install -Dmaven.test.skip=true
这时候Maven的最基本配置就完成了。大家可以点击应用,并保存,开始构建项目,看看能不能打包成功。
查看控制台输出:
这样就代表成功了,接下来就开始启动项目了,点击项目,打开左侧的配置,依次选择 Post Steps -> Add post build steps -> 执行shell
填上我们的启动脚本,这里只是最简单的脚本,大家可以根据实际情况填写:
cd /var/jenkins_home/workspace/flowable_study/target
nohup java -jar flowable_study-1.0-SNAPSHOT.jar >flowable_study.log &2>1 &
注意:我这里是在docker容器内部运行的java项目,大部分实际情况是需要通过jenkins连接到其他服务器去部署项目。大致的流程为:
我这里只做最基本的部署演示,因此就不弄那么麻烦。同时我这里项目的端口号为8888,我在创建容器,使用 docker run 时,已经将容器内的8888端口映射到宿主机的8888端口了。