Jenkins Docker Pipeline Clone Build Deploy mysqldump
本文首发在这里
先决条件
- 装好 Docker 的 Ubuntu
- 钉钉机器人 Webhook
curl -H 'Content-Type:application/json' -d '{"msgtype":"text","text":{"content":"hello world"}}' 'https://oapi.dingtalk.com/robot/send?access_token=secret'
安装 Jenkins
以下命令基本来自官方,列出仅做参考
sudo docker network create jenkins
mkdir -p docker/jenkins/certs docker/jenkins/data
sudo docker run --name jenkins-docker --rm --detach --privileged --network jenkins --network-alias docker --env DOCKER_TLS_CERTDIR=/certs --volume ~/docker/jenkins/certs:/certs/client --volume ~/docker/jenkins/data:/var/jenkins_home --publish 2376:2376 docker:dind --storage-driver overlay2
vi docker/jenkins/Dockerfile # 请从官方文档复制需要粘贴进去的内容
cd docker/jenkins && sudo docker build -t myjenkins-blueocean:2.426.1-1 .
sudo docker run --name jenkins-blueocean --restart=on-failure --detach --network jenkins --env DOCKER_HOST=tcp://docker:2376 --env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 --publish 8080:8080 --publish 50000:50000 --volume ~/docker/jenkins/data:/var/jenkins_home --volume ~/docker/jenkins/certs:/certs/client:ro myjenkins-blueocean:2.426.1-1
sudo docker exec -it jenkins-blueocean bash
sudo docker logs jenkins-blueocean
安装后设置向导请遵循官方
配置 Jenkins
- 下载插件
SSH Agent、DingTalk - 添加凭据
系统管理 -> 凭据管理 -> 全局 -> 添加凭据 -> 范围选择全局
- Username with password
- SSH Username with private key
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@192.168.1.188
cat ~/.ssh/id_rsa # 私钥
- 添加钉钉机器人
id、名称、webhook
新建流水线
建议勾选丢弃旧的构建
Clone Build Deploy
pipeline {agent {docker {image 'golang:1.21.4-bookworm'args '-u 0:0'}}parameters {choice(name: 'IP', choices: ['188'], description: 'pick one')}stages {stage('start') {steps {dingtalk(robot: 'bot', type: 'TEXT', text: ['jenkins ${IP} start'])}}stage('clone') {steps {withCredentials([usernamePassword(credentialsId: 'git', usernameVariable: 'username', passwordVariable: 'password')]) {sh '''rm -rf frameworkgit clone https://$username:$password@github.com/panshiqu/framework.git'''}}post {failure {dingtalk(robot: 'bot', type: 'TEXT', text: ['jenkins ${IP} clone failure'])}}}stage('build') {steps {sh '''echo choice: ${IP}cd frameworkpwdgo versiongo env -w GOPROXY=https://goproxy.cn,directgo env -w GOCACHE=/tmp/.cache/go-buildgo env -w GOFLAGS=-buildvcs=falsego mod tidygo build -o db_server db.gogo build -o manager_server manager.gogo build -o proxy_server proxy.gogo build -o login_server login.gogo build -o game_server game.go'''}post {failure {dingtalk(robot: 'bot', type: 'TEXT', text: ['jenkins ${IP} build failure'])}}}stage('deploy') {steps {sshagent(credentials: ["${IP}"]) {sh '''ssh -o StrictHostKeyChecking=no -l ubuntu 192.168.1.${IP} uname -acd framework && scp *_server ubuntu@192.168.1.${IP}:~/server/update'''}}post {failure {dingtalk(robot: 'bot', type: 'TEXT', text: ['jenkins ${IP} deploy failure'])}success {dingtalk(robot: 'bot', type: 'TEXT', text: ['jenkins ${IP} clone && build && deploy success'])}}}}
}
mysqldump
pipeline {agent {docker {image 'mysql:5.7.44'}}parameters {string(name: 'fromIP', defaultValue: '192.168.1.177', description: 'ip')string(name: 'fromPWD', defaultValue: '123456', description: 'pwd')string(name: 'toIP', defaultValue: '192.168.1.188', description: 'ip')string(name: 'toPWD', defaultValue: '123456', description: 'pwd')}stages {stage('start') {steps {dingtalk(robot: 'bot', type: 'TEXT', text: ['jenkins mysqldump ${fromIP}->${toIP} start'])}}stage('dump') {steps {sh '''mysqldump -h${fromIP} -uroot -p${fromPWD} --events --routines --add-drop-database --databases game log > dump.sqlmysql -h${toIP} -uroot -p${toPWD} < dump.sqlrm -f dump.sql'''}post {failure {dingtalk(robot: 'bot', type: 'TEXT', text: ['jenkins mysqldump ${fromIP}->${toIP} failure'])}success {dingtalk(robot: 'bot', type: 'TEXT', text: ['jenkins mysqldump ${fromIP}->${toIP} success'])}}}}
}
远程构建
- 流水线配置勾选
触发远程构建,身份验证令牌填入abc - 全局安全配置勾选
匿名用户具有可读权限
curl 'http://192.168.1.188:8080/job/framework/buildWithParameters?IP=188&token=abc'
curl 'http://192.168.1.188:8080/job/mysqlgame/buildWithParameters?fromIP=192.168.1.177&fromPWD=123456&toIP=192.168.1.188&toPWD=123456&token=abc'
相关文章:
Jenkins Docker Pipeline Clone Build Deploy mysqldump
本文首发在这里 先决条件 装好 Docker 的 Ubuntu钉钉机器人 Webhook curl -H Content-Type:application/json -d {"msgtype":"text","text":{"content":"hello world"}} https://oapi.dingtalk.com/robot/send?access_t…...
【干货分享】Ftrans安全数据交换系统 搭建跨网数据传输通道
安全数据交换系统是一种专门设计用于在不同的网络、系统或组织之间安全地传输数据的软件或硬件解决方案。这种系统通常包含多种安全特性,以确保数据在传输过程中的保密性、完整性和可用性。 安全数据交换系统可以解决哪些问题? 安全数据交换系统主要解…...
基于鸿蒙API10的RTSP播放器(五:拖动底部视频滑轨实现跳转)
拖动前播放位置: 拖动后播放位置: 在Slider组件中,添加onChange方法进行监听,当视频轨道拖放结束时,触发this.seekTo()函数,其中seekTo函数需要传递一个视频已播放时长作为参数 Slider({ value: this.p…...
pointer-events
认识pointer-events属性 pointer-events是一个 CSS 属性,用于控制元素在鼠标事件中的表现。 一、可能的值 auto(默认值): 元素对鼠标事件的响应正常。鼠标可以与该元素进行交互,如点击、悬停等。none: 元素…...
RAG 在企业应用中落地的难点与创新分享
在2024稀土开发者大会-AI Agent与应用创新分会上,我有幸分享了我们团队在企业应用中实施RAG(检索增强生成)的难点与创新。希望通过这篇文章,与大家探讨我们在实践中遇到的问题和解决方案,为从事相关工作的朋友提供一些…...
苹果CMS海洋CMS那个更容易被百度收录?苹果CMS站群
SEO优化和搜索引擎的友好性常常是网站管理员关注的重点。苹果CMS(maccmscn)和海洋CMS都是国内常见的CMS平台,但在搜索引擎优化(SEO)和百度收录方面,苹果CMS凭借其优秀的插件生态系统,特别是泛目…...
高教社杯数模竞赛特辑论文篇-2013年B题:碎纸复原模型与算法
目录 摘要 一、问题重述 二、问题分析 三、符号说明与模型假设 3.1 符号说明 3.2 模型假设 3.3 假设说明 四、模型的建立与求解 4.1 一维碎纸复原模型 4.1.1 图像的预处理 4.1.2 碎纸特征的提取 4.1.3 基于文字特征的识别序列 4.1.4 碎纸距离的定义 4.1.5 复原 TSP 问题 4.1.6 …...
多线程面试题-28问
1、查询Java有哪些线程? public class MultiThread {public static void main(String[] args) {// 获取 Java 线程管理 MXBeanThreadMXBean threadMXBean ManagementFactory.getThreadMXBean();// 不需要获取同步的 monitor 和 synchronizer 信息,仅获…...
golang学习笔记16——golang部署与运维全攻略
推荐学习文档 golang应用级os框架,欢迎star基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总golang学习笔记01——基本数据类型golang学习笔记02——gin框架及基本原理golang学习笔记03——gin框架的核心数据结构golang学…...
Unreal Fest 2024 虚幻引擎影视动画制作的普遍问题
———————————————————————————————————————— 本文为Unreal Fest Shanghai2024讲座内容笔记,非本人所著,原演讲人李文磊。 ————————————————————————————————————————…...
【机器学习-四-无监督学习unsupervise learning-聚类算法简介】
无监督学习unsupervise learning 聚类聚类的过程相似度度量方法聚类的方法划分式层次聚类基于密度的聚类 上一节讲的无监督学习,但是很多人可能会很疑惑,没有目标,那算法是怎么学会该怎样分类的呢?今天就简介一下其中的聚类算法。…...
IPv6路由基础
RIPng RIPng是一种较为简单的内部网关协议,是RIP在IPv6网络中的应用。RIPng主要用于规模较小的网络中,比如校园网以及结构较简单的地区性网络。由于RIPng的实现较为简单,在配置和维护管理方面也远比OSPFv3和IS-IS for IPv6容易,因…...
uniapp开发微信小程序 嵌套(uniapp开发/其他)H5,H5点击跳转微信小程序页面(通信
环境: uniapp开发微信小程序,嵌套webview,H5页面也是用的uniapp框架开发,H5页面点击商品后,需要跳转到微信小程序的详情页面 做法的原因 在微信小程序中使用web-view元素,如果要实现 H5到小程序的通信&am…...
VM虚拟机器配置网络DHCP服务
1、VM虚拟机器网络配置,centos 精简版没有配合网卡,如何配置网络 一、查看网卡信息 使用ip addr或ifconfig -a命令查看系统中现有的网卡设备名称,通常可能是eth0、ens33等类似的名称。 二、编辑网络配置文件 网络配置文件通常位于/etc/syscon…...
使用 jd.item_get API打造可读性商品介绍
在数字化时代,电子商务的蓬勃发展使得商品信息的获取变得至关重要。对于电商平台而言,如何准确、快速地获取商品信息,并以吸引人的方式呈现给消费者,成为提高销售额和用户体验的关键。本文将介绍如何利用 jd.item_get API 获取商品…...
java 通过文件下载地址读取文件内容
需求:读取文件内容,已知文件下载地址 需要引入pdfbox依赖 <dependency> <groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.27</version> </dependency>Override pub…...
打造古风炫酷个人网页:用HTML和CSS3传递笔墨韵味
需要用到的背景大家可以自己找喜欢的风格!!! 当然俺把俺用的背景放到文章最后了哦!!!!! 感谢关注和支持 长期更新哦~~~ 1. 简洁的页面布局:保持优雅和对称 在古风设计中,布局的对称性非常重要…...
vue 项目自适应 配置 px转rem 的插件postcss-pxtorem
1、安装 npm i postcss-plugin-px2rem --save -dev --force找到 postcss.config.cjs 没有的话就新建一个 module.exports {plugins: {// to edit target browsers: use "browserslist" field in package.jsonautoprefixer: {},"postcss-plugin-px2rem":…...
股票程序化交易是,第三方软件申请券商私有接口API的门槛
炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...
JDK8的一些主要的新特性
JDK8(Java Development Kit 8) 是一个重要的版本,带来了许多显著的特性和改进,极大地提升了 Java 语言的功能性和开发效率。以下是 JDK 8 的一些主要新特性: 一、Lambda 表达式 1.简化匿名内部类的写法,…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...
