介绍
介绍
前面我们学习了各种软件的安装、各种数据库的安装、各种程序运行环境的安装,还学习了docker-compose的使用,基于rancher的k8s的使用,还有gitlab和git的安装和使用。基本上使用这些技术完全可以自己搭建一整套web平台的运行环境了。
不过,这里面存在一个问题,就是每次福哥要去更新服务里的代码,还是要登录到服务器上去敲命令完成代码的更新,这样不仅不够安全,维护成本也很大,工作效率很低。
那么有什么办法改善呢?答案就算使用Jenkins工具!
今天福哥就要带着大家学习使用Jenkins工具来帮助我们在服务部署、服务升级过程中,提高安全性,降低维护成本,提高工作效率!
环境
镜像版本 | jenkins/jenkins:2.401.1 |
操作系统 | CentOS 7 x86_64 2009 |
服务器 | TFCentOS7x64、TFCentOS7x64Node1 |
IP | 192.168.168.68、192.168.168.69 |
端口 | 1180 |
安装
Dockerfile
镜像
福哥选择的是jenkins/jenkins:2.401.1这个基础镜像。
现在Docker Hub不能用了,福哥也不能给大家发链接了,唉~
拉取镜像jenkins/jenkins:2.401.1并且添加到registry.tongfu.net:5000私有仓库里面。
docker pull jenkins/jenkins:2.401.1 docker tag jenkins/jenkins:2.401.1 registry.tongfu.net:5000/jenkins/jenkins:2.401.1 docker rmi jenkins/jenkins:2.401.1 docker images | grep 'jenkins/jenkins'
Jenkins数据目录
创建Jenkins数据目录/tongfu.net/data/docker/data/jenkins,映射Jenkins主目录。
mkdir /tongfu.net/data/docker/data/jenkins chown 1000.1000 /tongfu.net/data/docker/data/jenkins
启动容器
福哥给tfjenkins容器分配了1180这个web端口。
docker run -tid \ --name tfjenkins \ -h tfjenkins \ --net tfnet \ -p 1180:1180 \ -e JENKINS_OPTS="--httpPort=1180" \ -v /tongfu.net/data/docker/data/jenkins:/var/jenkins_home \ registry.tongfu.net:5000/jenkins/jenkins:2.401.1
使用
初始化
打开浏览器,输入网址http://192.168.168.68:1180。
第一步解锁Jenkins,这里要的默认的管理员密码。
可以去到tfjenkins容器里面查看红色文字路径指向的文件内容,也可以直接查看tfjenkins容器的日志。
docker logs tfjenkins
点击“选择插件来安装”。
先点“无”去掉默认勾选的插件。
福哥选择的是以下几个插件,大家可以根据自己的需要选择更多插件。
开始安装了!这里有可能会失败,多试几次就可以了!
这一步系统建议创建一个管理员用户,福哥不打算创建其他用户,直接使用admin账号。
确认一下Jenkins的访问地址,这里不用改。
初始化完成了!点击“开始使用Jenkins”按钮进入Jenkins里面~
创建SSH密钥
切入tfjenkins容器里面,创建一个SSH密钥,用来给Jenkins访问GitLab服务器使用。
ssh-keygen -o -t ed25519 -b 4096
查看刚刚创建的SSH密钥的公钥。
cat /var/jenkins_home/.ssh/id_ed25519.pub
将SSH公钥添加到GitLab里面。
克隆一下tfphp项目测试一下~
cd /tmp git clone git@tfgitlab:root/tfphp.git
配置Jenkins凭据
将SSH私钥添加到Jenkins的凭据里面,这样Jenkins就可以访问GitLab服务器了。
鼠标放到Dashboard上面会在右侧出现一个向下的箭头,展开菜单选择“Manage Jenkins”>“Credentials”。
在“Stores scoped to Jenkins”里的“System”那一行的“(global)”里面点击“Add credentials”按钮添加凭据。
Kind“SSH Username with private key”,Scope“Global...”,ID、Description、Username都填写“jenkins”。
查看tfjenkins容器里的SSH密钥的私钥。
cat /var/jenkins_home/.ssh/id_ed25519
点击“Private Key”里的“Enter directly”单选框,然后点击“Add”按钮,把tfjenkins容器里的SSH密钥的私钥内容复制进来。
点击最下面的“Create”按钮完成凭据的添加!
可以看到刚刚添加的System下的Global凭据出来了!
添加自由任务tftest
添加一个任务,测试一下!
任务名称“tftest”,类型“Freestyle project”。
点击“OK”完成任务的创建,进入任务配置界面。
配置自由任务tftest
这里只配置一下“Source Code Management”里的“Git”即可。
Repository URL“git@tfgitlab:root/tfphp.git”,Credentials“jenkins...”。
点击“Save”按钮完成任务的配置。
执行自由任务tftest
点击任务tftest左侧的“Build Now”按钮,立即执行任务tftest。
等一下,系统就开始执行任务tftest了。
执行完成了,点进去看看执行情况!
这里是比较具体的执行情况信息。
点击左侧的“Console Output”按钮,可以查看任务tftest的具体执行过程信息,包括执行了哪些命令,执行命令的情况等等。
设置时区
刚刚发现这个时间又是UTC时间,现在我们改一下时区!
Jenkins的时区是可以给每个用户单独设置的,我们现在把admin的时区设置成Asia/Shanghai。
点击右上角的“admin”右侧的向下的箭头,选择“Configure”。
在“User Defined Time Zone”里设置时区为Asia/Shanghai。
点击“Save”按钮保存一下。
点击“Dashboard”回到首页!
点击“tftest”进入任务tftest页面,可以看到刚刚执行的构建的时间正常了!
总结
今天福哥带着大家学习了Jenkins软件的安装使用,大家可以使用Jenkins管理自己的项目的构建和部署了。
但是,虽然我们学会了使用Jenkins直接拉取GitLab上面的项目文件,却不知道如何把拉取到的项目文件复制到docker-compose或者k8s搭建的运行环境里的容器里面。如果没法把项目文件复制到运行环境里的容器里面的话,那这个Jenkins就完全成了摆设了。
所以,Jenkins当然不是用来当摆设的,Jenkins是专门用来实现项目文件拉取、项目构建、服务部署的工具,把项目文件复制到运行环境里的容器里面肯定是可以的。
下一课,福哥会教给大家如何使用Jenkins动态构建部署docker-compose运行环境里的服务!敬请期待~