一、centos安装jenkins

1.1 安装jenkins

1. Jenkins是一个Java应用程序,因此第一步需要确认具有java环境

2.下一步是启用Jenkins存储库。为此,请使用以下curl命令导入GPG密钥:



curl --silent --location http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo | sudo tee /etc/yum.repos.d/jenkins.repo



并使用以下命令将存储库添加到系统:



rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key



3.启用存储库后,键入以下命令安装最新的稳定版Jenkins:



yum install jenkins



安装过程完成后,启动Jenkins服务:



systemctl start jenkins



要检查它是否已成功运行:



systemctl status jenkins



你应该看到类似的东西:




jenkins 脚本判断镜像是否存在 jenkins远程构建镜像_Jenkins


最后启用Jenkins服务以启动系统启动。


systemctl enable jenkins


1.2 调整防火墙

如果要在有防火墙的远程CentOS服务器上安装Jenkins,则需要添加8080。

使用以下命令打开必要的端口:


firewall-cmd --permanent --zone=public --add-port=8080/tcp
 firewall-cmd --reload


1.3 设置Jenkins

要设置新的Jenkins安装,请打开浏览器并键入域或IP地址,然后输入端口8080:

http://your_ip_or_domain:8080

将出现类似于以下内容的屏幕,提示您输入在安装期间创建的管理员密码:


jenkins 脚本判断镜像是否存在 jenkins远程构建镜像_docker_02


使用以下命令在终端上打印密码:


cat /var/lib/jenkins/secrets/initialAdminPassword


您应该看到一个32个字符的长字母数字密码,如下所示:

2115173b548gdas2a203ee99a8732a32

从终端复制密码,将其粘贴到管理员密码字段中,然后单击Continue。


jenkins 脚本判断镜像是否存在 jenkins远程构建镜像_Jenkins 设置镜像_03


在下一个屏幕上,系统将询问您是要安装建议的插件还是选择特定的插件。单击该Install suggested plugins框,安装过程将立即开始。


jenkins 脚本判断镜像是否存在 jenkins远程构建镜像_python_04


安装完成后,系统将提示您设置第一个管理用户。填写所有必填信息,然后单击Save and Continue。


jenkins 脚本判断镜像是否存在 jenkins远程构建镜像_python_05


在下一页中,将要求您设置Jenkins实例的URL。URL字段将填充自动生成的URL。


jenkins 脚本判断镜像是否存在 jenkins远程构建镜像_jenkins 脚本判断镜像是否存在_06


要完成设置,请单击Save and Finish按钮确认URL 。


jenkins 脚本判断镜像是否存在 jenkins远程构建镜像_Jenkins 设置镜像_07


最后,单击该Start using Jenkins按钮,您将被重定向到以前面一个步骤中创建的管理员用户身份登录的Jenkins仪表板。


jenkins 脚本判断镜像是否存在 jenkins远程构建镜像_python_08


如果你已达到这一点,那么你已经在CentOS系统上成功安装了Jenkins。


二、安装docker

2.1 移除旧docker


sudo yum remove docker 
  docker-client 
  docker-client-latest 
  docker-common 
  docker-latest 
  docker-latest-logrotate 
  docker-logrotate 
  docker-selinux 
  docker-engine-selinux 
  docker-engine


2.2 安装docker依赖库


yum install -y yum-utils device-mapper-persistent-data lvm2
 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
 yum install -y docker-ce


2.3 配置docker


systemctl enable docker
 systemctl daemon-reload
 systemctl start docker


2.4 查询docker版本


docker --version


2.5 安装 docker-compose

docker-compose是一个python编写的docker编排工具,后面的启动服务都是以docker-compose来启动,这样就不需要每次都手动输入docker启动命令的各项配置参数,简化操作。首先安装pip:


#安装 python36
 yum install python36 -y
 #查看版本
 python36 --version
 #创建软链
 ln -s /usr/bin/python3.6 /usr/bin/py3
 ln -s /usr/bin/python3.6 /usr/bin/python3
 #安装pip3
 yum install openssl-devel -y
 yum install zlib-devel -y
 #安装 setuptools
 wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
 tar -zxvf setuptools-19.6.tar.gz
 cd setuptools-19.6
 python3 setup.py build
 python3 setup.py install
 #安装 pip3
 wget https://github.com/pypa/pip/archive/9.0.1.tar.gz
 tar -zvxf 9.0.1.tar.gz
 cd pip-9.0.1
 python3 setup.py install
 #查看 pip3版本
 pip3 --version
 #升级pip3
  
 pip3 install --upgrade pip


#安装docker-compose


pip3 install docker-compose


#查看版本


docker-compose version


2.6 项目添加 Docker 支持

在pom文件加上插件:


jenkins 脚本判断镜像是否存在 jenkins远程构建镜像_docker_09


  • imageName指定了镜像的名字,本例为 forep/eureka-server
  • dockerDirectory指定 Dockerfile 的位置
  • resources是指那些需要和 Dockerfile 放在一起,在构建镜像时使用的文件,一般应用 jar 包需要纳入。
  • buildArgs是指打包后的名称

在dickerDirectory的路径下编写Dockerfile文件


jenkins 脚本判断镜像是否存在 jenkins远程构建镜像_python_10


三、Jenkins使用

3.1 安装插件

在 系统管理 > 插件管理 > 可选插件中搜索并安装docker、maven、svn等相关插件

3.2 新建任务

选择构建Maven项目


jenkins 脚本判断镜像是否存在 jenkins远程构建镜像_Jenkins 设置镜像_11


3.3 源码管理

选择svn地址


jenkins 脚本判断镜像是否存在 jenkins远程构建镜像_docker_12


3.4 构建镜像后操作(将镜像推送到公有云仓库)


jenkins 脚本判断镜像是否存在 jenkins远程构建镜像_Jenkins_13


#脚本代码:
#####
##
##   构建镜像之后推送镜像到公有云镜像仓库
##
#####

##版本号
_tag=1.0
##镜像名称
_imageName=xxx
##仓库账号
_username=xxx
##仓库密码
_password=xxx
##仓库域名
_domain=xxx
##仓库地址
_registry=xxx


##获取镜像id
_imageId=`docker images | grep ${_imageName} | awk '{print $3}'`
##登录推送镜像
echo "${_password}" | docker login --username=${_username} --password-stdin ${_domain}
docker tag ${_imageId} ${_domain}/${_registry}/${_imageName}:${_tag}
echo '====================开始推送镜像=================='
docker push ${_domain}/${_registry}/${_imageName}:${_tag}
echo '====================推送镜像完成=================='

##启动镜像
docker run -d -p 9030:9030 --network=xxx --name=xxx --restart=always xxx

##删除tag后的镜像
docker rmi ${_domain}/${_registry}/${_imageName}:${_tag}
##删除所有none镜像
none_images=`docker images -f "dangling=true" -q`
[ ! -z "$none_images" ] && docker rmi $none_images