【Jenkins 最新版】安装与配置

919 阅读3分钟

安装

1.安装 Jenkins

  1. 参考官方文档 www.jenkins.io/doc/book/in…

  2. 安装对应的 jdk,如果已经安装,则跳过。Jenkins 官网使用 apt 安装,如果没有可以使用 dnf 安装

    sudo dnf update -y
    sudo dnf install java-17-openjdk-devel -y
    java -version
    
  3. 根据自己的系统,对应安装,我的是 Rocky 系统,Linux 系统安装都差不多

    sudo wget -O /etc/yum.repos.d/jenkins.repo \
        https://pkg.jenkins.io/redhat-stable/jenkins.repo
    sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
    sudo yum upgrade
    # Add required dependencies for the jenkins package
    sudo yum install fontconfig java-17-openjdk
    sudo yum install jenkins
    sudo systemctl daemon-reload
    

image-20241217101743581.png

  1. 使用以下命令使 Jenkins 服务在启动时启动:sudo systemctl enable jenkins

  2. 使用以下命令启动 Jenkins 服务:sudo systemctl start jenkins

  3. 使用以下命令检查 Jenkins 服务的状态:sudo systemctl status jenkins

image-20241217102222253.png

Jenkins 配置与插件

  1. 浏览器中输入 http://ip:8080/

  2. 使用 cat /var/lib/jenkins/secrets/initialAdminPassword 查询管理员面膜,然后页面中输入管理员密码

image.png

  1. 如果使用安装推荐的插件,时间挺长,耐心等待安装

image-20241217102912016.png

  1. 安装完成根据指引创建管理员用户

  2. 汉化,来到插件这里,发现汉化插件已经安装,重启 Jenkins 即可:systemctl restart jenkins.service

image-20241217111126318.png

  1. 安装后续需要用的插件,SSH、Publish Over SSH

image-20241217111303255.png

image-20241217111433591.png

注:这个 ssh 安装要报异常,官方还没解决,直接安装没事

  1. 配置系统工具

    主要配置Publish Over SSH,Jenkins 把项目拉下来打包成 jar 包之后,会将这个 jar 包发送到你指定的目录

  • 生成公钥私钥:

    # 生成公钥私钥 全程回车就行 会生成在默认的位置 /root/.ssh/id_rsa
    ssh-keygen -m PEM -t rsa -b 4096
    # 将发送到Jenkins服务器
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.253.128
    # 查看是否目录
    [root@localhost lib]# cd /root/.ssh
    [root@localhost .ssh]# ll
    total 20
    -rw-------. 1 root root  752 Dec 17 11:47 authorized_keys
    -rw-------. 1 root root 3243 Dec 17 11:26 id_rsa
    -rw-r--r--. 1 root root  752 Dec 17 11:26 id_rsa.pub
    -rw-------. 1 root root  840 Dec 17 11:47 known_hosts
    -rw-r--r--. 1 root root   96 Dec 17 11:47 known_hosts.old
    # 查看私钥 复制后面用到
    [root@localhost .ssh]# cat id_rsa
    
  • 添加全局凭证:右上角-->凭证-->用户-->全局凭证-->add credentials

image-20241217113152829.png

image-20241217113547018.png

  • 添加Publish over SSH配置:系统管理-->系统配置-->ssh servers-->新增

image-20241217115055007.png

image-20241217114947845.png

  • 测试成功测保存

image-20241217115127874.png

全局配置

  • 配置 maven,根据自己安装的 maven 选中对应的版本

image-20241217173558279.png

image-20241217173625025.png

创建任务

  • 创建 Maven 项目

image-20241217115321227.png

  • 源码管理。这里注意:确认服务器已经安装 git 工具

image-20241217142859006.png

  • 添加凭证,填上git 的用户名密码即可

image-20241217120139055.png

  • 构建环境

image-20241217115127874.png

  • 启动脚本,提供参考

    #!/bin/bash
    
    # 设置JDK 11路径
    export JAVA_HOME_11=/usr/lib/jvm/jre-11
    export PATH=$JAVA_HOME_11/bin:$PATH
    
    # 应用程序名称和JAR文件路径
    APP_NAME="ldj001"
    JAR_PATH="/usr/java/test/java-1.0-SNAPSHOT.jar" # 请替换为您的JAR文件实际路径
    JAR_DIR="/usr/java/test"
    
    # Java启动参数
    JAVA_OPTS="-Xms256m -Xmx256m"
    
    # 检查并杀死现有进程
    PIDS=$(ps aux | grep "${JAR_PATH}" | grep -v grep | awk '{print $2}')
    if [ ! -z "$PIDS" ]; then
        for PID in $PIDS; do
            echo "Stopping the running instance of ${APP_NAME} with PID: $PID"
            kill $PID
            sleep 1 # 给程序一些时间来处理终止信号
            if kill -0 $PID > /dev/null 2>&1; then
                echo "Process $PID did not terminate gracefully, forcing shutdown."
                kill -9 $PID
            fi
        done
    fi
    
    # 启动新实例
    echo "Starting ${APP_NAME} with options: $JAVA_OPTS"
    nohup ${JAVA_HOME_11}/bin/java $JAVA_OPTS -jar $JAR_PATH --spring.config.location=$JAR_DIR/config/application.yml > $JAR_DIR/app.log 2>&1 &
    
    # 输出启动信息
    echo "${APP_NAME} has been started."
    
  • 打包,然后保存

image-20241217173410952.png

构建任务

  • 点击构建、查看日志

image-20241217173846746.png

  • 第一次构建会下载依赖,会挺久。出现 success 就构建成功了。

image-20241217173940900.png

提交代码自动部署

  • 回到任务配置,构建触发器

image-20241217175758901.png

  • 去 github 设置 webHooks,这里以 gitee 为例

image-20241217180032118.png

image-20241217180214244.png

总结

踩了很多坑,包括 jdk、maven、配置问题等等,终于是成功运行了。如果有什么疑问,欢迎大家留言讨论。