CI/CD 之 Jenkins + docker + Gitee(码云) 半自动部署

本文旨在通过基于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

启动成功后状态显示:

image.png

启动失败问题:

如果启动失败,报错信息如下:
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服务的状态:

image.png

原因分析:
注意红框处标注的位置,/usr/bin/javaJenkins配置文件中的默认Java路径,而主机上安装的java路径不是这个,所以需要替换Jenkins中的配置Java路径:

  1. which java 查看Java所在路径并复制:
which java
复制代码

image.png

  1. 修改Jenkins配置文件中的Java路径:
vi /etc/init.d/jenkins 
复制代码

找到Jenkins中的Java配置路径并修改为步骤1 所查看的当前主机的Java路径:
image.png

  1. i 键进行编辑,然后保存 退出编辑,再重新启动Jenkins即可。

二、Jenkins配置

接上面启动成功后,会生成一段随机密码,浏览器访问localhost:8080,访问Jenkins页面,并复制生成的密码进入。

首页 选择加载插件并下载。

配置项目

1. 安装Gitee插件,选择Jenkins根目录下的:

Manage Jenkins => Manage Plugins 进入插件下载页
复制代码

image.png

2. 查询Gitee插件并下载:

image.png

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环境是否支持),并可设置链接测超时时间(适您的网络环境而定),我是忽略掉的了。
  • 测试连接:点击可以确定自己的配置是否正确,如果不正确,重新配置。

image.png

4. 新建项目并选择自由风格:

image.png

5. 配置General:

image.png

6. 源码管理选择git:

如出现以下问题:是因为没有将jenkins所在服务器的公钥配置在码云上

image.png

解决:

ssh-keygen -t rsa // 生成公钥
cat /root/.ssh/id_rsa.pub 查看公钥
下图来自码云获取公钥文档截图,详情参考:https://gitee.com/help/articles/4181#article-header0
复制代码

170141_5aa5bc98_551147.png

码云上配置:

image.png

公钥配置后没有报错。

7.构建触发器:

勾选 Gitee webhook 触发构建
     推送代码、评论提交信息、新建Pull Requests
[ci-skip] 指令跳过构建
PR 不要求必须测试时过滤构建
过滤已经构建的 Commit 版本
允许所有分支触发构建
生成的Gitee WebHook 密码  配置到码云 webhook
复制代码

Jenkins配置:

image.png

image.png

码云webhook配置:

image.png

8.构建环境:

选择 `Provide Node & npm bin/ folder to PATH`
复制代码

image.png

这里如果没有node环境,需要去配置node安装:

`Manage Jenkins` => `Global Tool Configuration` =>`NodeJS`
复制代码

image.png

9.构建:

最后构建步骤:
选择 Execute Shell
添加构建脚本,这里以docker打包为例,生成docker镜像源
复制代码

image.png

Shell脚本,虚拟机环境下,以下命令没问题,如是windows本地命令,还需其他,这里先不赘述:

image.png

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
喜欢就支持一下吧
点赞0 分享