2024-11-13
项目部署
0

目录

使用 Docker 脚本部署 Jenkins
一、前置条件
二、准备工作
三、部署 Jenkins 脚本说明
部署脚本
脚本解析
四、执行脚本
五、访问 Jenkins
六、常用插件
七、总结

使用 Docker 脚本部署 Jenkins

一、前置条件

  1. CentOS 7 或更高版本:确保操作系统为 CentOS。
  2. 已安装 Docker:确认系统已经安装并启动 Docker。

二、准备工作

  1. 文件夹授权

在执行部署脚本之前,您需要为 Jenkins 的 jenkins_home 文件夹授予适当的权限。这样可以确保 Jenkins 运行时能正确访问存储和配置文件。

bash
chmod -R 755 /data/jenkins
  1. 权限设置

接下来,您需要将文件夹权限设置为用户 1000,这是 Jenkins 默认的用户 ID。

bash
chown -R 1000:1000 /data/jenkins/jenkins_home

三、部署 Jenkins 脚本说明

接下来是一个完整的 Bash 脚本,用于通过 Docker 部署 Jenkins,并配置 JDK、Maven、Gradle、Node.js 等开发工具。脚本中还包含一些自定义设置,如修改 Jenkins 插件更新源等。

部署脚本

bash
#!/bin/bash # docker部署启动jenkins脚本 ############################################################ # 执行脚本前的前置操作 # 1、文件夹授权 # chmod -R 755 /data/jenkins # 2、文件夹权限授权到用户1000 # chown -R 1000:1000 /data/jenkins/jenkins_home ############################################################ # 创建文件夹,如果存在则略过 curr_dir=$(pwd) # 初始化秒计数器 SECONDS=0 mkdir -p $curr_dir/jenkins_home # 授权用户 chown -R 1000:1000 $curr_dir/jenkins_home # 停止旧容器运行 docker stop jenkins # 删除旧容器 docker rm jenkins # 删除旧镜像 docker rmi jenkins/jenkins:jdk21 # 运行新的容器 docker run -itd \ --privileged=true \ --restart=always \ --name jenkins \ -p 28080:8080 \ -p 50000:50000 \ -v /data/java/jdk-11.0.17:/data/java/jdk-11.0.17 \ -v /data/java/jdk-17.0.7:/data/java/jdk-17.0.7 \ -v /data/maven/apache-maven-3.8.6:/data/maven/apache-maven-3.8.6 \ -v /data/gradle/gradle-8.5:/data/gradle/gradle-8.5 \ -v /data/nodejs/node-v16.18.1-linux-x64:/data/nodejs/node-v16.18.1-linux-x64 \ -v $curr_dir/jenkins_home:/var/jenkins_home \ -e JAVA_OPTS="-Xms2048m -Xmx2048m -Duser.timezone=Asia/Shanghai" \ jenkins/jenkins:jdk21 # 检查文件是否存在,如果不存在则等待 while [ ! -f "$curr_dir/jenkins_home/hudson.model.UpdateCenter.xml" ] do echo -n '.' # 每秒输出一个点 sleep 1 # 每秒检查一次 done echo echo "耗时: $SECONDS 秒" # 使用sed命令修改文件中的URL sed -i 's|<url>.*</url>|<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>|' $curr_dir/jenkins_home/hudson.model.UpdateCenter.xml # 重启 Jenkins 容器 docker restart jenkins exit 0

脚本解析

  1. 创建工作目录和文件夹授权

    • mkdir -p $curr_dir/jenkins_home:在当前目录下创建 Jenkins 配置存储文件夹 jenkins_home,如果该文件夹已存在,则不再创建。
    • chown -R 1000:1000 $curr_dir/jenkins_home:将该文件夹的权限设置为 Jenkins 默认用户 ID 1000
  2. 停止并删除旧的 Jenkins 容器

    • docker stop jenkins:停止已存在的 Jenkins 容器。
    • docker rm jenkins:删除已停止的 Jenkins 容器。
    • docker rmi jenkins/jenkins:jdk21:删除已存在的 Jenkins 镜像。
  3. 拉取并运行新的 Jenkins 容器

    • docker run 命令使用了以下选项:
      • --privileged=true:授予容器特权,允许容器执行一些受限制的操作。
      • --restart=always:设置容器自动重启策略,确保 Jenkins 在容器崩溃或服务器重启后继续运行。
      • -p 28080:8080:将宿主机的端口 28080 映射到容器的 Jenkins Web 界面端口 8080
      • -p 50000:50000:用于 Jenkins 主机与代理之间的通信。
      • -v:映射宿主机的目录到容器中,以便持久化 Jenkins 配置和相关工具,如 JDK、Maven、Gradle 和 Node.js。
      • -e JAVA_OPTS:设置 Java 参数,指定内存限制和时区设置。
  4. 等待文件生成并修改更新源

    • 使用 while 循环等待 Jenkins 完成初始化,并确认 hudson.model.UpdateCenter.xml 文件已经生成。
    • 通过 sed 命令修改 UpdateCenter.xml 文件中的更新源 URL,将其更改为清华大学镜像源,以加快插件更新速度。
  5. 重启 Jenkins 容器

    • docker restart jenkins:重启 Jenkins 容器,应用更新的配置。

四、执行脚本

确保您已经按照步骤准备好必要的文件夹权限,并且已经安装了 Docker。然后,您可以执行脚本来部署 Jenkins:

bash
chmod +x deploy-jenkins.sh ./deploy-jenkins.sh

该脚本将自动部署 Jenkins,并完成初始化设置。执行时会输出部署过程的时间和日志,您可以根据需要进行调试。

五、访问 Jenkins

完成部署后,您可以通过以下地址访问 Jenkins Web 界面:

http://<your-server-ip>:28080

首次访问时,输入上面脚本中获取的初始管理员密码,配置并安装推荐插件,创建管理员账号,完成 Jenkins 的配置。

六、常用插件

  • Maven Integration —— 简化maven项目部署
  • Gradle —— 简化gradle项目部署
  • NodeJS —— 简化node项目部署
  • WXWork Notification Plugin —— 企业微信通知
  • DingTalk —— 钉钉通知
  • Publish Over SSH —— 远程访问

七、总结

通过这个 Bash 脚本,您可以自动化部署 Jenkins,减少手动配置的复杂度。脚本中包括了 Docker 部署 Jenkins 所需的所有步骤,确保您能够快速启动并运行 Jenkins 环境。同时,脚本中也针对国内用户优化了插件更新源,使用清华大学镜像加速 Jenkins 插件的下载速度。

希望这个教程对您有所帮助!