当前位置: 首页 > news >正文

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
  • 添加凭据 系统管理 -> 凭据管理 -> 全局 -> 添加凭据 -> 范围选择全局
  1. Username with password
  2. 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'

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 企业项目中常用的表结构设计
  • 摩托罗拉大顾问ADVISOR BP机拆解评测
  • MySQL索引测试
  • 智能体时代,AI正从“神坛”走向“人间”
  • 工具集锦 论文 施工ing
  • element-plus弹窗内分页表格保留勾选项
  • k8s中的存储
  • Vim使用技巧——第一章 Vim解决问题的方式
  • 力扣 11.盛最多水的容器
  • jpa适配mysql切换达梦可能的坑
  • IBM 撤出背后:国内技术人如何突围?
  • 第157天: 安全开发-Python 自动化挖掘项目SRC 目标FOFA 资产Web 爬虫解析库
  • 系统架构设计师 云原生架构篇
  • java框架
  • 关于若尔当矩阵中过渡矩阵的求法
  • Android组件 - 收藏集 - 掘金
  • CSS实用技巧干货
  • JavaScript实现分页效果
  • jQuery(一)
  • opencv python Meanshift 和 Camshift
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Vultr 教程目录
  • WePY 在小程序性能调优上做出的探究
  • windows下mongoDB的环境配置
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 浏览器缓存机制分析
  • 排序算法学习笔记
  • 三分钟教你同步 Visual Studio Code 设置
  • 小而合理的前端理论:rscss和rsjs
  • 新版博客前端前瞻
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • #Java第九次作业--输入输出流和文件操作
  • #Z2294. 打印树的直径
  • (02)Unity使用在线AI大模型(调用Python)
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (day18) leetcode 204.计数质数
  • (floyd+补集) poj 3275
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • .axf 转化 .bin文件 的方法
  • .dwp和.webpart的区别
  • .htaccess配置常用技巧
  • .NET Reactor简单使用教程
  • .Net Web窗口页属性
  • .NET中分布式服务
  • //解决validator验证插件多个name相同只验证第一的问题
  • @Mapper作用
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • @WebServiceClient注解,wsdlLocation 可配置
  • [100天算法】-不同路径 III(day 73)
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [android] 手机卫士黑名单功能(ListView优化)
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [C#]DataTable常用操作总结【转】