jenkins的安装和配置(flask结合jenkins半自动化部署流程)

news2024/11/15 15:43:23

jenkins在虚拟机中安装
1.1 背景介绍
Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。
Jenkins官网: Jenkins

Jenkins 特征

开源的Java语言开发持续集成工具,支持持续集成,持续部署。
易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。
消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。
分布式构建:支持Jenkins能够让多台计算机一起构建/测试。
文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。
1.2 安装

参考: Jenkins安装及入门配置 - 简书

1.3 使用
首先我们想实现的是flask一个后端服务的自动化部署, 我的后端服务是部署在docker上的, 所以要先知道docker的一些简单命令, 我这里就不细说了. 直接开用

flask 服务 app.py 代码如下

from flask import Flask, jsonify app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!' @app.route('/health') def health_checking(): ret = {'status': 'UP'} return jsonify(ret) @app.route('/hello') def hello_chen(): return 'Hello, chen!' @app.route('/index') def index(): return 'Index!' @app.route('/ckk') def ckk(): return 'Chenkeke'

DockerFile 文件如下, 意思就是用 gunicorn 启动flask 的 app 然后用5001端口进行访问

FROM python:3.8 RUN pip install --no-cache-dir -i http://mirrors.aliyun.com/pypi/simple/ \ --trusted-host mirrors.aliyun.com Flask gunicorn ADD . /app ENV GUNICORN_CMD_ARGS="--bind=0.0.0.0:5001 --chdir=./app/ --workers=4" CMD ["gunicorn", "app:app"]

这两个文件配置好之后, 需要上传到gitlab上面, 如图

配置好服务器的ssh在gitlab上面, 这样可以直接通过ssh拉取(不过不配也没关系, 我是通过http拉的项目)

配完之后可以试试能不能在服务器上把项目拉取下来, 然后通过DockDile起个任务看看能不能成功运行这个项目, 直接进到拉取的文件下编译(注意是同一层)

 

docker build -t your_image_name .

成功之后会生成一个镜像, 然后执行镜像

 

docker run -d --name test -p 5001:5001 your_image_name

打开网页看看, 成功执行

 

关闭容器,且删除这个镜像, 不然后面的时候会报错

 可以了的话就进行下一步配置Jenkins, Jenkins的端口安装好了之后默认是8080, 可以先观察一下界面熟悉一下. 没问题之后,我们点击新建一个工作流

 

  1. 配置gitlab的账号密码, 拉取代码的仓库

  1. 选择构建后操作,执行shell

 

执行shell的步骤, 可以自行百度意思

#!/bin/bash echo "hello chen" # 关闭docker项目 IMAGE_NAME="company_flask" CONTAINER_NAME="my_container" PORT_MAPPING="5001:5001" WORKSPACE_PATH="/var/lib/jenkins/workspace/demo" # 检查容器是否已经在运行中 if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then echo "Stopping existing $CONTAINER_NAME container..." docker stop $CONTAINER_NAME fi # 检查是否存在名为 $IMAGE_NAME 的 Docker 镜像 if docker images | awk '{print $1}' | grep -q "^$IMAGE_NAME$"; then # 如果存在,则删除该镜像 echo "Deleting existing $IMAGE_NAME image..." docker rmi $IMAGE_NAME fi # 检查是否存在名为 $CONTAINER_NAME 的 Docker 容器 if docker ps -a | awk '{print $NF}' | grep -q "^$CONTAINER_NAME$"; then # 如果存在,则删除该容器 echo "Deleting existing $CONTAINER_NAME container..." docker rm $CONTAINER_NAME fi # 进入工作目录并构建新的 Docker 镜像 cd $WORKSPACE_PATH docker build -t $IMAGE_NAME . # 启动新的 Docker 容器 echo "Starting new $CONTAINER_NAME container..." docker run -d --name $CONTAINER_NAME -p $PORT_MAPPING $IMAGE_NAME

然后点击保存, 这时候就应该开始构建了, 查看构建的历史

查看控制台输出

 

成功。然后在本文编辑文件中新增一个接口并推送到远端git, 然后重新构建看一下。

上传code

 看看git有没有上传成功

然后登录jenkins 重新构建镜像

 查看构建历史

选择最近的一次构建

 

 查看控制台输出,可以看到已经将最新的代码拉取下来了

看看能不能访问到接口

 

也是成功的。现在已经可以使用自动部署了,但是是半自动部署的.因为还需要登录jenkins然后手动构建 目前还是不完善的.
因为jenkins是本地的 git用的是网上的gitlab 所以不能形成一个闭环. 所以下一次博客会将gitlab和jenkins都用docker部署起来.然后完成一个全自动的自动化部署.

最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】

在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

图片

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无涯教程-PHP - 静态变量函数

静态变量 静态变量在函数退出时值不会丢失,您只需将关键字STATIC放在变量名称的前面,即可将变量声明为静态变量。 <?phpfunction keep_track() {STATIC $count0;$count;print $count;print "<br />";}keep_track();keep_track();keep_track(); ?> 这…

openstack安装使用(Yoga版本)

演示具体只体现centos配置&#xff0c;至于Ubuntu和SUSE&#xff0c;请移步官方文档 安装指南 官方网址&#xff1a;https://docs.openstack.org/install-guide/common/conventions.html $ command #任何用户&#xff08;包括root用户&#xff09;都可以运行以提示符为前缀的…

测试框架pytest教程(6)钩子函数hook

在pytest中&#xff0c;"hook"是用于自定义和扩展测试流程的机制。它允许你在特定时间点插入自己的代码&#xff0c;以便对测试进行修改、补充或拦截。 pytest的hook是基于Python的插件系统实现的&#xff0c;使用特定的命名规范和装饰器来定义钩子函数。你可以在py…

uniapp打包后开屏出现广告

最近的一次打包上线后&#xff0c;安卓端出现了开屏广告&#xff0c;这就比较离谱了&#xff0c;没有改啥&#xff0c;这广告来得莫名其妙&#xff0c;查阅了官方文档后&#xff0c;发现文档太老&#xff0c;也没有及时更新… 咱们在打包时&#xff0c;通常会发现广告这里的【开…

日产将使用东风纯电平台?官方回应:不是日产品牌

据财联社报道&#xff0c;日产中国在对于“日产将使用东风纯电平台”的传闻进行回应时指出&#xff0c;文中提及的平台将会用于日产在华合资企业的自主品牌&#xff0c;而不是日产品牌本身。这一消息进一步确认了之前每经网的报道&#xff0c;称日产将采用东风汽车最新发布的“…

C# OpenCvSharp DNN 二维码增强 超分辨率

效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp; using OpenCvSharp.Dnn; using OpenCvSh…

new String创建几个对象

在java17中 &#xff1a; 问题1&#xff1a;new String("abc")会产生多少个对象&#xff1f; 分两种情况&#xff1a; 情况1&#xff1a; 如果”abc”这个字符串常量不存在&#xff0c;则创建两个对象&#xff0c;分别是“abc”这个字符串常量&#xff0c;以及ne…

Linux Kernel 4.12 或将新增优化分析工具

到 7 月初&#xff0c;Linux Kernel 4.12 预计将为修复所有安全漏洞而奠定基础&#xff0c;另外新增的是一个分析工具&#xff0c;对于开发者优化启动时间时会有所帮助。 新的「个别任务统一模型」&#xff08;Per-Task Consistency Model&#xff09;为主要核心实时修补&#…

PPT操作技巧:如何对文档进行保护和加密

辛辛苦苦设计出的PPT&#xff0c;不希望呗别人拿去当“模板”&#xff1b; PPT中包含项目的关键内容或公司的重要信息&#xff0c;不希望泄露&#xff1b; …… 这些情况下&#xff0c;我们肯定需要找办法来保护自己的PPT。 小编今天就来跟大家分享几个实用的PPT加密保护技巧。…

怎么用gif合成将视频转gif?推荐使用这款视频转gif工具

想要将喜欢的视频片段转换成gif动态图&#xff0c;可以试试今天分享的这款视频转gif工具&#xff0c;支持视频在线转gif&#xff0c;无需下载多余gif合成&#xff08;https://www.gif.cn&#xff09;工具&#xff0c;赶紧来看看怎么操作的吧。 打开网站&#xff0c;在首页选择…

如何查看Linux内核版本

如何查看Linux内核版本 uname -r用centos7.0&#xff0c;内核版本就是3.10

测试框架pytest教程(8)失败重试-pytest-rerunfailures

pytest-rerunfailures是一个pytest插件&#xff0c;用于重新运行失败的测试用例。当测试用例在第一次运行时失败&#xff0c;该插件会自动重新运行指定次数的失败用例&#xff0c;以提高稳定性和减少偶发性错误的影响。 要使用pytest-rerunfailures插件&#xff0c;需要按照以…

余承东确认:新问界M7将在2023年成都车展亮相,全车投入超 5亿元

据报道&#xff0c;AITO官方近日宣布&#xff0c;新款问界M7将在2023年成都车展上进行亮相&#xff0c;具体日期为8月25日。从官方预热海报来看&#xff0c;新款问界 M7将定位为一款大五座SUV&#xff0c;车身前脸相比上一代车型没有太大变化&#xff0c;底部格栅似乎采用了封闭…

解码全栈开发工程师

写在前面 你想成为一名全栈工程师吗&#xff1f;在如今这个大兴降本增效的时代&#xff0c;“全栈”似乎被动的成为了大部分开发者的最终归宿。 在一部分人眼中&#xff0c;全栈代表着更快的成长速度、更丰富的岗位选择&#xff0c;更全面的技术栈也能够为晋升管理岗铺平道路。…

如何准备软件开发项目成本估算?

软件开发的成本估算是出了名的困难。对于软件开发项目来说&#xff0c;预算超支反而是常态&#xff0c;而不是例外。 在开始估算之前&#xff0c;请从业务角度了解项目的战略目标和你的目标。你可能计划尽可能赚取更多利润&#xff0c;探索新技术&#xff0c;或者在项目可能亏…

idea 左下角的Git(Version Control)中显示Local Changes窗口

打开Local Changes窗口来查看当前Git仓库的本地变更。 使用快捷键: - Windows: Alt9 - Mac: Cmd9 解决&#xff1a; &#xff08;1&#xff09;idea打开settings &#xff08;2&#xff09;点击Version Control窗口选项卡&#xff0c;选择Commit选项&#xff0c;对 Use.... in…

国外芯片五大玩家联手组建了另一家RISC-V合资企业

原文链接&#xff1a;https://www.theregister.com/2023/08/04/chip_companies_risc_v/ 以下是正文 Initial drive starts in Germany, pushes automotive blueprints 最初的驱动从德国开始&#xff0c;推动汽车蓝图 The RISC-V open instruction set architecture got a boo…

底层开发必知的内存结构概念

Linux中内存管理子系统使用节点&#xff08;node&#xff09;、区域&#xff08;zone&#xff09;和页&#xff08;page&#xff09;三级结构描述物理内存。 内存节点 内存节点分两种情况&#xff1a;UMA和NUMA。 从管理内存的方法上区分&#xff0c;计算机可以分为两种类型…

20 与时俱进:浅谈移动应用测试方法与思路

移动端应用可以细分为三大类&#xff1a;Web App、Native App 和 Hybrid App Web App 指的是移动端的 Web 浏览器。Native App 指的是移动端的原生应用&#xff0c; 对于 Android 是 apk&#xff0c;对于 iOS 就是 ipa。Hybrid App&#xff08;俗称&#xff1a;混血应用&#…