

jenkins的安装和配置(flask结合jenkins半自动化部署流程) - 陈科科
source link: https://www.cnblogs.com/c-keke/p/17390677.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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
docker化安装参考: https://developer.aliyun.com/article/892646
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起个任务看看能不能成功运行这个项目, 直接进到拉取的文件下编译(注意是同一层)
成功之后会生成一个镜像, 然后执行镜像
打开网页看看, 成功执行
关闭容器,且删除这个镜像, 不然后面的时候会报错
可以了的话就进行下一步配置Jenkins, Jenkins的端口安装好了之后默认是8080, 可以先观察一下界面熟悉一下. 没问题之后,我们点击新建一个工作流
- 配置gitlab的账号密码, 拉取代码的仓库
- 选择构建后操作,执行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部署起来.然后完成一个全自动的自动化部署.
__EOF__
Recommend
-
24
打造自己的php半自动化代码审计工具 Matt
-
62
今天给大家介绍的是一款名叫GitGot的半自动信息收集工具,在GitGot的帮助下,广大研究人员可以轻松从GitHub公开数据中搜索敏感信息。
-
38
AI 技术的发展和大数据时代的到来令知识图谱的自动化构建成为可能,尽管现阶段还面临着一些挑战,但已有不少企业在积极探索和尝试自动化构建技术。近日,AI 前线采访了来自明略科技和国双数据科学团队多位专家,他们分享了实现大规模自动化...
-
23
PPOCRLabel 半自动化图形标注工具初体验;Windows + Anaconda 下载安装Anaconda(Python 3+) conda install pyqt=5 cd ./PPOCRLabel # 将目录切换到PPOCRLabel文件...
-
21
在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试; 前后端分离后,经常会修改接口,然后重新部署;这些情况都会涉及到频...
-
8
Legion:一款易于使用且功能强大的半自动化网络渗透工具 桑云信息安云 2019-03-29 Legion
-
9
流水线可以让项目发布流程更加清晰,docker可以大大减少Jenkins配置。 数据卷挂载到 /var 磁盘目录下,因为该磁盘空间较大,后面需要挂载容器数据卷,以防内存吃紧。 为了可以留存启动...
-
8
dom xss->半自动化 前几天看了两篇文...
-
14
Posted by: Phodal Huang March 12, 2023, 9:08 p.m. PS:虽然,我们应该以预训练的 Prompt 作为当前的目标,通过将大量的数据训练。但是,作为一个没有 AI 训练资源的普通人,这个价格太...
-
10
请注意!!! 本系列的文章是断断续续写的,本文最早写于 2022 年 12 月,可能有些信息已经过时! 别问,问就是写了一半然后放草稿箱里长草了。 请知悉,NASTool 官方已经...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK