首页 > 其他分享 >jenkins的安装和配置(flask结合jenkins半自动化部署流程)

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

时间:2023-05-11 16:03:49浏览次数:48  
标签:CONTAINER NAME flask app 半自动化 构建 jenkins docker

jenkins在虚拟机中安装

1.1 背景介绍

Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。
Jenkins官网: http://jenkins-ci.org/

Jenkins 特征

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

1.2 安装

参考: https://www.jianshu.com/p/400b4516b98e

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部署起来.然后完成一个全自动的自动化部署.

标签:CONTAINER,NAME,flask,app,半自动化,构建,jenkins,docker
From: https://www.cnblogs.com/c-keke/p/17390677.html

相关文章

  • 初识flask的项目 手把手教你从零开始创建一个flask项目
    Flask框架流程什么是Flask:Flask诞生于2010年,使用python语言基于Werkzeug工具箱编写的轻量级Web开发框架Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件:Flask-Mail,用户认证:Flask-Login,数据库:Flask-SQLAlchemy).Flask的核心在于Werkzeug(路由模块),Jinj......
  • 七天学会flask(六)---flask提交表单
    用户使用表单向服务器提交信息,比如最常见的登录,本文讲解如何在html页面里提交表单,flask如何处理表单数据,此外还将讨论表单敏感信息如何存储。下面是一个简单的登录页面中的form表单<formaction="/login"method="POST"><p>name:<inputtype="text"name="name"/></p>......
  • 假如jenkins挂了,我们将如何打包java项目
    前提是服务器上装好了java,Maven,git1.使用git命令下载代码拉代码gitclone代码仓库切分支git fetchgitcheckout$(dev_branch)合并主干gitpulloriginmaster有冲突解决冲突打taggittag$(tag_name)gitpushorigin $(tag_name)删taggittag-d$(tag_name)g......
  • flask_视图函数的分离
    随着项目的增大,便于管理,需要把视图函数单独放一起,架构为:~启动文件~视图函数~数据处理~view~其它的帮助函数 启动有两种方法1、集中式管理注册路由,启动文件里调用视图相关的代码 2、 基于类的视图,可插拔视图disp......
  • 下篇:使用jenkins发布go项目到k8s,接上篇的手工体验改造为自动化发布
    写在开篇关于上篇本篇在 《上篇:带你手工体验从写代码、编译、打包镜像、部署到K8S的全过程》 的基础上,将手动的过程通过jenkins工具将其改造成自动化。环境准备我的环境说明:组件安装方式访问IP访问端口jenkinsdocker192.168.11.2548086gitlabdocker192......
  • jenkins工作原理
    Jenkins是一款流行的开源持续集成和交付工具,其工作原理如下:代码管理:Jenkins可以与各种代码管理工具(如Git、SVN等)进行集成,以便从中获取最新代码。 构建触发:Jenkins可以根据时间计划或代码仓库的变更来触发构建任务。 构建环境设置:Jenkins可以配置构建环境(如操作......
  • Flask 面试题
    1.Flask中正则URL的实现?app.route('')中URL显式支持string、int、float、pathuuidany6种类型,隐式支持正则。第一步:写正则类,继承BaseConverter,将匹配到的值设置为regex的值。1.classRegexUrl(BaseConverter):2.def__init__(self,url_map,*args):3.......
  • 使jenkins.war保持后台运行的方法
    直接使用命令java-jarjenkins.war 启动Jenkins,这样当退出窗口时,进程就会结束,怎么样能够让Jenkins保持后台运行呢?在网上搜集到以下三种办法,请参考 ​1.java-jarjenkins.war--httpPort=8080&​​​ 2.执行以下三步:(1)执行java-jarxxx.jar后(2)ctrl+z退出到控制台,......
  • Python flask成绩管理系统(课设、毕设、学习、源码下载)
    Pythonflask成绩管理系统后端:Python flask数据库:MySQL前端:html css js bootstrap等涉及功能:登录,登出,搜索,分类,排序,成绩管理,学生管理,班级管理,课程管理,数据统计分析,可视化图表 源码下载和功能展示:链接:https://pan.baidu.com/s/1D9cHH4Cy2jh6hgj3ZAWaDQ?pwd=q8le......
  • Jenkins 添加节点
    SSHLauncher{host='192.168.19.92',port=22,credentialsId='a19f38a2-6fb5-404b-9a18-84f8db88cd60',jvmOptions='',javaPath='',prefixStartSlaveCmd='',suffixStartSlaveCmd='',launchTimeoutSeconds=6......