发布于:,更新于:

安装Jenkins并用于部署SpringBoot项目

安装Jenkins

获取与安装Jenkins

在基于Debian的发行版(如Ubuntu)上,通过apt安装Jenkins。

an apt repository可获得最新版本,较老但稳定的LTS版本在this apt repository这里可获得

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

安装这个软件包将会:

  • 将Jenkins设置为启动时启动的守护进程。查看/etc/init.d/jenkins获取更多细节
  • 创建一个’jenkins‘用户来运行此服务
  • 直接将控制台日志输出到文件/var/log/jenkins/jenkins.log。如果您正在解决Jenkins问题,请检查此文件
  • /etc/default/jenkins`为启动填充配置参数,例如JENKINS_HOME
  • 将Jenkins设置为在端口8080上进行监听。使用浏览器访问此端口以开始配置

安装后设置向导

下载安装并运行Jenkins后,即将开始进入安装向导。

此安装向导会引导您完成几个快速“一次性”步骤来解锁Jenkins, 使用插件对其进行自定义,并创建第一个可以继续访问Jenkins的管理员用户。

解锁Jenkins

当您第一次访问新的Jenkins实例时,系统会要求您使用自动生成的密码对其进行解锁。

  1. 浏览到 http://localhost:8080(或安装时为Jenkins配置的任何端口),并等待 解锁 Jenkins 页面出现。

  2. 从Jenkins控制台日志输出中,复制自动生成的字母数字密码(在两组星号之间)。

  3. 解锁Jenkins 页面上,将此 密码 粘贴到管理员密码字段中,然后单击 继续

    • 如果您以分离模式在Docker中运行Jenkins,则可以从Docker日志(above) 访问Jenkins控制台日志。
    • Jenkins控制台日志显示可以获取密码的位置(在Jenkins主目录中)。 必须在新Jenkins安装中的安装向导中输入此密码才能访问Jenkins的主UI。 如果您在设置向导中跳过了后续的用户创建步骤, 则此密码还可用作默认admininstrator帐户的密码(使用用户名“admin”)

自定义jenkins插件

Customize Jenkins 页面内, 您可以安装任何数量的有用插件作为您初始步骤的一部分。

两个选项可以设置:

  • 安装建议的插件 - 安装推荐的一组插件,这些插件基于最常见的用例.
  • 选择要安装的插件 - 选择安装的插件集。当你第一次访问插件选择页面时,默认选择建议的插件。

这里我安装了 Git plugin 和 Maven Integration plugin 两个插件用于git管理

创建第一个管理员账户

最后,在customizing Jenkins with plugins之后,Jenkins要求您创建第一个管理员用户。 . 出现“ 创建第一个管理员用户 ”页面时, 请在各个字段中指定管理员用户的详细信息,然后单击 保存完成 。 . 当 Jenkins准备好了 出现时,单击开始使用 Jenkins

Notes: * 这个页面可能显示 Jenkins几乎准备好了! 相反,如果是这样,请单击 重启 。 * 如果该页面在一分钟后不会自动刷新,请使用Web浏览器手动刷新页面。如果需要,请使用您刚刚创建的用户的凭据登录到Jenkins,并准备好开始使用Jenkins!

部署SpringBoot项目

  • 具体操作配置过程参考Jenkins自动构建部署SpringBoot项目

  • 记录一下使用的脚本

    #!/bin/bash
    source /etc/profile
    appName=xxxx-server
    ctime=$(date +%Y%m%d%H%M%S)
    api_dir=/opt/jenkins/back-end/xxxx/test
    backup_dir=/opt/xxxx-server/api-backup
    workspace_dir=/var/lib/jenkins/workspace/xxxx-test/xxxx-server/target
    echo 'maven构建成功,开始备份~'
    cp $api_dir/zherp-server.jar $backup_dir/xxxx-server-$ctime.jar
    echo '备份完成,正在拷贝jar包到指定目录~'
    cp $workspace_dir/xxxx-server.jar $api_dir/xxxx-server.jar
    echo '拷贝完成~'
    cd $api_dir
    echo '开始部署接口服务~'
    BUILD_ID=DONTKILLME
    pidFile="$appName.pid"
    if [ -f "$pidFile" ]; then
    pid=$(cat "$api_dir/$pidFile")
    echo "STOP pid:$pid"
    kill -9 $pid
    rm "$pidFile"
    fi
    nohup java -jar -Dspring.profiles.active=staging -Dserver.port=58080 -Xms256m -Xmx1024m $api_dir/$appName.jar > /dev/null 2>&1 &
    echo $! > "$api_dir/$pidFile"

    其中BUILD_ID=DONTKILLME表示Jenkins启动脚本之后不会自动杀死子进程。