这是我参与11月更文挑战的第26天,活动详情查看:2021最后一次更文挑战
本文涉及一种在容器中部署 jenkins 服务的方法,后续将其与 gitlab 配合以实现 CICD 功能。其目的是为了在实际工作中使用代码托管及自动化操作。
一、引言
因工作需要,需部署 jenkins 服务器进行测试。与网上几分钟即可部署的文章相比,本文更注重个人的实践记录。本文与前面的 gitlab 有一定的关联。
二、技术小结
- gitlab 有官方的 Docker 镜像。本文直接使用之。
- 使用 docker-compose 部署,指定端口。注意挂载 docker.socket文件。
- 首次登录会提示输入随机文件,一旦输入并设置成功后,不再提示。
- 各种配置慢慢补充。
三、部署gitlab服务
3.1 部署脚本
本文使用 docker-compose 部署,在测试阶段,使用了多个版本。此处是比较简单的版本,用于初次使用。
1 | yaml复制代码version: '2' |
注意几点:
- 脚本中指定了
docker.sock
的路径,后续可以在jenkins用docker构建。 - jenkins 数据目录在本目录下的
jenkins_home
目录,其权限修改为1000,命令为sudo chown -R 1000 jenkins_home
。 - 根据实际环境,选择了 centos7 版本的 jenkins。
3.2 运行
运行命令如下:
1 | 复制代码docker-compose up -d |
注:jenkins 的启动比 gitlab 快很多。
停止命令如下:
1 | 复制代码docker-compose down |
运行过程中会出现初始密码:
1 | markdown复制代码Jenkins initial setup is required. An admin user has been created and a password generated. |
四、初次配置
服务启动后,需要进行必要的配置,因此在本文一并给出。
4.1 登录
初次登录时,会提示输入管理员密码,如图1所示:
在 docker 启动时出现有密码,也可以直接在页面所示文件中找到。
4.2 安装插件:
选右侧自定义安装,注:默认也勾选了部分插件。
安装过程图示:
注:笔者在实践中,遇到不可抗拒因素,导致网络不稳定,经常安装不成功,如果尝试多次失败,可以跳过不安装。
五、一些配置
5.1 git 仓库地址问题
配置了项目,构建,提示:
1 | css复制代码stderr: error: RPC failed; result=22, HTTP code = 404 |
原因及解决:
1 | go复制代码在设置项目git地址时,必须添加`.git`后缀,否则地址不认。 |
5.2 Publish over SSH
在插件管理界面中搜索Publish Over SSH
,并安装之。
在配置界面中进行配置。如下:
注:需测试是否能正常连接。
在具体项目构建后操作添加Send build artifacts over SSH。源文件如果带路径的话,默认情况目标目录也带有。比如源文件为
taget/a.out,目标目录为
/tmp,则目标文件路径为
/tmp/target/a.out`。
5.3 邮件通知
本节使用腾讯企业邮件测试(感谢腾讯为个人域名提供免费的邮箱服务)。此为前提。
使用插件Email Extension Plugin
,在插件管理页面搜索,确认是否安装:
系统管理->系统配置。
设置系统管理员邮件地址:
第三方邮件通知插件
触发条件:
再设置邮件模板。
修改默认标题(Default Subject),示例:
1 | swift复制代码$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS! |
修改默认内容(Default Content),根据网上资料修改的示例:
1 | xml复制代码$PROJECT_NAME 项目第 # $BUILD_NUMBER 次构建 - $BUILD_STATUS |
构建日志:${BUILD_LOG, maxLines=100}
自带邮件通知插件
在“邮件通知”处添加 SMTP 服务器,此处为smtp.exmail.qq.com
。点击高级,设置邮件账号和密码,勾选”SSL协议“、”使用 TLS“,端口设置为465。
最后进行邮件发送的测试,输入接收者邮箱,点击测试即可。提示Email was successfully sent
表示发送成功。
邮件接收:
注:#10表示是第10次发送,表示点击测试的次数——包括失败的。
发送测试邮件出错及解决方法:
1 | javascript复制代码提示: |
某次发送提示:
1 | vbnet复制代码Sending email for trigger: Always |
结论:看信息是发送不成功,但能接收邮件,暂时不管。
本文转载自: 掘金