先安装jenkins。
注意
官方的docker仓库是jenkins/jenkins!
安装插件。较好的源:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,插件管理中点击高级进行配置。
必备插件:
- Publish Over SSH
- Git
- Credentials
- Localization: Chinese (Simplified)
在全局工具配置中配置JDK
,MAVEN
路径。
在系统配置中配置MAVEN_BIN
的路径,如:/path/bin。并修改maven的settings.xml文件,修改镜像源、本地仓库位置(和私服配置,若有)。同时配置Publish Over SSH
的相关设置。新增SSH Servers,Name随意,Hostname写入服务器IP,Username写入ssh的用户名,Remote Directory填入远程服务器项目的部署位置。点击高级,勾选Use password authentication, or use a different key
,然后填入ssh用户名对应的密码。Port视情况而定,Timeout默认5分钟,项目较大建议同时调大此数值,单位毫秒。(此配置依赖Publish Over SSH插件。)
在凭据管理中加入git的账号信息。(此项依赖Credentials插件,若使用密钥登录,则使用ssh-keygen -t rsa
,一路回车进行生成,公钥写入Credentials管理中,私钥写入GitLab的设置中,GitLab需要root权限进入设置进行配置)
至此,可以开始具体项目的构建。
新增任务,加入自由风格的,取个名字,最好和Gitlab项目的名称相同。点击确定。
源码管理,选择Git,填写Git仓库地址和选择对应凭据。Additional Behaviours
项填写master
。(master看情况,写入要部署的分支名即可)
构建步骤,增加执行Shell,写入${MAVEN_BIN}/mvn clean package -Dmaven.skip.test=true
。这里的变量来自第四步的系统配置。这里只进行了打包,具体私服的配置视情况拓展。
再加入构建步骤,选择Send files or execute commands over SSH,Source files
写入jar包的位置,默认是由target路径的(编写Dockerfile同样需要注意此问题),target/demo-0.0.1-SNAPSHOT.jar。然后点击Add Transfer Set
,再增加一个步骤,Source files
写入Dockerfile,Exec command
写入
cd ${TARGET_PATH} docker build -t cicd-test . docker image prune -f
TARGET_PATH同样来自第四步的配置,代表项目的部署位置。(注意:此文件路径需要提前建好!)
然后build项目,之后删除所有虚悬镜像。再次点击Add Transfer Set
,用于传输docker-compose.yml,Source files写入docker-compose.yml,Exec command写入
cd ${TARGET_PATH} docker-compose down docker-compose up -d
还是进入项目部署路径,先停掉之前的部署,再启动新构建的程序。(注意:所有Exec command
中,必须一条命令一行,不要写在同一行然后用&&链接)