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

jenkins的安装和配置(flask结合jenkins半自动化部署流程)的更多相关文章

  1. jenkins简单安装及配置(Windows环境

    jenkins简单安装及配置(Windows环境) jenkins是一款跨平台的持续集成和持续交付.基于Java开发的开源软件,提供任务构建.持续集成监控的功能,可以使开发测试人员更方便的构建软件项目 ...

  2. DevOps之四 Jenkins的安装与配置

    CentOS 上 Jenkins 安装 一.添加yum repos,然后安装 sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins ...

  3. Jenkins学习之——(1)Jenkins的安装与配置

    1.最近公司要求做自动化部署,于是自学了jenkins.这个参考书很少,网上的文章也讲得很模糊,于是打算把自己学习东西记下来,希望对大家有所帮助. 一.jenkins的安装 到jenkins官网(ht ...

  4. jenkins简单安装及配置(Windows环境)

    jenkins是一款跨平台的持续集成和持续交付.基于Java开发的开源软件,提供任务构建,持续集成监控的功能,可以使开发测试人员更方便的构建软件项目,提高工作效率. Windows平台下,一般安装方法 ...

  5. linux ---jenkins的安装与配置

    linux下的jenkins的安装: Jenkins 下载网址: http://jenkins-ci.org/ 1.准备:JDK环境,tomcat环境,maven环境,jenkins.war包 2.在 ...

  6. 【Jenkins】Jenkins的安装与配置

    一.环境准备 1.下载jdk 官方下载地址:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133 ...

  7. jenkins的安装、配置使用

    1.jenkins的使用 (1).需要先下载安装JDK 配置jdk的环境 变量JAVA_HOME的值是 jdk 的安装位置, 然后下载安装tomcat 安装好了之后,打开tomcat下的bin文件夹, ...

  8. Jenkins的安装与配置

    资源下载: --jenkins的war包 首先从http://jenkins-ci.org/下载最新的jenkins版本,最新版本为1.594,下载的文件载体为jenkins.war: Jenkins ...

  9. Jenkins的安装后配置

    配置Jenkins server 1.安装插件:选择自定义插件安装 Locale plugin Localization: Chinese (Simplified) Git Subversion HT ...

  10. windows下jenkins的安装与配置

    项目自动化部署: https://www.cnblogs.com/wuxunyan/p/9592953.html https://blog.csdn.net/qq_37372007/article/d ...

随机推荐

  1. 安卓自动化查看包名和activity名的方法

    1,cmd下,adb shell "dumpsys window | grep mCurrentFocus" 2,CMD中输入adb logcat ActivityManager: ...

  2. Oracle-展示的时候出现????乱码

    Oracle-展示的时候出现????乱码 配置环境变量: NLS_LANG SIMPLIFIED CHINESE_CHINA.ZHS16GBK

  3. 【攻防世界】web练习区write up

    目录: view_source robots backup cookie disabled button weak auth simple php xff referer webshell get p ...

  4. python 引用传递,简单例子

    from threading import Threaddef test1(a): while 1: print adef test2(a): a["a"] = 2if __nam ...

  5. mysql 的存储过程

    定义不带参数的存储过程 CREATE PROCEDURE s1() BEGINselect * from ecs_admin_action;End call s1; 2.带输入参数的 create P ...

  6. CAS 6.x + Delegated Authentication SAML2.0 配置记录

    最近领导派了一个活儿, 需要把我们CAS系统的身份识别交给甲方的系统, 甲方的系统是SAML2.0的协议. 由于之前对SAML2.0协议了解不多,折腾了不少时间,在这里记录一下.以后忘掉还可以看看. ...

  7. Java 2023年接地气的中高级面试题一(附答案)

    直入主题: Q1:为什么要用分布式锁? 在分布式系统中,多个进程或线程可能会同时访问共享资源,这可能会导致数据不一致.并发性问题.性能下降等问题.为了解决这些问题,我们通常会使用分布式锁来协调多个进程 ...

  8. PHP 图片的合并,微信小程序码合并,文字合并

    //业务需求:我们需要一个微信小程序码,但是是需要提供给别人扫码的但是只有一个纯粹的小程序码是不好看的,所以需要推广的海报图片.再结合文字 最终效果 准备工作  1.需要海报的底图  2.小程序码的图 ...

  9. Flutter 下载篇 - 叁 | 网络库切换实践与思考

    前言 本文是关于使用flutter_download_manager下载功能的实践和探索.我们将基于flutter_download_manager的功能扩展,改造成自己想要的样子.在阅读本文之前,建 ...

  10. InnoDB 是如何解决幻读的

    前言 大部分人在日常的业务开发中,其实很少去关注数据库的事务相关问题,基本上都是 CURD 一把梭.正好最近在看 MySQL 的相关基础知识,其中对于幻读问题之前一直没有理解深刻,今天就来聊聊「Inn ...