Jenkins+Docker 实现一键自动化部署项目

1、环境配置

环境:centos7+git(gitee)

简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。

2、安装docker

docker 安装社区版本CE

确保 yum 包更新到最新

yum update

卸载旧版本docker(如果安装过旧版本的话)

yum remove docker  docker-common docker-selinux docker-engine

安装需要的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装docker

yum install docker-ce  #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
yum install <自己的版本>  # 例如:sudo yum install docker-ce-17.12.0.ce

启动和开机启动

systemctl start docker
systemctl enable docker

验证安装是否成功

docker version

3、安装Jenkins

docker 安装一切都是那么简单,注意检查8080是否已经占用!如果占用修改端口

docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean

如果没改端口号的话

安装完成后访问地址 -> http://{部署Jenkins所在服务IP}:8080

3.1、初始化 Jenkins

详情见官网教程 -> https://www.jenkins.io

3.2、解锁 Jenkins

进入Jenkins容器:docker exec -it {Jenkins容器名} bash

例如 docker exec -it jenkins bash

查看密码:cat /var/lib/jenkins/secrets/initialAdminPassword

将密码输入
在这里插入图片描述

3.3、安装插件

在这里插入图片描述

3.4、创建管理员账户

4、系统配置

4.1、安装需要的插件

进入【首页】–【系统管理】–【插件管理】–【可选插件】

1、安装Maven Integration

2、安装Publish Over SSH(如果不需要远程推送,不用安装)

3、如果使用Gitee 码云,安装插件Gitee(Git自带不用安装)

4、配置Maven

进入【首页】–【系统管理】–【全局配置】,拉到最下面maven–maven安装
在这里插入图片描述

5、创建任务

点击【新建任务】,输入任务名称,点击构建一个自由风格的软件项目

在这里插入图片描述点击【源码管理】–【Git】,输入仓库地址,添加凭证,选择好凭证即可。

在这里插入图片描述
在这里插入图片描述点击【构建触发器】–【构建】–【增加构建步骤】–【调用顶层Maven目标】–【填写配置】–【保存】

在这里插入图片描述
此处命令只是install,看是否能生成jar包

clean install -Dmaven.test.skip=true

在这里插入图片描述

6、测试

点击构建按钮
在这里插入图片描述查看日志

点击正在构建的任务,或者点击任务名称,进入详情页面,查看控制台输出,看是否能成功打成jar包。

该处日志第一次可能下载依赖jar包失败,再次点击构建即可成功。

在这里插入图片描述
在这里插入图片描述
查看项目位置

cd /var/jenkins_home/workspace

7、运行项目

因为我们项目和jenkins在同一台服务器,所以我们用shell脚本运行项目,原理既是通过dockerfile 打包镜像,然后docker运行即可。

7.1、dockerFile

在springboot项目根目录新建一个名为Dockerfile的文件,注意没有后缀名,其内容如下:(大致就是使用jdk8,把jar包添加到docker然后运行prd配置文件)

FROM jdk:8
VOLUME /tmp
ADD target/zx-order-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8888
ENTRYPOINT ["Bash","-DBash.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.profiles.active=prd"]

7.2、修改jenkins配置

在这里插入图片描述

在这里插入图片描述

-t:指定新镜像名
.:表示Dockfile在当前路径
cd /var/jenkins_home/workspace/zx-order-api
docker stop zx-order || true
docker rm zx-order || true
docker rmi zx-order || true
docker build -t zx-order .
docker run -d -p 8888:8888 --name zx-order zx-order:latest

最后查看jenkins控制台即可看见是否构建成功

原文:https://mp.weixin.qq.com/s/JAD9fROZ_Sx-_9i7kld5nw

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/5095.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESP32设备驱动-SCD40二氧化碳湿度和温度传感器驱动

SCD40二氧化碳湿度和温度传感器驱动 文章目录 SCD40二氧化碳湿度和温度传感器驱动1、SCD40介绍2、硬件准备3、软件准备4、驱动实现1、SCD40介绍 SCD4x 是 Sensirion 的下一代微型 CO2 传感器。 该传感器基于光声 NDIR 传感原理和 Sensirion 的专利 PASens 和 CMOSens 技术,以…

联想小新电脑无法启动怎么办?

1&#xff0c;电脑启动不了 2&#xff0c;强制断电3次开机后&#xff0c;Win11进入高级启动模式 &#xff08;注意每次强制关机要按住15秒左右&#xff09; 3&#xff0c;选择疑难解答 4&#xff0c;选择高级选项 5&#xff0c;卸载更新 6&#xff0c;卸载最新的质量更新 7&am…

代理模式(Proxy)

定义 代理是一种结构型设计模式&#xff0c;让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问&#xff0c;并允许在将请求提交给对象前后进行一些处理。 前言 1. 问题 举个例子&#xff1a;有这样一个消耗大量系统资源的巨型对象&#xff0c; 你只是偶尔需…

Stable Diffusion 使用outpainting扩展图像

通常SD可以应用绘制的图像是固定分辨率的&#xff0c;但是如果想要超出这个分辨率的话那就要使用一些方法&#xff0c;并且如果还想保持这些图片的连贯性&#xff0c;例如背景就要使用到outpainting。 文章目录 操作流程准备图像 操作流程 准备图像 首先将需要扩展边缘的图像…

Xcode 15 beta 2 - Apple Vision Pro安装下载

1. 更新OS系统 已更新的忽略这步 2. 下载Xcode 15 beta 2 Xcode 15 Xcode 15 让你能够开发、测试和分发适用于所有 Apple 平台的 App。借助增强的代码补齐功能、交互式预览和实时动画&#xff0c;更快地推进 App 的编码和设计。利用 Git 暂存功能直接改进下次要提交的文件&…

二叉树各种函数的实现

如果你觉得迷茫&#xff0c;那就尽可能选择比较困难的路。 目录 前言&#xff1a; &#x1f340;一.通过前序遍历创建二叉树 &#x1f341;二.二叉树的四种遍历 &#x1f342;1.二叉树的前序遍历 &#x1f33c;2.二叉树的中序遍历 &#x1f34c;3.二叉树的后序遍历 …

如何在 ZBrush 和 UE5 中创建精灵吟游诗人(P2)

小伙伴们大家好&#xff0c;下篇咱们精彩继续&#xff0c;主要是讲解角色建模完成后的重新拓扑、UV、灯光设置和渲染。 纹理的重新拓扑和UV 一切都在 Maya 中完成&#xff0c;重新拓扑是一个漫长的过程&#xff0c;因为角色有很多元素&#xff0c;值得庆幸的是&#xff0c;在…

从0到1精通自动化测试,pytest自动化测试框架,fixture之autouse=True(十二)

一、前言 平常写自动化用例会写一些前置的fixture操作&#xff0c;用例需要用到就直接传该函数的参数名称就行了。当用例很多的时候&#xff0c;每次都传这个参数&#xff0c;会比较麻烦 fixture里面有个参数autouse&#xff0c;默认是Fasle没开启的&#xff0c;可以设置为Tr…

【排序算法】堆排序

堆与一维数组 建立堆与一维数组的联系 堆排序并不是直接对堆节点Node类型排序&#xff0c;而是通过建立索引之间的关系&#xff0c;对一维数组排序。 称之为堆排序&#xff0c;是因为节点索引值之间的关系与完全二叉树的非常类似&#xff0c;而树又称堆。 设根节点为i&#xff…

2023.7.2-【for语言】:输入一个整数,并输入该整数对应个数的整数,求他们的和与平均值

程序&#xff1a; int a;int b0;int c;int sum0;double ave;printf("请输入待求整数的个数&#xff1a;");scanf("%d",&a);for (b 1; b<a; b){printf("整数%d&#xff1a;", b);scanf("%d", &c);sum c;}printf("以上…

【ChatGpt】解决视频框交换中的平滑过渡的问题

【ChatGpt】解决视频框交换中的平滑过渡的问题 问题抽象chatgpt 看看直接给参考代码 解决效果 问题 在视频的播放中&#xff0c;我们想调换下容器的位置 &#xff0c;在互调的过程中&#xff0c;如果需要重新进行数据的初始化&#xff0c;获取与加载&#xff0c;就会很慢&…

Java 多线程

java多线程 第一种方法&#xff1a; 1.自定义线程类继承Thread类 2.重写run()方法 3.创建线程对象&#xff0c;调用start()方法启动线程 第二种方法&#xff1a; 1.实现Runnable()接口 2.重写run()方法 3.创建线程对象&#xff0c;调用start()启动线程