• Jenkins 系列:Jenkins 安装(Windows、Mac、Centos)和简介


    简介

    Jenkins前身是 Hudson,使用 java 语言开发的自动化发布工具。在中大型金融等企业中普遍使用 Jenkins 来作为项目发布工具。 Jenkins 官方提供的插件使 Jenkins 更为强大。Jenkins 是一个自动化服务器,目前发展超过 15 年,比较成熟的 CI 工具(也可以 CD)能够实现自动化集成发布。建立好流水线后,期间无需专业运维人员介入,开发人员随时发布部署

    image

    发展历史

    Jenkins 的前身是 Hudson,采用 JAVA 编写的持续集成开源工具。

    Hudson 由 Sun 公司在 2004 年启动,第一个版本于 2005 年在 java.net 发布。

    2007 年开始 Hudson 逐渐取代 CruiseControl 和其他的开源构建工具的江湖地位。

    在 2008 年的 JavaOne 大会上在开发者解决方案中获得杜克选择大奖(Duke’s Choice Award)。

    在 2010 年 11 月期间,因为 Oracle 对 Sun 的收购带来了 Hudson 的所有权问题。主要的项目贡献者和 Oracle 之间, 尽管达成了很多协议,但有个关键问题就是商标名称“Hudson”。

    甲骨文在 2010 年 12 月声明拥有该名称并申请商标的权利。因此,2011 年 1 月 11 日,有人要求投票将项目名称从“Hudson”改为“Jenkins”。

    2011 年 1 月 29 日,该建议得到社区投票的批准,创建了 Jenkins 项目。

    2011 年 2 月 1 日,甲骨文表示,他们打算继续开发 Hudson,并认为 Jenkins 只是一个分支,而不是重命名。因此,Jenkins 和 Hudson 继续作为两个独立的项目,每个都认为对方是自己的分支。

    到 2013 年 12 月,GitHub 上的 Jenkins 拥有 567 个项目成员和约 1,100 个公共仓库,与此相对的 Hudson 有 32 个项目成员和 17 个公共仓库。到现在两者的差异更多,应该说 Jenkins 已经全面超越了 Hudson。此外,大家可能是出于讨厌 Oracle 的情绪,作为 Java 开发者天然地应该支持和使用 Jenkins。

    应用场景

    集成 svn/git 客户端实现源代码下载检出

    集成 maven/ant/gradle/npm 等构建工具实现源码编译打包单元测试

    集成 sonarqube 对源代码进行质量检查(坏味道、复杂度、新增 bug 等)

    集成 SaltStack/Ansible 实现自动化部署发布

    集成 Jmeter/Soar/Kubernetes/…..

    可以自定义插件或者脚本通过 jenkins 传参运行

    可以说 Jenkins 比较灵活插件资源丰富,日常运维工作都可以自动化。

    image

    Jenkins 安装部署

    先决条件

    Java8 无论是 Java 运行时环境(JRE)还是 Java 开发工具包(JDK)都可以。

    硬件要求

    最低配置: 256MB 可用内存,1GB 可用磁盘空间(Docker 推荐 10GB)。

    小团队配置: 1GB+可用内存, 50GB+可用磁盘空间。

    软件包下载

    最新 war 包

    最新 pkg 包

    最新 exe 包

    最新 rpm 包

    war 包部署

    Jenkins 的 web 应用程序 archive(war)包是可以在任何支持 Java 的操作系统上运行。

    将下载的 war 包放到 jenkins 的目录中(可以自定义)。

    运行命令 java -jar jenkins.war启动。

    此时可以看到 Jenkins 的启动日志,查看是否有异常。

    通过浏览器访问http://localhost:8080

    注意:可以通过 –httpPort 方式指定端口, java -jar jenkins.war -httpPort=9090。

    linux 系统部署

    首先下载 rpm 软件包,安装rpm –ivh jenkins-2.150.3-1.1.noarch.rpm

    systemctl start jenkins #启动服务

    systemctl enable jenkins #开机自启

    #!/bin/bash
    #jdk must be installed before jenkins can be installed.
    
    #创建jenkins rpm下载目录
    mkdir -p /usr/local/src/jenkins
    #进入jinkins rpm包目录
    cd /usr/local/src/jenkins
    #下载 jenkins rpm 包
    wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.263.1-1.1.noarch.rpm
    #安装 rpm 包
    rpm -ivh jenkins-2.263.1-1.1.noarch.rpm
    #移动到 local目录下
    mv /var/lib/jenkins /usr/local/jenkins
    #启动jenkins
    systemctl start jenkins
    #设置开机启动
    systemctl enable jenkins
    

    mac 系统部署

    brew install jenkins 安装 jenkins 最新版本

    brew install jenkins-lts 安装 jenkinsLTS 版本

    windows 系统部署

    下载软件包通过向导安装即可。

    安装后基本配置

    解锁

    当您第一次访问 Jenkins 的时候,系统会要求您使用自动生成的密码对其进行解锁。解锁秘钥可以通过$JENKINS_HOME/secrets/initialAdminPassword 文件获取。还可以通过在启动日志中获取。

    image

    image

    自定义 jenkins 插件

    解锁 Jenkins 之后再自定义 Jenkins 页面,您可以安装任何数量的插件作为初始化的一部分。

    分别是安装建议的插件和选择要安装的插件(如果不确定要安装那些的时候可以选择此选项,灵活的自定义安装)。

    插件安装多了也没关系,可以后面再 jenkins 插件管理页面删除哦(会很繁琐)。

    image

    创建用户

    在这里创建一个管理员账号,到此 jenkins 的初始化配置已完成。

    image

    配置更新站点

    当改完后,其实还是很慢 🤷‍♀️ 建议配置 nginx 做域名代理 😜

    由于使用官方的站点速度相对很慢,这里采用清华大学的 jenkins 更新站点

    image

    配置文件

    以 rpm 方式部署的配置文件在/etc/sysconfig/jenkins,可以定义 Jenkins 启动参数和端口。

    jenkins 脚本存放目录:/etc/rc.d/init.d

    grep -v ^$ /etc/sysconfig/jenkins | grep -v ^#
    

    image

    ## Path:        Development/Jenkins
    ## Description: Jenkins Automation Server
    ## Type:        string
    ## Default:     "/var/lib/jenkins"
    ## ServiceRestart: jenkins
    #
    # Directory where Jenkins store its configuration and working
    # files (checkouts, build reports, artifacts, ...).
    #
    JENKINS_HOME="/var/lib/jenkins"
    
    ## Type:        string
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # Java executable to run Jenkins
    # When left empty, we'll try to find the suitable Java.
    #
    JENKINS_JAVA_CMD="/usr/local/jdk/bin/java"
    
    ## Type:        string
    ## Default:     "jenkins"
    ## ServiceRestart: jenkins
    #
    # Unix user account that runs the Jenkins daemon
    # Be careful when you change this, as you need to update
    # permissions of $JENKINS_HOME and /var/log/jenkins.
    #
    JENKINS_USER="jenkins"
    
    ## Type:        string
    ## Default: "false"
    ## ServiceRestart: jenkins
    #
    # Whether to skip potentially long-running chown at the
    # $JENKINS_HOME location. Do not enable this, "true", unless
    # you know what you're doing. See JENKINS-23273.
    #
    #JENKINS_INSTALL_SKIP_CHOWN="false"
    
    ## Type: string
    ## Default:     "-Djava.awt.headless=true"
    ## ServiceRestart: jenkins
    #
    # Options to pass to java when running Jenkins.
    #
    JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
    
    ## Type:        integer(0:65535)
    ## Default:     8080
    ## ServiceRestart: jenkins
    #
    # Port Jenkins is listening on.
    # Set to -1 to disable
    #
    JENKINS_PORT="8080"
    
    ## Type:        string
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # IP address Jenkins listens on for HTTP requests.
    # Default is all interfaces (0.0.0.0).
    #
    JENKINS_LISTEN_ADDRESS=""
    
    ## Type:        integer(0:65535)
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # HTTPS port Jenkins is listening on.
    # Default is disabled.
    #
    JENKINS_HTTPS_PORT=""
    
    ## Type:        string
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # Path to the keystore in JKS format (as created by the JDK 'keytool').
    # Default is disabled.
    #
    JENKINS_HTTPS_KEYSTORE=""
    
    ## Type:        string
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # Password to access the keystore defined in JENKINS_HTTPS_KEYSTORE.
    # Default is disabled.
    #
    JENKINS_HTTPS_KEYSTORE_PASSWORD=""
    
    ## Type:        string
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # IP address Jenkins listens on for HTTPS requests.
    # Default is disabled.
    #
    JENKINS_HTTPS_LISTEN_ADDRESS=""
    
    ## Type:        integer(0:65535)
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # HTTP2 port Jenkins is listening on.
    # Default is disabled.
    #
    # Notice: HTTP2 support may require additional configuration, see Winstone
    # documentation for more information.
    #
    JENKINS_HTTP2_PORT=""
    
    ## Type:        string
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # IP address Jenkins listens on for HTTP2 requests.
    # Default is disabled.
    #
    # Notice: HTTP2 support may require additional configuration, see Winstone
    # documentation for more information.
    #
    JENKINS_HTTP2_LISTEN_ADDRESS=""
    
    ## Type:        integer(1:9)
    ## Default:     5
    ## ServiceRestart: jenkins
    #
    # Debug level for logs -- the higher the value, the more verbose.
    # 5 is INFO.
    #
    JENKINS_DEBUG_LEVEL="5"
    
    ## Type:        yesno
    ## Default:     no
    ## ServiceRestart: jenkins
    #
    # Whether to enable access logging or not.
    #
    JENKINS_ENABLE_ACCESS_LOG="no"
    
    ## Type:        integer
    ## Default:     100
    ## ServiceRestart: jenkins
    #
    # Maximum number of HTTP worker threads.
    #
    JENKINS_HANDLER_MAX="100"
    
    ## Type:        integer
    ## Default:     20
    ## ServiceRestart: jenkins
    #
    # Maximum number of idle HTTP worker threads.
    #
    JENKINS_HANDLER_IDLE="20"
    
    ## Type:        string
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # Folder for additional jar files to add to the Jetty class loader.
    # See Winstone documentation for more information.
    # Default is disabled.
    #
    JENKINS_EXTRA_LIB_FOLDER=""
    
    ## Type:        string
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # Pass arbitrary arguments to Jenkins.
    # Full option list: java -jar jenkins.war --help
    #
    JENKINS_ARGS=""
    
    
  • 相关阅读:
    扫描线及其应用
    vue+DataV 易懂使用方式
    UVA 10050【埃筛】【set】
    【JAVA】-- 简易超市管理系统窗口(五)(实现思路+每步代码)
    备份一下自己的博客主题
    排序算法:选择排序
    析构函数的相关解释
    elasticsearch有什么用
    Git远程仓库及注册码云
    微软Ignite 2023大盘点:GPT-4 Turbo、DALL-E 3等
  • 原文地址:https://www.cnblogs.com/vic-tory/p/17938201