Jenkins 实现自动打包并且启动服务| 学习笔记

简介: 快速学习 Jenkins 实现自动打包并且启动服务。

开发者学堂课程【基于 Docker  Jenkins 实现自动化部署 Jenkins 实现自动打包并且启动服务】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/637/detail/10183


Jenkins 实现自动打包并且启动服务

 

内容介绍

一、打包完成后的运行问题

二、如何执行脚本(重点)

三、无法访问网页却可以在 docker 中访问?

四、模拟查看是否自动化

 

一、打包完成后的运行问题

打包操作完成后,如何运行?

误区:

1.直接在容器里写入 java-jar meite_mayikt_springboot-0. 0.1-SNAPSHOT.jar 。但这属于手动运行,就不算自动化了。

2.端口号出现冲突。

例:原本的端口号8081出现冲突,因此将端口号改为8087,然后进行提交,进行重新构建就可将端口号修改为8087。最后人为执行 java-jar,输入代码:

bash-4.4$ ^C

bash-4.4$ ^C

bash-4.4$ ^C

bash-4.4$ java -jar meite_mayikt_springboot-0.0.1-SNAPSHOT.jar

Error:Unable to access jarfile meite_mayiktspringboot -0.0.1-SNAPSHOT.jar

bash-4.4$ ^C

bash-4.4$ ls

bash-4.4$ ls

bash-4.4$ pwd

/var/jenkins_home/workspace/meite_mayikt_springboot/target

bash-4.4$ cls

bash: cls: command not found

bash-4.4$ ls

bash-4.4$ pwd

/var/jenkins home/workspace/meite_mayikt_ springboot/target

bash-4.4$ ls

bash-4.4$ ls

bash-4.4$ cd ^C

bash-4.4S ^C

bash-4.4$ cd/var/jenkins_home/workspace/meite_mayikt_springboot/target/

bash-4.4$ ls

classes  maven-archiver meite_mayikt_springboot-0.0.1-SNAPSHOT.jar

generated-sources maven-status meite_mayikt_springboot-0.0.1-SNAPSHOT. jar.original

bash-4.4$ java-jar meite_mayikt_springboot-0.0.1-SNAPSHOT.jar

之后端口号就会改为8087

 

二、如何执行脚本(重点)

但是如果还是像以上人工去发布那还是没有解决自动化的问题。现在 java 包已经被打好了,只是前面还缺少 java-jar 帮忙自动化运行,所以需要还需要执行脚本。

例:执行 shell 脚本

1.SERVER_NAME 后先定下服务名称:meite_mayikt_springboot,服务名称最好和发布名称相同。

2.JAR_NAME 表示  jar 包里原地址的名称,jar 包原地址的名称可以根据日志分析出来。

首先返回进入<如图>位置,进入控制台输出,

image.png

找到此行代码

[INFO] Installing /var/jenkins_home/workspace/meite_mayikt_ springboot/target/meite_mayikt_sprineboot=0.0.1-SNAPSHOT.jar to

var/ jenkins_home/.m2 /repository/com/mayikt/meite_mayikt_ springboot/0. 0.1-SNAPSHOT/meite_ meyikt_springboot-0.0.1-SNAPSHOT.jar

发现名称为 meite_mayikt_springboot-0.0.1-SNAPSHOT,将其复制回 JAR_NAME= 之后。

3. JAR_PATH 表示 jar 包的位置,jar 输出目录。

同样到控制台找到此行代码

[INFO] Installing /var/jenkins_home/workspace/meite_mayikt_ springboot/target/meite_mayikt_sprineboot=0.0.1-SNAPSHOT.jar to

var/ jenkins_home/.m2 /repository/com/mayikt/meite_mayikt_ springboot/0. 0.1-SNAPSHOT/meite_ meyikt_springboot-0.0.1-SNAPSHOT.jar

将代码/var/jenkins_home/workspace/meite_mayikt_springboot/target 复制到  JAR_PATH= 之后和JAR_WORK_PATH= 之后。

4. kill-9 $id 表示会检查之前某个进程的存在,之后就会杀死这个进程。

image.png

5.java-jar 表示重新启动进程

image.png

6、点击保存、立即构建、检查控制台。

 

三、无法访问网页却可以在 docker 中访问?

文件项目启动成功后,通过网页访问192.168.212.252:8087会发现访问失败,但在 docker 容器中输入 bash-4.45 curl 127.0.0.1:8087访问时却可以访问。

有同学可能会认为是防火墙没关闭导致了这样的情况,但实际上通过关闭防火墙的操作之后发现,网页只是可以访问端口80却依旧无法访问端口8087,所以防火墙不是原因。

真正的原因在于 Jenkins 是通过容器进行部署的,因此 java 服务也是在容器中运行的,它能够在内部运行却不可以在外部运行。我们可以通过改变映射来解决这一问题。

如何改变映射:

1.将原有

docker run -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean

改为

docker run -p 8080:8080 -p 8087:8087-p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean

2. 将容器重启

写入 bash-4.4$ exit

exit

[root@localhost ~]# systemctl restart docker

3. 清算未运行的容器

写入[root@localhost ~]# docker rm $(sudo docker ps -a -q)

4. 启动命令:

[root@localhost ~]# docker run -p 8080:8080 -p8087:8087 -p 50000:50000-v jenkins_data:/var/jenkins_home jenkinsci/blueocean

5. 重启 Jenkins ,登录并运行,在控制台查看 springboot 项目是否启动,发现已经启动则再进行网页访问,发现可以访问。

随堂答疑:-p什么意思?

答:表示容器与外部映射端口号。因为容器里有端口号之后,想让外部访问的话需要做映射。

 

四、模拟查看是否自动化

1.进入文件

代码:

package com.mayikt.controller;

import org.springframework.boot.SpringApplication;

//1

@SpringBootApplication

@RestController

public class App {

@RequestMapping("/")

public String index(){

return " 每特教育独创基于 Jenkins+docker 部署 SpringBoot 项目QQ644064779..... www.mayikt.com";

}

public static void main(String[] args){

SpringApplication.run(App.class, args)

}

}

2. 将加粗部分替换为其他文案。

3. 提交代码,Commit message 文本框中填入 修改×××文案。

4. 查看控制台输出,刷新网站查看是否更新文案,发现文案已更新。

相关文章
|
2月前
|
jenkins Java 持续交付
Jenkins打包,发布,部署
Jenkins打包,发布,部署
264 0
|
4月前
|
Kubernetes jenkins 持续交付
jenkins学习笔记之二十一:k8s部署jenkins及动态slave
jenkins学习笔记之二十一:k8s部署jenkins及动态slave
|
4月前
|
前端开发 jenkins 持续交付
jenkins学习笔记之二十:docker in docker运行pipeline
jenkins学习笔记之二十:docker in docker运行pipeline
|
4月前
|
jenkins Java 持续交付
jenkins学习笔记之十九:Docker安装jenkins master及动、静态配置slave
jenkins学习笔记之十九:Docker安装jenkins master及动、静态配置slave
|
4月前
|
jenkins 持续交付
jenkins学习笔记之十八:nexus制品获取及晋级
jenkins学习笔记之十八:nexus制品获取及晋级
|
4月前
|
Java jenkins 持续交付
jenkins学习笔记之十七:使用插件及maven上传制品到nexus
jenkins学习笔记之十七:使用插件及maven上传制品到nexus
|
4月前
|
jenkins Java 持续交付
jenkins学习笔记之十六:SonarSQube支持多分支
jenkins学习笔记之十六:SonarSQube支持多分支
|
4月前
|
jenkins API 持续交付
jenkins学习笔记之十五:SonarSQube API使用
jenkins学习笔记之十五:SonarSQube API使用
|
4月前
|
jenkins Java 持续交付
jenkins学习笔记之十四:SonarSQube项目管理
jenkins学习笔记之十四:SonarSQube项目管理
|
4月前
|
jenkins Java Shell
jenkins学习笔记之十三:配置SonarScanner扫描Java项目
jenkins学习笔记之十三:配置SonarScanner扫描Java项目