Jenkins部署Java web应用极简指南

Jenkins作为CI/CD方面的流行技术,同时还相对(k8s之流)易于安装,不自己整一整实在是可惜。
本文介绍jenkins从零到部署一个简单java web应用的过程,力求简单优雅。如果想要跟随本文操作学习,准备如下:

  • 一个linux环境(虚拟机或者云服务器,windows当然也可以,不过windows有什么好玩的啊)
  • 安装好docker、git、java、maven、nginx(可选)

本文最终希望实现的效果如下:

  • jenkinsfile(pipeline定义文件)和dockerfile(docker构建镜像的文件)都在git代码仓库中
  • jenkins构建帮助完成如下步骤:
    1. 服务器(docker的宿主机)拉取git代码
    2. 在服务器(docker的宿主机)上完成编译打包
    3. 基于仓库中拉取的dockerfile构建docker镜像
    4. 使用上一步的镜像启动一个docker容器
      这样从推送代码到服务更新,中间只有在jenkins中点击构建这一个操作(这个操作甚至也可以不用,可以配置jenkins监控仓库的代码变更,自动完成构建)

安装Jenkins

Jenkins官网主要介绍了三种方式来安装Jenkins

  • 包管理工具安装
  • war包安装
  • docker安装

包管理器的安装方式虽然方便,但是活都让别人干了,不同系统的安装也可能不太一样,有点隔靴挠痒的感觉,故没有采用。
笔者一开始尝试docker安装,但是后来发现docker方式有诸多麻烦,首先docker中安装的Jenkins需要操作docker。第一种方式docker out of docker,Jenkins在一个docker容器中,需要操作宿主机的docker,设置起来颇为麻烦,也没有找到完整的教程,撇下不谈。
另一种方式是使用docker in docker(Dind),Jenkins官网介绍了这种方式,就是在宿主机的docker中再以(Dind镜像)启动一个docker,这样宿主的docker容器列表里有一个提供Jenkins的容器,还有一个提供docker的容器,再通过socket挂载的方式,让Jenkins容器中的Jenkins可以使用兄弟容器中的docker。
此时宿主机上执行docker ps 效果如下,一个docker:dind镜像启动的容器,直译就是docker中的docker,一个jenkinsci/blueocean镜像启动的容器,里面是jenkins服务。
宿主机上执行docker ps的效果图
笔者最终没有使用这种方式,一是因为这样就有了内外两个docker,他们的镜像缓存是不共享的,内部docker启动后,由于jenkins操作的是内部docker,最终的应用是在docker中的docker中的容器中运行的,性能损耗很大,需要的基础镜像和打包所需的jar包都需要重新下载,相当麻烦,最终没有使用这种方式。
最终选择的是war包的方式安装,首先下载Jenkins的war包,然后很简单,按照官方:

java -jar jenkins.war

或者使用自己写的更复杂一点的,笔者的供参考,部分参数请自行去掉或替换:

nohup java -Xms${opt_xms} -Xmx${opt_xmx} -Xmx${opt_xmx} -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/jenkins.hprof -jar ${jar_dir}/${jar_name} --httpPort=${opt_port} --prefix=/jenkins >> ${log_path}/${project_name}.log &

然后访问 http://localhost:8080就可以解锁Jenkins了。

这里因为jenkins使用了hudson,所以这个war包既可以java -jar的方式启动,也可以放到web容器中启动

解锁jenkins需要一个密码,密码打印在启动jenkins的控制台输出里了,或者参照官网文档找找。我的文件是在这里的:

cat /home/username/.jenkins/secrets/initialAdminPassword 

username换成你的linux用户名。

配置Jenkins

配置访问路径和端口号

如果希望通过 http://localhost:9090访问Jenkins:

java -jar jenkins.war --prefix=/jenkins --httpPort=9090

如果修改了jenkins的路径,需要在系统管理->系统配置中修改如下配置:
修改路径配置
这个配置项里需要加上路径配置,端口也是需要的,图中因为我使用了nginx转发至80端口,所以省略了端口号,nginx转发相关,稍后再聊

配置Jenkins用户

通过初始化密码登录后第一件事就是(系统管理->管理用户)创建一个用户,然后(系统管理->全局安全配置)设置授权策略,登录以后才可以操作jenkins,这里我还选择了匿名用户可读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值