本文旨在通过基于Jenkins + docker
实现半自动项目部署,话不多说,直接淦。
需要的环境
- 一台虚拟机,我用的公司虚拟机,虚拟机环境下
Jenkins
可以一直起着,不用每次用的时候起,如果没有,本地也可实现,需要开机时启动Jenkins
。 - 虚拟机有
Java
环境(本地的话也需要Java
环境),这里先演示在虚拟机实现
。 - 源码仓库为
码云
一、安装
在Linux
环境中执行以下命令:
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key
sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
安装成功后启动:
systemctl start jenkins
修改Jenkins
配置文件:
vi /etc/sysconfig/jenkins
查看Jenkins
是否启动成功:
systemctl status jenkins
启动成功后状态显示:
启动失败问题:
如果启动失败,报错信息如下:
Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
按照提示使用 systemctl status jenkins.service
命令查看Jenkins服务的状态:
原因分析:
注意红框处标注的位置,/usr/bin/java
是Jenkins
配置文件中的默认Java
路径,而主机上安装的java
路径不是这个,所以需要替换Jenkins
中的配置Java
路径:
which java
查看Java
所在路径并复制:
which java
复制代码
- 修改
Jenkins
配置文件中的Java
路径:
vi /etc/init.d/jenkins
复制代码
找到Jenkins
中的Java
配置路径并修改为步骤1 所查看的当前主机的Java
路径:
- 按
i
键进行编辑,然后保存 退出编辑,再重新启动Jenkins
即可。
二、Jenkins配置
接上面启动成功后,会生成一段随机密码,浏览器访问localhost:8080,访问Jenkins
页面,并复制生成的密码进入。
首页 选择加载插件并下载。
配置项目
1. 安装Gitee
插件,选择Jenkins根目录下的:
Manage Jenkins => Manage Plugins 进入插件下载页
复制代码
2. 查询Gitee
插件并下载:
3. 配置Gitee
信息:
Manage Jenkins => Manage Plugins => Configure System => Gitee配置
复制代码
- 链接名:输入你想要的名字,这个名字无所谓,后面只是做显示作用
Gitee
域名URL
:输入码云完整URL地址,https://gitee.com(码云私有化客户输入部署的域名),一般填https://gitee.com即可
- 证书令牌:右边选项点击
add
,选择jenkins
, Domain
:选择全局凭据(Global credentials)
- 类型
(Kind)
:选择Gitee API
令牌(Gitee API Token)
- 范围
(Scope)
:根据你个人想要这个凭据在哪个范围可使用,我选的是全局 Gitee APIV5
私人令牌(Gitee API Token)
:输入你的码云私人令牌,获取地址https://gitee.com/profile/personal_access_tokens
ID
和描述:随便填- 添加完成后,选择刚自己添加的这个令牌
Advanced
:可配置是否忽略SSL
错误(适您的Jenkins
环境是否支持),并可设置链接测超时时间(适您的网络环境而定),我是忽略掉的了。- 测试连接:点击可以确定自己的配置是否正确,如果不正确,重新配置。
4. 新建项目并选择自由风格:
5. 配置General:
6. 源码管理选择git
:
如出现以下问题:是因为没有将jenkins
所在服务器的公钥配置在码云上
解决:
ssh-keygen -t rsa // 生成公钥
cat /root/.ssh/id_rsa.pub 查看公钥
下图来自码云获取公钥文档截图,详情参考:https://gitee.com/help/articles/4181#article-header0
复制代码
码云上配置:
公钥配置后没有报错。
7.构建触发器:
勾选 Gitee webhook 触发构建
推送代码、评论提交信息、新建Pull Requests
[ci-skip] 指令跳过构建
PR 不要求必须测试时过滤构建
过滤已经构建的 Commit 版本
允许所有分支触发构建
生成的Gitee WebHook 密码 配置到码云 webhook
复制代码
Jenkins
配置:
码云webhook
配置:
8.构建环境:
选择 `Provide Node & npm bin/ folder to PATH`
复制代码
这里如果没有node
环境,需要去配置node
安装:
`Manage Jenkins` => `Global Tool Configuration` =>`NodeJS`
复制代码
9.构建:
最后构建步骤:
选择 Execute Shell
添加构建脚本,这里以docker打包为例,生成docker镜像源
复制代码
Shell
脚本,虚拟机环境下,以下命令没问题,如是windows
本地命令,还需其他,这里先不赘述:
1、按照dockerFile 打包成 指定路径的 镜像
docker build -t [项目名称]:2020-01-21-10-15-11 .
2、推送镜像到仓库
docker push [项目名称]:2020-01-21-10-15-11
-t 标签 tag
【域名】/【空间】/【项目名称】:【标签】
复制代码
至此,即可生成docker
镜像源,发布到容器即可,个人理解实现了CI/CD
中的CI
,自动部署有待完善。
后面如果扩展,全自动部署,在上图build
后,将dist
传到oss
或者nginx
,当然需要其他运维同事配合实现。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END