当前位置:   article > 正文

Jenkins+Docker+Gitee搭建自动化部署平台_jenkins 工单部署平台

jenkins 工单部署平台

目录

服务器准备

Docker安装

yum 包更新到最新

设置yum源

安装docker

启动和开机启动

验证安装是否成功

Jenkins安装

拉取镜像

创建映射目录

运行镜像

运行出错

修正权限

重新运行镜像

新建安全组,放通8080端口

激活Jenkins

Jenkins插件

Jenkins全局工具配置

自动构建Springboot项目

准备好Springboot项目

Jenkins新建任务和配置


服务器准备

可以选择阿里云、腾讯云、华为云等云服务器,更便捷,当然也可以使用本地电脑开虚拟机。

阿里云活动地址腾讯云活动地址华为云活动地址(点击可访问)

本人购买的阿里云服务器配置为:2 vCPU 2 GiB 3Mbps,即阿里云的优惠活动最低配置的服务器,操作系统选择的centos7.9

当然腾讯云和华为云也不错,可以按需或自己的喜好购买。华为云对新用户有性价比超高的2核4G的配置,不过需要抢。

腾讯云的硬盘更大,带宽更大价格也很实惠,并且是新老客户都可以买的

如果只是个人用来玩一下或者只是有个把个人项目,那就选择一个2核2g或者2核4g的服务器就可以了,即上述最低配置的服务器,当然如果是小团队要使用或者项目比较多,那建议4g/8g起步。

选择合适自己的服务器购买后,等待云服务器完成配置,然后你就可以在你的控制台里面看到自己的云服务器实例了,这里可以自行参考对于云服务厂家的说明书来。

Docker安装

yum 包更新到最新
yum update
设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker
  1. yum install docker-ce  
  2. OR
  3. yum install <自己的版本>  # 例如:sudo yum install docker-ce-17.12.0.ce
启动和开机启动
  1. systemctl start docker
  2. systemctl enable docker
验证安装是否成功
docker version

通过以上命令基本就可以完成docker的安装,本人实操通过,如遇到问题就对于查找相关的解决方案,这里也贴一下docker官网的文档:Get Docker | Docker Docs

Jenkins安装

Jenkins的安装可以参考官网的文档来,安装Jenkins,这里我列出我的安装过程。

拉取镜像
docker pull jenkins/jenkins:lts

这里我使用的是Jenkins的长期支持镜像jenkins/jenkins:lts,但官网的建议是:

使用的Docker映像是jenkinsci/blueocean image(来自 the Docker Hub repository)。 该镜像包含当前的长期支持 (LTS) 的Jenkins版本 (可以投入使用) ,捆绑了所有Blue Ocean插件和功能。这意味着你不需要单独安装Blue Ocean插件。

也就是说jenkinsci/blueocean是长期支持版本+Blue Ocean插件,我由于安装后才看官方文档就没有换了,后续我自行安装了Blue Ocean插件。

创建映射目录
mkdir -p /data/jenkins

这里映射目录你可以按照容器里面的目录/var/jenkins_home来创建也行,自定义也行,看你们自己的规范

运行镜像
docker run -u root -d --name=jenkins -p 8080:8080 -p 50000:50000 -v /data/jenkins/:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:lts

指定-u root可以解决权限不足的问题,映射docker命令可以解决Jenkins在构建镜像时提示docker not found的问题

运行出错

如果运行出错,可以通过docker logs查看运行日志,我这里有遇到下面的错误

[root@iZ7us1hw0oqmxZ ~]# docker logs jenkins
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
修正权限

遇到上面的错误后通过如下命令授权给Jenkins容器内用户权限(Jenkins容器内userid=1000)

chown -R 1000 /data/jenkins/
重新运行镜像
  1. docker run -u root -d --name=jenkins -p 8080:8080 -p 50000:50000 -v /data/jenkins/:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:lts
  2. # 查看容器是否已在运行
  3. docker ps
新建安全组,放通8080端口

由于我们购买的云服务器,一般默认都是关闭所有端口的访问的(除了22端口),所以我们需要进入服务器实例,找到安全组去配置规则

将入方向的8080端口放通,如下:

这样就可以在浏览器通过服务器公网ip:8080访问到你部署的Jenkins了

激活Jenkins

浏览器访问ip:8080 获取Jenkins密钥,可以利用docker logs jenkins日志获取 也可以查看指定文件/data/jenkins/secrets/initialAdminPassword

 

Jenkins插件

使用Jenkins密钥进入登录Jenkins后,默认会提示安装一下常用插件,这里可以选择安装一下,然后就是让创建一个管理员用户,可自行按照提示填写,我这里没有截图,应该没什么问题,这里主要对几个常用Jenkins插件和相关配置做个说明。

进入Jenkins主界面后,插件安装在系统管理(System Manager)里面的插件管理(Plugin),我这里说的基本都是中文,但有可能你进去看到的是英文的界面,自行转化一下。

 

好像是安装了Blue Ocean插件变中文了的,当然实际上是这个插件的功劳Localization: Chinese (Simplified),如果你想要中文显示,可以安装这个插件。

  • Localization: Chinese (Simplified)版本 :Jenkins Core 及其插件的简体中文语言包

  • Blue Ocean:一个美观、功能强大的CI/CD工具,可以在UI界面上配置和管理CI/CD流水线

  • Gitee Plugin:集成gitee需要用到

  • Git Parameter Plug-In:git参数插件,比如想指定构建分支就可以用它来做

  • Role-based Authorization Strategy版本:角色权限控制策略插件,当有多个账号需要控制不同角色账号的操作权限时可以用它来做

  • SSH:ssh插件,有远程连接就需要用它。但是!!!它已经提示有漏洞了,并且提示了3年多还是没有更新,当前最新版本的插件还是5年前的,所以一定不要用它了,需要的话用别的插件代替(代替插件我暂时没有研究,后续如有用到我补充进来)

 

上面的插件的使用可以点击链接进去看看文档怎么写的,或者直接百度相应插件名称有很多教程,这里就不赘述了

Jenkins全局工具配置

安装完上面的插件后,还需要对Jenkins做一个全局工具的配置,需要运行Java程序,肯定少不了Jdk,Maven等,所以我们需要安装配置它们。

选择新增JDK,命个名,例如JDK1.8,选择对应版本,选择从java.sun.com安装,并输入自己的Oracle账号密码,下面截图有红色报错请忽略,正常不会报错的。

 

滑动界面到下面,选择Maven安装,选择合适的版本,从Apache安装

 如果网络不好也可以下载好安装包上传服务器,选择解压.zip/.tar.gz安装

 

点击保存,Jenkins就会自动安装JDK,Maven了。

自动构建Springboot项目

准备好Springboot项目

可以使用idea或者在https://start.spring.io官网生成一个demo(现在已经不支持生成Java8的了,可以生成后自己再改版本就好了),或者自己写一个demo,或者从其他项目复制一份,随便改改,方法多种多样,这个相信大家都没有问题。

这里主要是要通过maven插件或者通过Dockerfile描述文件将项目打包成镜像,我这里是通过Dockerfile文件来打包的,再项目根目录新建Dockerfile文件,内容如下:

  1. FROM openjdk:8-jdk-alpine
  2. MAINTAINER liangchen
  3. ENV TZ=Asia/Shanghai
  4. #这里时区相关命令注释是因为构建慢,这个命令是可用的
  5. #RUN apk update \
  6. # && apk add tzdata \
  7. # && echo "${TZ}" > /etc/timezone \
  8. # && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \
  9. # && rm /var/cache/apk/*
  10. # /tmp 目录作为容器数据卷目录,SpringBoot内嵌Tomcat容器默认使用/tmp作为工作目录,任何向 /tmp 中写入的信息不会记录进容器存储层,从而保证容器存储层的无状态化
  11. # 在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
  12. VOLUME /tmp
  13. ADD target/jenkinsdemo-0.0.1-SNAPSHOT.jar app.jar
  14. # 设置随机数生成器的算法为 /dev/./urandom,以提高随机性和性能
  15. ENTRYPOINT ["java","-Xmx128m","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.profiles.active=test"]
  16. EXPOSE 8081

 

面时区命令我注释了,但实际是可用的,相关Docker时区问题可以看看这篇文章:Docker时区问题,看这一篇就够了-CSDN博客

Jenkins新建任务和配置

新建任务,起个名字,一般用项目名,选择构建一个自由风格的软件项目

配置Git源码地址,账号密码

构建步骤,选择调用顶层Maven目标,使用maven给java项目编译打包,这里的maven版本就是上面配置的版本

 这个时候就可以保存,点击构建,测试是否能正常打包了,点击构建历史->控制台输出,查看构建日志,如出现如下内容则为正常

注意:这里构建可能很慢,是从maven默认的仓库下载的依赖,可以更改maven的默认中央仓库为阿里巴巴的maven仓库,找到服务器/data/jenkins/tools/hudson.tasks.Maven_MavenInstallation/maven3.6.3/conf目录,在settings.xml里面加入如下镜像地址:

  1. <mirrors>
  2. <mirror>
  3. <id>nexus-aliyun</id>
  4. <mirrorOf>central</mirrorOf>
  5. <name>Nexus aliyun</name>
  6. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  7. </mirror>
  8. </mirrors>

之后构建就会从aliyun下载依赖了,速度快上10倍。

然后回到任务配置界面,再新增构建步骤

脚本内容,根据需要修改

  1. #进入到jenkins的项目工作目录
  2. cd /var/jenkins_home/workspace/jenkinsdemo
  3. #停止容器 || true表示执行失败继续往下执行,避免第一次没有该容器执行失败
  4. docker stop jenkinsdemo || true
  5. #删除容器
  6. docker rm jenkinsdemo || true
  7. #删除镜像
  8. docker rmi jenkinsdemo || true
  9. #docker构建打包生成镜像
  10. docker build -t jenkinsdemo .
  11. #运行镜像
  12. docker run -d -p 8081:8081 --name jenkinsdemo jenkinsdemo:latest

保存,再次构建,正常的话就会是这样的日志。

至此构建部署完毕,可以通过浏览器访问ip:8081,测试是否能访问到项目。

 完美!嗯?完美吗?当然不,还有很多可以优化的地方,但这里至少从0-1了,把基本的架子搭建起来了,后续再来分享我优化的地方,比如实现提交代码自动构建,比如实现构建通知,比如通过域名来访问不暴露ip端口等等。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/488056
推荐阅读
相关标签
  

闽ICP备14008679号