linux发布Java程序Jenkins(二)

一、环境说明

服务所需软件部署地址
持续集成服务Jenkins 2.319.1、Maven3.6.3,Git47.107.225.126
应用测试服务JDK1.847.107.225.126

二、安装配置 

1、安装git

查看是否已经安装
git --version
使用yml安装
yum -y install git

2、安装jdk1.8

 

查看当前是否有安装jdk

  • maven和项目,jekenis都java项目肯定需要java环境

java -version

安装jdk1.8

yum install java-1.8.0-openjdk* -y
  • 安装完以后,默认的路径是: /usr/lib/jvm

  • 提醒:建议不要安装jdk11。

PATH=/bin:/www/download/jdk8/jdk1.8.0_281/bin

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/www/download/jdk8/jdk1.8.0_281/bin

3、安装maven依赖

去官网下载自己想要的maven包

地址: Maven – Download Apache Maven

各版本地址:Index of /dist/maven/maven-3

我以apache-maven-3.6.3-bin.tar.gz为例,

下载地址: https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

将maven上传liunx服务器上,当前的安装目录root如下:cd /www/servers

mkdir -p /www/servers/maven
cd /www/servers/maven

上传完毕,执行解压

wget https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

如果下载很慢建议用手动的方式上传到/www/servers/maven

#解压文件
tar -xzvf apache-maven-3.6.3-bin.tar.gz
#创建目录,用于存放maven
mkdir -p /opt/maven
#将解压完的maven文件剪切到刚刚创建的目录下
mv apache-maven-3.6.3/* /opt/maven 

建议配置:阿里云的maven镜像。仓库服务 步骤:在conf/setttings.xml中配置如下:  

<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>aliyunrepositoty</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

配置maven环境变量

安装完maven,还需要配置java和maven的环境变量。就放在文件的尾部即可

首先打开环境配置文件

vim /etc/profile

配置内容

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk 
export MAVEN_HOME=/opt/maven 
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

执行保存生效

source /etc/profile 

查看maven版本

mvn -v 

4、安装jenkins

官网地址:Jenkins download and deployment

如果之前有安装过jenkins的可以用下面方式进行卸载在操作上面的命令:

cd /root
#卸载之前残留的jenkins
rpm -e jenkins
find / -iname jenkins | xargs -n 1000 rm -rf
#查看是否卸载完毕
rpm -ql jenkins

centos安装jenkins如下  

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install epel-release # repository that provides 'daemonize'
yum install jenkins

在安装时出现了一下问题,当我们使用 wget命令下载不安全的https 域名下的内容时会提示如下内容:

 cannot verify pkg.jenkins.io's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’
 Issued certificate has expired. To connect to pkg.jenkins.io insecurely, use `--no-check-certificate'.
12

修复方法

sudo yum install -y ca-certificates

jenkins配置

jenkins默认安装的配置目录在:/etc/sysconfig/jenkins

#安装完毕,进入到jenkins配置文件内,配置端口及用户名
vim /etc/sysconfig/jenkins
#找到这两行,修改成指定的端口
JENKINS_USER="用户名" 
#示例: root
JENKINS_PORT="端口号" 
#示例: 9999
#修改完毕,执行保存
wq!
#保存完毕,启动jenkins服务
systemctl start jenkins
#查看启动状态
systemctl status jenkins

注意在启动过程中出现了java环境找不到问题:解决方案https://blog.csdn.net/zwjzone/article/details/125170820
创建软链接 ln -s /usr/local/java/jdk1.8.0_291/bin/java /usr/bin/java
还存在一个问题是修改了端口号不生效,如下图,最终解决进入红框圈选的文件进行修改端口号,再systemctl daemon-reload

 

三、启动Jenkins

启动完,等待一分钟左右,访问刚刚配置的地址: http://服务器ip:刚刚配置的端口号/ 示例: http://47.107.225.126:8088/

提醒:8088端口必须在你对应的云服务器的安全组中开放8088的端口和 上面docker链接的2280的端口都要将其开放。  

解锁 Jenkins

根据提示:在服务器输入

cat /var/lib/jenkins/secrets/initialAdminPassword

复制出密码点击继续 

自定义Jenkins

创建管理员账号

 

实例配置

这步是告诉你的jenkins访问地址,记住一下。

Jenkins控制面板

 

配置镜像源

 在管理页面依次进入: Jenkins->Manage Jenkins->Manage Plugins

 

点击【高级】

链接: https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

最后重启jekins

 

配置凭据 - 全局Git账号和密码管理

 

 

 

 

 

 

配置你代码所在的gitee的账号和密码即可,这里仅仅只是一个保存账号和密码存档的小工具而已。给后续的配置提供一个便签,后续就不需要在输入账号和密码了。 配置完毕。也是为了安全性考虑。

这个ID等下在jenkinsfile文件中,代码的下载需要这个id来进行关联。也就是通过id找到你的账号和密码,然后去远程下载代码。

配置环境变量

 当我们拉取项目以后,需要用到maven对我们的项目进行构建,我们已在虚拟机上安装了java环境和maven环境,我们需要在jenkins配置应用上去,进入到全局工具配置

 

配置jdk 

名称可以随意填,JAVA_HOME是虚拟机配置的JAVA_HOME路径,可以通过以下命令查看  

echo $JAVA_HOME

配置maven 

然后配置

名称可以随意填,MAVEN_HOME是虚拟机配置的MAVEN_HOME路径,可以通过以下命令查看

echo $MAVEN_HOME

 

 

Jenkins关联环境变量和设置常量

 

就是给Jenkinsfile设置的常量。而这常量我可以在Jenkinsfile文件中用${xxx}

此外,我们还需要将环境变量配置到jenkins(重要步骤)

  • 找到: Jenkins ==> 系统管理 ==> 系统配置

  • 找到全局属性,将配置的环境路径,挨个拷贝过来

 

 此时,jenkins的maven环境、git环境都已搭建好,考虑到我们需要发布服务,所以还需要安装docker

 

Pipeline插件安装

这些准备就绪,就可以开始发布服务,但是我们没有一个调度者的角色去自动化完成它,所以这里jenkins需要安装Pipeline插件,同样取插件商店安装此插件

 

1、Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy

2、Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法

3、Pipeline 也有两种创建方法:可以直接在 Jenkins 的 Web UI 界面中输入脚本;也可以通过创建一

个 Jenkinsfile脚本文件放入项目源码库中(一般我们都推荐在 Jenkins 中直接从源代码控制(SCM)

中直接载入 Jenkinsfile Pipeline 这种方法)

利用Pipeline自动化发布服务

点击新建任务,填写项目名称,选择流水线,点击确认

 

 开始构建

进去可以看到此页面,我们待会需要编写脚本,脚本的变量可以在脚本中生成,也可以在此页面填写,我待会会逐一介绍,填写项目描述,点击参数化构建项目

 这里的参数是很灵活的,可以是选中框,也可以是文本框等

一般我们的分支名称是固定的,不会有改变,我们可以在这添加一个选项参数  

一般多个,可以用换行符分隔,第一行会作为默认选项  

往下拉可以保存看看效果  

 点击build,可以看到此页面。可以选择

 

 

配置端口映射

我们要向发布一个端口,我们就还需要一下参数: 我们要发布哪个项目?发布的端口号多少?

我们采用docker发布项目,则会有两个端口,容器内部的服务端口,docker映射用于访问的端口,这里可能会有变动,有些时候需要自己制定端口,所以我们采用字符串参数

 

该有的参数都已经准备完毕,接下来要做的就是拉取代码

往下拉到底找到流水线,或者直接点击

 

选择SCM模式

 

如果你有安装git,那么你的界面应该是这样的

 

保存完成,选择轻量级导出,脚本路径看自己的存放位置,相对路径是项目根目录,我这里以根目录展示,点击保存,脚本路径一定要记好,我这里代表根目录下的名字叫Jenkinsfile的文件

 

创建完以后保存,页面应该是这样子的

 

 

四、创建Jenkinsfile

往项目根目录创建一个Jenkinsfile文件,与刚刚的配置对应,然后开始编写

//git凭证ID
def git_auth = "xxxx-54a1-4474-a953-934de62262dd"
//git的url地址
def git_url = "https://gitee.com/kekesam/xxx.git"
//镜像的版本号
def tag = "0.0.1-SNAPSHOT"
node {
    stage('拉取代码') {
        checkout([$class: 'GitSCM', branches: [[name: "*/${branch}"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_url}"]]])
    }

    stage('编译 安装公共实体bean') {
        sh "mvn clean install -Dmaven.test.skip=true"
    }

    stage('工程编译') {
        //定义项目名称+镜像的版本号,对镜像名称进行拼接
        def imageName = "${project_name}:${tag}"
        // 编译打包开始
        sh "mvn clean package -Dmaven.test.skip=true dockerfile:build "
        //对镜像打上标签
        sh "docker tag ${imageName} ${imageName}"
    }

    stage('docker部署') {
         //镜像名称
         def imageName = "${project_name}:${tag}"
         //删除原有容器
         sh "docker rm -f ${project_name}"
         // 创建一个容器映射的目标
         sh "mkdir -p /opt/docker/${project_name}"
         //容器加一层挂载目录
         sh "docker run -di -v /opt/docker/${project_name}/opt:/opt --name ${project_name}  -p ${host_port}:${container_port}  ${imageName}"
    }

    stage('启动并监控日志') {
       sh "docker logs -f ${project_name}"
    }

}

然后提交项目即可

 

 

五、然后在jenkins的控制台中

 

查看日志  

 说明成功,然后在浏览器访问对应的接口,如果访问都能正常说明部署成功了

后面的步骤周而复始即可。

  • 修改代码

  • 提交代码到gitee上

  • 在jenkins发布和启动即可

  • 访问接口

启动过程中出现的问题

问题一、Jenkins权限缺失导致无法创建镜像

 解决方案添加权限

chown -R jenkins /文件路径

如果依旧存在权限报错,就给jenkins添加相应权限

 问题二、

各个端口解释

application.yml中server.port=8044端口被dockerfile文件中 

8813端口给覆盖,而最终Jenkins中配置端口时,容器端口为8813,但是实际开放的端口是8001端口,我们需要在安全组放行8001端口,即可得到访问。

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值