Setup and use Jenkins server

这个文档以你已经有了一台CentOS 7或者任何你觉得可以用的Linux发行版可以用作为前提,CentOS 7怎么装、怎么配,看这里 How to install CentOS7 on a Windows 10 PC without a CDROM 如果看完还不会我就不管了 不要问我

 
 

1.安装docker

这里我们不打算下载安装包来部署Jenkins server, 而直接使用Jenkins docker image来搞,快捷方便,价格便宜量又足

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过 uname -r 命令查看你当前的内核版本
$ uname -r

使用 root 权限登录 Centos。确保 yum 包更新到最新。
$ sudo yum update

卸载旧版本(如果安装过旧版本的话)
$ sudo yum remove docker docker-common docker-selinux docker-engine

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

设置yum源
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

可以查看所有仓库中所有docker版本,并选择特定版本安装
$ yum list docker-ce --showduplicates | sort -r

安装docker
$ sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0

启动并加入开机启动
$ sudo systemctl start docker $ sudo systemctl enable docker

验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
$ docker version

 
 

2.获取镜像

Jenkins官方docker镜像: https://hub.docker.com/r/jenkins/jenkins
To use the latest LTS: docker pull jenkins/jenkins:lts
To use the latest weekly: docker pull jenkins/jenkins

这里我直接用了lts的
$ docker pull jenkins/jenkins:lts

700MB大小,下完之后查看一下
$ docker images

查看一下目前已有的containers,应该没有才对
$ docker ps -a

 
 

3.配置和启动

先把container启动起来,需要修改什么之后再commit回去就好
$ docker run -p 80:8080 -p 50000:50000 --name jenkins_mod -u root -v jenkins:/var/jenkins_home -v /root:/root -v /opt:/opt -v /etc/localtime:/etc/localtime test/jenkins:v1

这里把本地下docker/volume下的目录映射到docker的/var/jenkins_home,本地的/root, /opt, /etc/localtime映射到docker的对应目录,酱紫可以免去各种dependency的安装和配置,另外8080映射到外部80, 50000映射到外部50000,并且指定root来执行,给容器起名叫jenkins_mod因为接下来可能会修改一些配置并且commit回去以后使用

 
 

4.配置Jenkins

启动之后在本机或者另一台同网段的机器浏览器通过ip:port来直接访问Jenkins服务,记得会提示通过token来第一次验证权限,跟着instruction做就好,进入之后创建第一个管理员账户密码

 
 

5.使用

配置自动构建

  • 新建一个job
  • 配置你需要的Source Code Management,这里我们用的bitbucket所以选git,输入正确的仓库地址和crededntials,这个要提前在服务端设置好,branch就选master,save
  • 可以在系统管理→Managed files中添加你的应用需要的对应不同情况和环境的配置文件,这里针对我的测试springboot项目,因为配置文件完全封在jar里,因此在这里添加文件在build过程中进行自动替换非常实用
  • 在Build Environment中配置你想要替换的配置文件以及目标路径
  • Build中设置自己的shell脚本或命令,Jenkins worker会在构建时自动执行你配置好的东东,这里我的测试springboot项目使用gradle进行构建,而且暂时没有使用Jenkins自带的gradle插件,而是自行设置环境变量自行通过shell进行需要的行为,作为示例
cd source/TestSprintBoot
#export JAVA_HOME=/opt/java/jdk1.8.0_211
#PATH=$PATH:$HOME/bin:/opt/java/gradle-3.4/bin:/opt/java/jdk1.8.0_211/bin
#export PATH
. /root/.bash_profile
gradle -v
sleep 1s
gradle clean
sleep 1s
gradle build

至此,保存并回到workspace页面,右键点击项目并且通过立即构建可以触发这个job,那么目标的jar就会最终产生

配置自动部署

光有自动构建没毛用,还需要配置自动部署才省时省力

  • 在Post-build Actions中配置目标归档的文件也就是我们springboot的jar,并且增加Send build artifacts over SSH步骤,在其中选择你之前配置好的SSH hosts中的一个来进行自动部署。Exec command中可以自由发挥添加你需要进行执行的shell
#!/bin/sh
pid=`lsof -i:YOUR_PORT | awk '{print $2}' | tail -n 1`
if [ -n "$pid" ]
then
    kill -9 $pid
fi
sleep 10s

cd /usr/testSpringBoot
rm -rf console.output
rm -rf logs/*
chmod 644 com.test.springboot.application-1.0.jar
sleep 1s

nohup /usr/java/jdk1.8.0_60/bin/java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=YOUR_DEBUG_PORT,suspend=n -jar com.test.springboot.application-1.0.jar > console.output 2>&1 &
sleep 5s
  • 保存,触发一个新的build,这时候就坐享其成吧

 
 

6.Miscellaneous

Jenkins的pipeline和job可以任意自由创建、组合搭配和配置,整合包括sync code, build, deployment, automation test和report等,借以搭建完整全面的CI/CD环境,结合TDD就会使工作事半功倍,实乃居家旅行、杀人灭口的必备工具

  • 双网卡(有线连LAN无线连WAN)的机器如果来运行jenkins注意route配置不当可能会导致无法联网或无法同步code
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值