Java+Github+Jenkins部署

这篇具有很好参考价值的文章主要介绍了Java+Github+Jenkins部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java项目—Jenkins部署笔记

一,准备

  • 一台服务器
  • 操作系统,示例为ubuntu 22.0.4 可运行lsb_release -a查看

二,安装

  • docker

    • 更新软件包列表:
    sudo apt update
    
    1. 安装必要的软件包,以便使用HTTPS通过APT下载软件包:
    bashCopy code
    sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
    
    1. 添加Docker的官方GPG密钥:
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
    1. 添加Docker APT存储库:
    echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    1. 更新软件包列表以包括Docker存储库:
    sudo apt update
    
    1. 安装Docker引擎:
    sudo apt install -y docker-ce
    
    1. 启动Docker服务:
    sudo systemctl start docker
    
    1. 将Docker添加到启动时自动启动:
    sudo systemctl enable docker
    
    1. 验证Docker是否正确安装:
    sudo docker --version
    

    现在,Docker已经成功安装在您的Ubuntu系统上。您可以使用docker命令来管理和运行容器。

  • git

    • 打开终端:可以通过按下Ctrl + Alt + T 键组合,或者在应用程序搜索中找到“终端”。

    • 运行以下命令以更新软件包列表:

      sudo apt update
      
    • 安装Git:

      sudo apt install git
      
    • 安装完成后,可以通过运行以下命令来验证安装是否成功,并显示安装的Git版本:

      git --version
      

    现在,你已经成功在Ubuntu系统上安装了Git。你可以使用git命令来管理代码库、版本控制和其他Git操作。如果你还不熟悉Git的使用,可以查阅Git的文档或教程,以便更好地理解和利用其功能。

  • jdk

    • 自行下载,这里举例为 jdk-17_linux-x64_bin.tar.gz Java Downloads | Oracle 中国

    • sudo tar -zxvf  jdk-17_linux-x64_bin.tar.gz -C /usr/local
      
    • 然后就可以通过 "cd /usr/local"和“pwd”查看具体路径,以便后面配置,这里给出示例的路径:

    • /usr/local/jdk-17.0.8
      
  • maven

    • 自行下载,这里举例为 apache-maven-3.9.4-bin.tar.gz Maven – Download Apache Maven

    • sudo tar -zxvf  apache-maven-3.9.4-bin.tar.gz -C /usr/local
      
    • 然后就可以通过 "cd /usr/local"和“pwd”查看具体路径,以便后面配置,这里给出示例的路径:

    • /usr/local/apache-maven-3.9.4
      
  • jenkins

    • jenkins的安装可以在这个地址下载链接Jenkins download and deployment

    • 后台运行 Jenkins

      使用以下命令在后台运行 Jenkins:

      java -jar jenkins.war --httpPort=8080
      

      这将在 8080 端口启动 Jenkins。如果您希望使用不同的端口,请更改 --httpPort 参数的值。

    • 访问 Jenkins Web 界面

      在浏览器中输入 http://localhost:8080,然后按照 Jenkins 配置向导中的指示进行设置。在需要输入管理员密码时,请查找 Jenkins 日志中的初始密码,并在配置向导中使用它。

    • 将 Jenkins 配置为服务(可选)

      如果您希望将 Jenkins 配置为系统服务,以便在系统启动时自动运行,您可以创建一个 Systemd 服务单元。您可以创建一个名为 /etc/systemd/system/jenkins.service 的文件,并在其中添加以下内容:

      plaintextCopy code[Unit]
      Description=Jenkins Server
      After=network.target
      
      [Service]
      User=<your_username>
      ExecStart=/usr/bin/java -jar /path/to/jenkins.war --httpPort=8080
      Restart=always
      
      [Install]
      WantedBy=multi-user.target
      

      请将 <your_username> 替换为您的用户名,并将 /path/to/jenkins.war 替换为您实际下载的 Jenkins WAR 文件的路径。然后,使用以下命令启用和启动服务:

      bashCopy codesudo systemctl enable jenkins
      sudo systemctl start jenkins
      

三,Jenkins配置

1.基础插件安装

打开页面后会有一些基础的配置和插件的安装记得选默认的(因为,你也不知道需要什么插件,当然我也不知道),自行安装一下,如果要查看管理员密码的话,可以使用

cat命令+[页面提示的路径]

进入后,打开点击系统管理,在其中找到插件管理,在第二个选项中安装Docker相关的插件
Java+Github+Jenkins部署,java,github,jenkins
这个是我已经安装的(OS:因为不知道哪个对应哪个,所以全点啦)
Java+Github+Jenkins部署,java,github,jenkins
所有的插件安装完成后,继续回服务器中重启jenkins

sudo systemctl restart jenkins

2.全局工具配置

还是回到系统管理中,找到全局工具配置打开,看图配置吧,只要路径对就行了

  • Maven

Java+Github+Jenkins部署,java,github,jenkins

  • JDK

Java+Github+Jenkins部署,java,github,jenkins

  • Git
    Java+Github+Jenkins部署,java,github,jenkins
    这些配置好后,保存退出,同样在系统管理中找到凭证管理
    进来后,直接点击到最后出现这界面即可
    Java+Github+Jenkins部署,java,github,jenkins
    点击新增,选择如下
    Java+Github+Jenkins部署,java,github,jenkins
    输入Github用户名和本地的私钥,大概在C:\Users\Administrator.ssh中的 id_rsa
    其他的描述可以输入:ssh key 这个随意,其他的不用输入,点击创建即可

然后再次新建一个凭证,选择
Java+Github+Jenkins部署,java,github,jenkins
这里只需要输入Secret即可,这个值是Github的访问密钥,大概生成步骤为:

进入Github,点击头像,选择Settings,滑到最后选择Developer Settings,点击Personal access tokens下第一个直接生成,然后填写就行。

然后备注写成token,点击创建

好,现在凭证配置完毕,到时候需要用到的时候,可以来此查看。

接下来还是系统管理中点开系统配置,找到GitHub的位置,进行连接测试
Java+Github+Jenkins部署,java,github,jenkins
这个名称就是你的GitHub的用户名,记得替换,凭证,选择token凭证,进行测试,如果不行,请重新配置token,或重新生成token (tnnd,这苦不能我一个受!)

好!很有精神!现在所有配置就完成了,到这里就可以新建一个Job来搭建部署了!

四,构建部署

好,到这里,就可以进行构建部署了,为了演示方便,我将使用下面的Java项目来当做示例:
ZhMenX的测试项目,可以下载下来调试一下。如果,我记得绑定了资源,可以查看下。

然后就是把这个项目放到你的github上面了
之后就是新建任务了
Java+Github+Jenkins部署,java,github,jenkins
我们这里选择流水线(小声BB:目前只尝试过这个)命名为Test
Java+Github+Jenkins部署,java,github,jenkins
这里就是配置的地方,选择Github项目的选项,然后输入自己的github项目地址
然后就是触发器的构建
Java+Github+Jenkins部署,java,github,jenkins
这里我使用了轮询(我也想使用Github hook,但是不会,有会的大神,请教教我,我找不到那个jenkins的URL)

最后就是定义流水钱的脚本了,这里我提供一个示例:

pipeline {
    agent any
        
    tools {
        // 指定使用的JDK工具
        jdk 'jdk17'
    }
    environment {
        JDK_VERSION = '17'
        MAVEN_VERSION = '3.9.4'
        DOCKER_IMAGE_NAME = 'test_java'
        MAVEN_HOME = '/usr/local/apache-maven-3.9.4' // 设置Maven的路径
        DOCKER_HOME = '/usr/bin/docker' // 设置Docker的路径
        PATH = "${tool 'jdk17'}/bin:${MAVEN_HOME}/bin:${DOCKER_HOME}:${env.PATH}"
    }
    
    stages {
        stage('Checkout') {
            steps {
                // 检出代码库到工作目录
                checkout([
                    $class: 'GitSCM',
                    branches: [[name: '*/master']], // 指定主分支名称
                    userRemoteConfigs: [[
                        url: 'git@github.com:ZhMenX/Test.git', // GitHub仓库URL需要替换为自己的
                        credentialsId: '' // 您的凭证ID 替换为自己的,这个就是ssh那个
                    ]]
                ])
            }
        }
        
        stage('Build and Test') {
            steps {
                // 构建和测试Spring Boot项目
                sh 'mvn clean install'
            }
        }
        
        stage('Dockerize') {
            steps {
                script {
                    def dockerImageTag = "${DOCKER_IMAGE_NAME}:${BUILD_NUMBER}"
                    // 检查是否存在同名容器并停止
                    def existingContainerId = sh(script: "docker ps -aq -f name=${DOCKER_IMAGE_NAME}", returnStdout: true).trim()
                    if (existingContainerId) {
                        echo "Stopping existing container: ${existingContainerId}"
                        sh "docker stop ${existingContainerId}"
                    }
                    // 检查是否存在同名镜像
                    def existingImageId = sh(script: "docker images -q ${DOCKER_IMAGE_NAME}", returnStdout: true).trim()
                    if (existingImageId) {
                        echo "Deleting existing image: ${existingImageId}"
                        // 停止使用镜像的容器
                        def runningContainers = sh(script: "docker ps -aq -f ancestor=${existingImageId}", returnStdout: true).trim()
                        if (runningContainers) {
                            sh "docker stop ${runningContainers}"
                        }
                        // 删除镜像
                        sh "docker rmi -f ${existingImageId}"
                    }
                    sh "docker build -t ${dockerImageTag} ." // 构建 Docker 镜像
                    sh "docker run -d -p 8090:8090 ${dockerImageTag}" // 运行 Docker 容器
                }
            }
        }
    }
}

最后补充一下:当需要修改端口时,测试项目中dockerfile和application.yml都需要修改,以及流水线脚本。

OK,到这里就完成了,当然,很大概是运行不成功的,哈哈哈哈哈哈哈哈,感受痛苦吧!

五,Bug扫荡

1,拉取代码失败

原因,主机密钥的配置问题2
解决方案:

ssh -T git@github.com
ssh-keyscan github.com >> ~/.ssh/known_hosts

2,docker权限问题

当前用户没有docker权限,这个不管事的话,只能试试重启大法了

sudo usermod -aG docker $USER

作为经历过docker 权限错误洗礼的我来说,我也没啥其他办法,擦…文章来源地址https://www.toymoban.com/news/detail-681807.html

六,我的问题(球球了)

  1. 我有尝试过把jenkins当容器来运行也就是DinD,比如docker run -d --name jenkins-dind --privileged --user root -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts,但是这样并不能解决jenkins执行docker在脚本中执行docker run等命令,提示docker:not found的问题
  2. 我尝试过实现提交代码到远程库就触发构建的操作,但是在配置hook的时候,找不到jenkins的hook地址,点击那个选项GitHub hook trigger for GITScm polling不会弹出,hook的连接,是需要其他的插件来实现嘛,求指教

到了这里,关于Java+Github+Jenkins部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jenkins 拉取 GitHub 私有仓库失败问题

    添加仓库的时候提示 stderr: fatal: Cannot prompt because user interactivity has been disabled. 把在 GitHub账户设置中生成的个人访问令牌填到地址里   

    2024年02月15日
    浏览(32)
  • jenkins安装,打包,部署java项目

    一、安装 下载地址 :https://www.jenkins.io/zh/download/ 选择 CentOS/Fedora/Red Hat版本 安装命令如下: 至此 不出意外 安装已经结束 启动 Jenkins 记得打开8080防火墙 如果出现 Build step ‘Execute shell’ marked build as failure 权限不够 解决方法,将Jenkins运行用户改为root,默认Jenkins用户 JENKINS

    2024年02月02日
    浏览(25)
  • 【Jenkins】win 10 / win 11:Jenkins 的下载、安装、部署(Jenkins 2.365 基于 Java 17)

    目录 一、安装 JDK 二、Jenkins 下载 三、准备服务登录凭据 四、Jenkins 安装 (1)自定义路径安装 (2)提供服务登录凭据 (3)设置端口 (4)选择 Java 主目录 (jdk 或 jre) (5)自定义设置 (6)安装完成 五、Jenkins 使用 Jenkins 建议下载当前最新版本:  2.365 Jenkins 2.365   需指定

    2024年02月03日
    浏览(71)
  • 【jenkins】idea+jenkins+docker+dockerfile+compose流水线部署java应用

    目录 整体架构 环境准备 安装docker以及docker-compose jenkins安裝 maven安装 portainer面板安装 sonarqube安装  在项目中增加dockerfile和compose.yml脚本  Dockerfile脚本内容 compose.yml脚本内容 jenkins安装必要插件 jenkins增加流水线任务 增加pipeline任务job  增加pipeline脚本 WXWork Notification Plugin 

    2024年02月16日
    浏览(50)
  • jenkins部署java服务发生(code=exited, status=203/EXEC)

    背景 :新开发一个java服务,写完部署用公司共用的jenkins服务部署发现报错,报错如下。 1、使用 systemctl status xxx-xx-xx-service.service 查看该服务发现,也可以使用 cat /var/log/message 查看系统日志找报错原因。 这个日志中(code=exited, status=203/EXEC)这个是错误信息,我百度了一下,查

    2024年02月10日
    浏览(35)
  • jenkins使用shell脚本自动部署java项目,nohup启动不成功

    百度搜索了很长时间,很多种说法,但是都没说太明白,整合了很长时间,测出来了解决方法,仅测试了自由风格项目和流水线项目,其他的选项未测试,jenkins版本2.400。   以下为正文: 执行脚本时,因为jenkins会在构建结束时,将shell运行期间产生的进程全部关闭,所以n

    2024年02月08日
    浏览(31)
  • 轻松拿捏Jenkins(Linux)+Java11+Docker自动化打包部署

    注:本文由笔者小白亲手实践写作,涵盖较全,创作不易,且行且珍惜!! 历时24小时,包含Jenkins环境构建部署过程中的99%问题,确定不来看一下吗? 由于Jenkins自2.357版本之后,上新的版本需要提供Java11及以上版本的支持,且之前的版本市场上推荐的绝大多数插件已经不再

    2024年02月06日
    浏览(32)
  • Linux离线安装Jenkins、Maven、Gitlab、Git,部署Java项目

    《Linux安装java》 把Maven上传到Linux服务器/data/目录下进行解压 配置环境变量 找到export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL在下面追加 保存后使环境变量生效并校验是否maven是否安装成功 修改默认依赖仓库位置 找到localRepository/path/to/local/repo/localRepository, 在注释外面追加

    2024年02月07日
    浏览(36)
  • k8s的jenkins部署java项目到k8s集群cicd持续集成

    k8s1.16.0-k8s的jenkins部署java项目到k8s集群cicd(ci成,cd手动部署的) 注意: 本文档只是实现了ci,cd是通过ci生成的镜像,再手工再k8s-master执行的部署(只因pod部署的jenkins连接k8s的认证不知怎么操作,若jenkins是单独部署在k8s-master机器上,能直接在master执行kubectl命令就没这个问题了

    2024年02月03日
    浏览(45)
  • 使用java -jar jenkins.war启动jenkins

    2024年02月12日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包