前沿
Jenkins 是一款开源的自动化服务器,主要用于实现持续集成(Continuous Integration, CI)和持续交付(Continuous Delivery, CD)。它通过插件的方式扩展功能,支持几乎所有主流的开发、构建、测试和部署工具。
一、Jenkins 的核心概念
1. 什么是持续集成(CI)和持续交付(CD)?
- 持续集成(CI):频繁地将代码集成到主分支,并通过自动化测试验证代码的正确性。
- 持续交付(CD):自动将经过测试的代码部署到生产环境,确保随时可以交付给用户。
Jenkins 是一个非常流行的 CI/CD 工具,它可以帮助团队实现:
- 代码自动构建
- 自动化测试
- 自动部署到生产或测试环境
2. Jenkins 的核心特点
- 易用性:通过图形化界面或配置文件,用户可以轻松配置各种任务。
- 高度可扩展性:Jenkins 拥有丰富的插件生态,支持源码管理(如 Git)、构建工具(如 Maven、Gradle)、测试工具(如 JUnit)等。
- 支持分布式构建:可以使用多个节点分布式执行任务。
- 支持多种平台:可以运行在 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