首页 > 其他分享 >jenkins 的脚本部署

jenkins 的脚本部署

时间:2024-12-31 20:19:39浏览次数:1  
标签:脚本 部署 sudo echo usr 镜像 jenkins docker

前沿

Jenkins 是一款开源的自动化服务器,主要用于实现持续集成(Continuous Integration, CI)和持续交付(Continuous Delivery, CD)。它通过插件的方式扩展功能,支持几乎所有主流的开发、构建、测试和部署工具。

 

一、Jenkins 的核心概念

1. 什么是持续集成(CI)和持续交付(CD)?

  • 持续集成(CI):频繁地将代码集成到主分支,并通过自动化测试验证代码的正确性。
  • 持续交付(CD):自动将经过测试的代码部署到生产环境,确保随时可以交付给用户。

Jenkins 是一个非常流行的 CI/CD 工具,它可以帮助团队实现:

  • 代码自动构建
  • 自动化测试
  • 自动部署到生产或测试环境

2. Jenkins 的核心特点

  1. 易用性:通过图形化界面或配置文件,用户可以轻松配置各种任务。
  2. 高度可扩展性:Jenkins 拥有丰富的插件生态,支持源码管理(如 Git)、构建工具(如 Maven、Gradle)、测试工具(如 JUnit)等。
  3. 支持分布式构建:可以使用多个节点分布式执行任务。
  4. 支持多种平台:可以运行在 Windows、Linux、macOS 等主流操作系统上。

 

二、Jenkins 的核心功能

1.任务(Job)管理

每个任务(Job)可以是代码的构建、测试或部署过程。
支持流水线任务(Pipeline)和传统的自由风格任务。
2.插件支持 Jenkins 的功能可以通过插件扩展。例如: Git 插件:从 Git 仓库拉取代码。 Docker 插件:支持容器化操作。 Slack 插件:通知构建结果到团队沟通工具。
3.分布式构建 支持配置多台代理服务器(Agent),加速构建任务。
4.持续监控 支持实时监控任务执行状态,查看历史构建记录、日志等。 5.通知与反馈 构建结果可以通过邮件、Slack、微信等方式通知开发人员。

 

三、Jenkins 的安装与部署

1. 准备环境

  • 操作系统:推荐使用 Linux 服务器(如 CentOS、Ubuntu)。
  • 运行环境
Jenkins 运行在 Java 环境中,需要安装 JDK(推荐 Java 11 或 Java 17)。
一台最低 2 核 2G 的服务器,推荐 4 核 8G 或以上。
sudo systemctl stop firewalld
sudo systemctl disable firewalld

firewall-cmd --state

 cat /proc/version  查看系统版本

red Hat 是管理工具 yum
debian 是管理工具 apt-get

sudo yum install git

 

需要 更新yum

sudo yum update -y


sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
docker --version

添加阿里云镜像:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


sudo systemctl enable docker

sudo systemctl start docker

 

产看运行 新建一个 daemon.json文件,然后去

docker run -d -p 9003:80 --name demo-dev nginx
// 查看运行的容器
docker ps 
// 进入容器内部
docker exec -it demo-dev /bin/bash


docker run -p 8120:8080 jenkins/jenkins

[root@localhost docker]# cd /etc/docker

[root@localhost docker]# touch daemon.json

[root@localhost docker]# vim daemon.json
# 在daemon.json文件的registry-mirrors列表中,添加/修改国内的镜像源地址
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://registry.docker-cn.com",
    "https://quay.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com/",
    "https://dockerhub.icu"
  ]
}
如何查看 jenkins 版本

docker pull jenkins/jenkins:lts

在宿主机上创建一个目录,用于挂载 Jenkins 容器的工作目录:

mkdir -p /usr/local/jenkins
chmod 777 /usr/local/jenkins

启动

启动
docker run -d -p 8080:8080 -p 50000:50000 -v /usr/local/jenkins:/var/jenkins_home --name myjenkins jenkins/jenkins:lts

获取密码

// 获取密码
docker exec myjenkins cat /var/jenkins_home/secrets/initialAdminPassword

进入容器

// 进入jenkins 容器
docker exec -it jenkins bash

但是这里最好是 Docker Compose  来安装 ,如果未安装,请根据你的操作系统安装 Docker 和 Docker Compose。

 

docker-compose --version

sudo curl -L "https://github.com\/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")')/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

 

然后

sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.7/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

但是会不成功,还是这样吧运行python

安装下面的

yum -y install python3-pip
pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install docker-compose -i https://pypi.tuna.tsinghua.edu.cn/simple


docker-compose --help

OPtion  default:docker-compose.yml

 

然后新建 默认 有个 docker-compose.yml 的文件 需要写入下面的

 

services:
  jenkins:
    image: jenkins/jenkins:2.488
    container_name: jenkins
    restart: always
    privileged: true
    user: root
    volumes:
      - "/usr/local/bin/kubectl:/usr/local/bin/kubectl"
      - "/usr/bin/docker:/usr/bin/docker"
      - "/run/docker.sock:/var/run/docker.sock"
      - "/usr/local/jenkins:/var/jenkins_home"
      - "/etc/localtime:/etc/localtime:ro"
      - "/usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7"
      - "/etc/docker/daemon.json:/etc/docker/daemon.json"
      - "/usr/local/jenkins_ssh:/root/.ssh:ro"
    environment:
      TZ: Asia/Shanghai
    ports:
      - "8080:8080"
      - "50000:50000"

 

当然是根据你自己的配置文件去写

 

然后就是打开你的二IP 端口 8080 去运行jenkins 然后让你git 代码去运行

我自己写了脚本shell 脚本

类似就是分支的区别去打包镜像上传

#!/bin/bash

# 设置构建环境变量
export IMAGE_TAG=${BUILD_TAG:-latest} # Jenkins 自动生成的构建编号
export env=${ENVIRONMENT:-test}      # Jenkins 参数化传入的环境 (test 或 prod)
export DOCKER_USERNAME= 你的阿里云
export DOCKER_PASSWORD= 你的密码

# 执行部署脚本
chmod +x ./deploy.sh
#./deploy.sh


current_time=$(date +%Y-%m-%d-%H-%M-%S)

# 参数变量
NAMESPACE="test"  # 命名空间
PROJECT="cloudephone-dev"  # 项目名称
IMAGELAST="cloudphone-official-website" # 镜像名称后缀
PODNAME="cloudphone-official-website" # pod名称

REGISTRY="你的镜像域名要上传的“
IMAGE_NAME="${PROJECT}/${IMAGELAST}"  # 镜像名称
# TAG=${IMAGE_TAG}
TAG=${current_time}
FULL_IMAGE_NAME="${REGISTRY}/${PROJECT}/${IMAGELAST}:${TAG}"
BUILD_ENV=${env} # 获取环境变量传入的值(test 或 prod)


DEV_KUBECONFIG="/usr/local/kubeconfig/kubeconfig.yaml"  # 开发环境 kubeconfig 文件路径
PRO_KUBECONFIG="/usr/local/kubeconfig/kubeconfig-pro.yaml"  # 生产环境 kubeconfig 文件路径


# 检查 Node 版本
check_node_version() {
    echo "

标签:脚本,部署,sudo,echo,usr,镜像,jenkins,docker
From: https://www.cnblogs.com/yf-html/p/18644743

相关文章

  • ssm校园设备巡检管理系统04b46程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着教育技术的快速发展,校园内的各类教学设备日益增多,其运行状况直接关系到教学质量。为确保设备正常运行,及时发现并处理潜在问题,我们......
  • ssm校园快递管理系统a64pd--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着电子商务的迅猛发展,校园快递业务量逐年攀升。然而,传统的快递管理方式存在效率低下、管理混乱等问题,无法满足广大师生的需求......
  • ssm校园书蜀黍易购平台xk9g6(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着校园规模的不断扩大,学生对于书籍的需求日益多样化,传统的购书方式已难以满足学生的需求。校园内二手书交易虽然活跃,但缺乏规范的管......
  • 基于springcloud分布式的网上商城系统设计与实现【源码+文档+部署讲解】
    系统介绍基于springcloud分布式实现的网上商城系统采用前后端分离的架构方式,系统分为管理员、用户两种角色,实现了用户管理、商品管理、商品分类管理、轮播图管理、咨询管理、订单管理等模块,前台实现了用户登录、用户下单、个人中心、商品评价的功能。技术选型开发工具:idea20......
  • 交互式 Node 脚本
    在Node.js环境中,交互式脚本可以帮助开发者与程序之间进行实时互动。这类脚本通常用于命令行工具、配置管理、自动化任务或与用户的即时对话。交互式脚本通过提供输入提示、实时反馈以及灵活的交互方式,能够大大提升用户体验和操作效率。本文将深入探讨如何使用Node.js编......
  • 部署Zabbix6.0
    一、实验环境二、实验步骤1、删除自带Mariadb和PHPyum-yremovemariadb*php*2、安装Nginxcurl-o/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repoyum-yinstallnginx3、安装PHPyum-yinstallepel-releaserpm-Uvhhttps://......
  • k8s部署milvusdb
    环境:Os:Centos7前提条件,使用到的组件需要提前部署好:kafka(单点,包含zookeeper):https://www.cnblogs.com/hxlasky/p/18615374etcd(单点):https://www.cnblogs.com/hxlasky/p/18641819minio(单点):https://www.cnblogs.com/hxlasky/p/18643317 1.创建namespacekubectlcr......
  • Cleo 远程代码执行漏洞复现(CVE-2024-50623)(附脚本)
    0x01产品描述:        ‌Cleo‌是一款专为Z世代设计的AI理财小助手,自2016年成立以来,已经实现了1.5亿美元的年经常性收入。它不仅帮助用户追踪开销和存款目标,还通过数据分析提供深入的理财建议和个性化的财务指导。Cleo的AI驱动界面可以根据用户的行为进行调整,帮助用户......
  • Linux服务器上shell脚本批量循环测试接口连通性,bash工具循环测试curl性能
    使用curl的-w选项来输出各种时间信息-o/dev/null用于丢弃响应体,只关心头部信息-s用于静默模式,不输出进度信息%{http_code}输出HTTP状态码%{time_namelookup}输出DNS解析时间%{time_connect}输出连接时间%{time_total}输出总时间(包括响应时间)结合shell脚本的循环执......
  • Springboot流浪动物管理系统p2326(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,宠物分类,宠物信息,领养信息,宠物救助,宠物助养,助养捐款,助养明细,关于我们,成员申请开题报告内容一、开题依据1.研究目的及意义随着城市化进程的推进,......