jenkins实现easyswoole 持续集成/持续部署

news2025/1/11 18:39:26

 jenkins环境jenkins需要使用root用户启动可通过修改  vim /etc/sysconfig/jenkins改为root,也可直接命令行root启动新增流水线项目安装远程构建插件Generic Webhook Trigger勾选触发远程构建保存之后,访问  /generic-webhook-trigger/invoke?token=easyswoole-test,即可自动bui...

jenkins环境

jenkins需要使用root用户启动可通过修改 

 vim /etc/sysconfig/jenkins

改为root,也可直接命令行root启动

新增流水线项目

安装远程构建插件

Generic Webhook Trigger

勾选触发远程构建

保存之后,访问  /generic-webhook-trigger/invoke?token=easyswoole-test,即可自动build:

初始化项目

通过docker安装easyswoole项目,并运行,可使用 http://www.php20.cn/article/sw/docker/271 编译镜像

docker build -t easyswoole -f  ./dockerfile  ./ #编译easyswoole镜像
docker run -itd --privileged \
--name=easyswoole-test -p 0.0.0.0:9501:9501 -v /var/lib/jenkins/workspace/easyswoole-test:/work \
easyswoole /usr/sbin/init  #启动一个容器
cd /var/lib/jenkins/workspace/easyswoole-test # 进入映射目录
git clone   ## 拉取自己的git项目代码 
docker exec -it easyswoole-test bash ## 进入docker容器
cd /work/easyswoole-test/ ## 进入项目目录
composer up
php ./vendor/bin/easyswoole install
php easyswoole server start -d

访问 localhost:9501,即可看到输出

在easyswoole项目附带上 /Doc/start.sh 脚本,并上传到git项目中:

##!/usr/bin/env bash
#PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
#export PATH;
cd /work/
mkdir -p ./www 
rm -rf ./build-tmp/Temp
\cp -rf ./build-tmp/* ./www/
cd ./www
php easyswoole server stop
php easyswoole server start -d

持续集成/持续部署流程说明

通过git hook,每次commit都将自动触发build,并且开始自行更新代码,执行单元测试,如果单元测试过了,那就更新到线上版本

pipeline代码

pipeline {
    agent none
    environment {
        GIT_URL = 'git@gitee.com:ncl520/easyswoole-test.git'//git ssh地址,可以实现免密下载
        DOCKER_IMAGES = 'easyswoole' //docker image镜像,用于单元测试执行
        PORT = 9501
        LOCAL_PORT = 9501
        DOCKER_NAME = 'easyswoole-test' //部署的正式容器名
    }
    stages {
        stage("down") {
            agent any
            steps {
                sh 'rm -rf ./build-tmp && git clone $GIT_URL ./build-tmp' //先删除原有代码,并且开始更新线上代码
            }
        }
        stage('build') {
            agent {
                docker {
                    image 'easyswoole'//通过easyswoole环境,安装composer 
                }
            }
            steps {
                sh "cd ./build-tmp  && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && composer up"
                echo "build success"
            }
        }
        stage('Test') {
            agent {
                docker {
                    image 'easyswoole'//通过easyswoole环境,启动一个easyswoole 测试版,并执行单元测试 
                }
            }
            steps {
                sh "cd ./build-tmp && php easyswoole server start -d"
                sh "cd ./build-tmp && php easyswoole phpunit ./Test"
            }
        }

        stage('Deploy') { //进入部署阶段,进入正式容器里面执行更新命令
            agent any
            steps {
                sh 'docker exec $DOCKER_NAME bash /work/build-tmp/Doc/start.sh' ## 调用Doc/start.sh脚本
                echo "hello world"
            }
        }
    }
    post {
        success { //成功后发送邮件
            emailext (
                    subject: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
                    body: """<p>SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
                    <p>Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>"</p>""",
                    to: "1067197739@qq.com",
                    from: "1067197739@qq.com"
            )
        }
        failure {
            emailext (
                    subject: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
                    body: """<p>FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
                    <p>Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME}          [${env.BUILD_NUMBER}]</a>"</p>""",
                    to: "1067197739@qq.com",
                    from: "1067197739@qq.com"
            )
        }
    }
}

 

jenkins实现easyswoole 持续集成/持续部署

 仙士可 发表于 2023/06/21 17:30:00

 71  0  0

【摘要】 jenkins环境jenkins需要使用root用户启动可通过修改  vim /etc/sysconfig/jenkins改为root,也可直接命令行root启动新增流水线项目安装远程构建插件Generic Webhook Trigger勾选触发远程构建保存之后,访问  /generic-webhook-trigger/invoke?token=easyswoole-test,即可自动bui...

jenkins环境

jenkins需要使用root用户启动可通过修改 

 vim /etc/sysconfig/jenkins

改为root,也可直接命令行root启动

新增流水线项目

安装远程构建插件

Generic Webhook Trigger

勾选触发远程构建

保存之后,访问  /generic-webhook-trigger/invoke?token=easyswoole-test,即可自动build:

初始化项目

通过docker安装easyswoole项目,并运行,可使用 http://www.php20.cn/article/sw/docker/271 编译镜像

docker build -t easyswoole -f  ./dockerfile  ./ #编译easyswoole镜像
docker run -itd --privileged \
--name=easyswoole-test -p 0.0.0.0:9501:9501 -v /var/lib/jenkins/workspace/easyswoole-test:/work \
easyswoole /usr/sbin/init  #启动一个容器
cd /var/lib/jenkins/workspace/easyswoole-test # 进入映射目录
git clone   ## 拉取自己的git项目代码 
docker exec -it easyswoole-test bash ## 进入docker容器
cd /work/easyswoole-test/ ## 进入项目目录
composer up
php ./vendor/bin/easyswoole install
php easyswoole server start -d

复制

访问 localhost:9501,即可看到输出

在easyswoole项目附带上 /Doc/start.sh 脚本,并上传到git项目中:

##!/usr/bin/env bash
#PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
#export PATH;
cd /work/
mkdir -p ./www 
rm -rf ./build-tmp/Temp
\cp -rf ./build-tmp/* ./www/
cd ./www
php easyswoole server stop
php easyswoole server start -d

复制

持续集成/持续部署流程说明

通过git hook,每次commit都将自动触发build,并且开始自行更新代码,执行单元测试,如果单元测试过了,那就更新到线上版本

pipeline代码

pipeline {
    agent none
    environment {
        GIT_URL = 'git@gitee.com:ncl520/easyswoole-test.git'//git ssh地址,可以实现免密下载
        DOCKER_IMAGES = 'easyswoole' //docker image镜像,用于单元测试执行
        PORT = 9501
        LOCAL_PORT = 9501
        DOCKER_NAME = 'easyswoole-test' //部署的正式容器名
    }
    stages {
        stage("down") {
            agent any
            steps {
                sh 'rm -rf ./build-tmp && git clone $GIT_URL ./build-tmp' //先删除原有代码,并且开始更新线上代码
            }
        }
        stage('build') {
            agent {
                docker {
                    image 'easyswoole'//通过easyswoole环境,安装composer 
                }
            }
            steps {
                sh "cd ./build-tmp  && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && composer up"
                echo "build success"
            }
        }
        stage('Test') {
            agent {
                docker {
                    image 'easyswoole'//通过easyswoole环境,启动一个easyswoole 测试版,并执行单元测试 
                }
            }
            steps {
                sh "cd ./build-tmp && php easyswoole server start -d"
                sh "cd ./build-tmp && php easyswoole phpunit ./Test"
            }
        }

        stage('Deploy') { //进入部署阶段,进入正式容器里面执行更新命令
            agent any
            steps {
                sh 'docker exec $DOCKER_NAME bash /work/build-tmp/Doc/start.sh' ## 调用Doc/start.sh脚本
                echo "hello world"
            }
        }
    }
    post {
        success { //成功后发送邮件
            emailext (
                    subject: "SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
                    body: """<p>SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
                    <p>Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>"</p>""",
                    to: "1067197739@qq.com",
                    from: "1067197739@qq.com"
            )
        }
        failure {
            emailext (
                    subject: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
                    body: """<p>FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
                    <p>Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME}          [${env.BUILD_NUMBER}]</a>"</p>""",
                    to: "1067197739@qq.com",
                    from: "1067197739@qq.com"
            )
        }
    }
}

复制

jenkins配置pipeline 

注意,git地址这边,如果是ssh方式,需要先生成ssh公钥放到git服务器中,可查看:使用ssh RSA加密方式授权git

构建

点击立即构建,可在下面查看构建详细情况

红点表示报错,可点击查看报错详情,图中为没有安装docker执行插件

安装docker插件

进入系统管理->插件管理,安装docker-pipeline

安装成功之后重启,再进行构建

重新构建

测试构建成功.

git-hook

更新项目代码,并提交

记得更新单元测试,否则会不通过

jenkins将自动构建并更新

输出内容自动更新为了新的,并且通过了单元测试

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

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

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

相关文章

IDEA中 application.yaml文件没有绿色的叶子

IDEA中 application.yaml文件没有绿色的叶子 问题背景 前段时间一直在刷算法题和备战考试&#xff0c;忽略了项目方面的锻炼&#xff0c;于是今天就想着来写一个练手的项目&#xff0c;重新熟悉一下技术栈。结果刚搭建一个SpringBoot项目&#xff0c;就发现application.yaml配…

支付宝接入

支付宝接入 python-alipay-sdk pycryptodome一、电脑网站支付 1.1 获取支付宝密钥 沙箱网址 1.APPID 2.应用私钥 3.支付宝公钥1.2 存放密钥 在与 settings.py 的同级目录下创建 pem 文件夹pem 文件夹下创建 app_private_key.pem 和 alipay_public_key.pem app_private_key…

分类模型评估指标详解(二分类、多分类、混淆矩阵)

一 、二分类评估 1.混淆矩阵 (ConfusionMatrix) TP&#xff1a;1的预测为1 (正确的积极) 正确判断 FP&#xff1a;0预测为1 (错误的积极) 错误判断 FN&#xff1a;1预测为0 (正确的消极) 漏判断的 TN&#xff1a;0预测为0 (错误的消极) 成功未判断的 准确率&#xff1a;(a…

Unity使用UGUI划线

Unity 里面虽然提供Linerender绘制线条&#xff0c;但是只能在3D空间划线&#xff0c;有时候需要在UI上绘制指定的线条&#xff0c;柱状图&#xff0c;饼状图等就可以采用下面的方式了。 创建DrawLine&#xff0c;继承MaskableGraphic类&#xff0c;重写OnPopulateMesh(VertexH…

【VirtualBox】win10安装配置 Vbox---超详细 最新 持续更新中

概述 一个好的文章能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径&#xff0c;学海无涯苦作舟。我是秋知叶i、期望每一个阅读了我的文章的开发者都能够有所成长。 一、开发环境 VirtualBox 官网开发环境&#xff1a;windows10VirtualBox&#xff1a;VirtualBox7.0…

超级应用App的建设路径:业务功能小程序化

过往硅谷巨头对于「微信」这样的「超级应用」不屑一顾&#xff0c;如今Super App似乎已经成为巨头间的一个新共识&#xff0c;Meta、Snap、Uber等公司逐步将更多功能塞进现有App。 Facebook 做起了约会、招聘&#xff1b;Snap 则实打实学起了微信的「平台战略」&#xff0c;开始…

Java虚拟机(JVM)介绍

JVM是什么 JVM是Java Virtual Machine的缩写。它是一种基于计算设备的规范&#xff0c;是一台虚拟机&#xff0c;即虚构的计算机。 JVM屏蔽了具体操作系统平台的信息&#xff08;显然&#xff0c;就像是我们在电脑上开了个虚拟机一样&#xff09;&#xff0c;当然&#xff0c;J…

js (一)数据类型与判断

数据类型 基本&#xff08;值&#xff09;类型&#xff1a; String 字符串是不可变的 let lang“java”; lang lang “script”; //先销毁再创建 Number 在数值类型中&#xff0c;存在一个特殊数值NaN&#xff0c;意为“不是数值”&#xff0c;用于表示本来要返回数值的…

计算机网络——计算机网络体系结构

文章目录 **1 计算机网络概述****1.1 概念****1.2 组成****1.3 功能****1.4 分类****1.5 性能指标** **2 计算机网络体系结构与参考模型****2.1 计算机网络分层结构****2.2 计算机网络协议&#xff0c;接口&#xff0c;服务的概念****2.3 ISO/OSI参考模型和TCP/IP模型** 1 计算…

操作系统Linux-day02

Linux学习 常见的cmd命令 winR 输入cmd打开窗口 ipconfig 查看ip地址信息ping查看网络连接情况或者网速情况 ping内网&#xff0c;外网&#xff0c;路由cd change directory 切换目录 cd 目录名称 切换到目录下 cd .. 切换到上一级 cd / 切换到根目录 dir 显示目录中的文…

Oracle初级

目录 概念 数据库分类 Oracle 存储结构 安装成功 ​编辑 创建用户和表空间 以超级管理员身份登录 创建表空间 创建用户 给用户授权 查询测试 概念 数据库&#xff08;database&#xff09;: 物理操作系统文件或磁盘的集合。简单来说数据库的意思是数据的集合。 DBM…

基于51单片机的智能照明控制系统

**功能&#xff1a;**基于51单片机的智能照明控制系统&#xff0c;以51系列单片机为核心&#xff0c;使用光敏传感模块(采用ADC0832对光敏电路进行AD转换)、红外传感模块与声敏传感模块组成检测装置&#xff0c;并采用PWM对照明灯的光强度进行控制。 1.本设计分为手动模式和自动…

Python入门自学进阶-Web框架——37、异步IO与scrapy

异步IO&#xff1a; 一个请求多个网址并获取返回值的程序&#xff1a; import requestsurl_list [https://www.baidu.com,https://www.google.com,https://www.bing.com,https://www.sohu.com, ] for url in url_list:print(开始请求&#xff1a;,url)response requests.ge…

B068-项目实战-技术准备-Nosql-redis

目录 概述Redis简介&#xff1a;NoSql分类&#xff1a;Redis是什么特点&#xff08;优势&#xff09;Mysql、Memcached和Redis的比较使用场景 应用安装使用默认客户端redis-cli/命令行操作对value为string类型的常用操作对key的常用操作对list集合的常用操作其他命令行操作 jav…

JavaWeb(1)——HTML、CSS、JS 快速入门

JavaWeb 是使用 Java 技术来构建 Web 应用程序的一种方法。 HTML&#xff08;超文本标记语言&#xff0c;负责网页的结构&#xff09;是一种用于创建网页结构和内容的标记语言。它由一系列标签组成&#xff0c;每个标签都有特定的功能。开发人员可以使用 HTML 来定义页面的结构…

工作学习笔记

文章目录 一、java基础1、Hashcode的作用2、String、String StringBuffer 和 StringBuilder 的区别是什么?3、 Java的四种引用&#xff0c;强弱软虚4、3*0.1 0.3返回值是什么5、final修饰引用数据类型 二、jvm1、内存模型2、如何判断对象可以被回收3、Minor GC与Full GC分别在…

泊松比、泊松比范围、广义胡克定律、体积应变方程

泊松比&#xff08;Poisson’s ratio&#xff09;提供了有关不同材料在负载下如何变形的关键信息&#xff0c;将施加载荷的方向称为纵向&#xff08;longitudinal direction&#xff09;&#xff0c;将垂直方向称为横向&#xff08;lateral directions&#xff09; 当在一个方…

RK3568平台开发系列讲解(编解码篇)编解码功能介绍及体验

🚀返回专栏总目录 文章目录 一、编解码功能简介二、音频和视频播放的操作2.1、使用 gplay 播放器播放视频和音频2.2、使用 gst-launch 播放视频2.3、使用 gst-launch 播放音频2.4、使用 gst-launch 播放视频和音频沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇…

优化SQL查询实现高效数据检索(二)

大家好&#xff0c;本文将接着上文&#xff0c;继续介绍SQL查询优化的重要性以及如何优化SQL查询以实现更快的数据检索。 适当使用通配符 适当使用通配符对于优化SQL查询尤为重要&#xff0c;特别是在匹配字符串和模式方面。通配符是用于SQL查询中查找特定模式的特殊字符&…

【学生系统】基于结构体的一个训练小项目

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…