Linux部署Jenkins Nginx转发Jenkins https,jenkins添加windows节点。

一、安装与配置

最简单的安装,前往官网下载通用的 war 包部署到本地的 Tomcat 中。

插件安装

系统配置

全局工具配置

Nginx转发的配置

如果前端服务的 Nginx 部署了 SSL 证书时,许多操作会引发web错误,可讲下面的配置添加到nginx配置中。

server {
    location /jenkins {
        # 常规转发
        proxy_pass              http://server_local_8080/jenkins;

        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Host $host;
        proxy_set_header        Host $host:$server_port;
        proxy_set_header        X-Forwarded-Proto $scheme;

        # 特殊配置
        proxy_redirect http:// https://;        
        proxy_http_version      1.1;
        proxy_request_buffering off;
        proxy_buffering off;
        add_header 'X-SSH-Endpoint' 'domain:8080/jenkins' always;
    }
}

二、Jenkins 使用

任务管理

1.基本命名约定

命名规则最好只包含英文、数字、下划线或者中杠,不要使用中文或者空格!

2.创建文件夹

文件夹用于管理任务,可以多层嵌套,管理分组项目。显示名称,可以使用中文,并且会显示在列表中。

3.创建任务

创建项目的第一页,是输入任务名称,选择任务类型。任务类型目前实测下来,不算 文件夹 类型,最常用的就是:构建一个自由风格的软件项目构建一个maven项目 。前者基本可适合绝大多数类型的项目,例如:php、python这种解释型的,以及node这种编译型的。当然,也可以从当前的某个现有项目复制一份,进行修改。

jenkins的固定agent怎么使用多容器的pipeline jenkins 使用_自定义

创建好任务之后,接下来是配置任务,配置任务分为:General(一般配置)、源码管理、构建触发器、构建环境、构建和构建后操作这6大类(对于maven项目,构建又拆分为:Pre Steps、Build、Post Steps和构建设置这四个分类),除了一般配置,其他基本都需要配合相应的插件或者环境变量来实现,因此后面分步描述。

4.一般配置

在一般配置中,只需要配置的项目并不多,

  • 限制项目的运行节点 : 这是最重要的配置,如果留空,任务构建时会在 所有 节点构建此项目,对于负载分布式部署的项目,即同一个项目部署在多台服务器中,并完全配置一致是非常有用的。否则,这只会带来麻烦。其中 master 表示运行 jenkins 的当前节点;
  • 显示名称 : 不是必要,但是基本都会设置的友好显示名称;
  • 丢弃旧的构建 :随着时间推进,构建的记录会非常多,可以在这里配置根据天数或者次数,将构建的记录进行清理。2个配置是并存的,如果同时进行了配置,满足其中之一,即会清理;
  • 使用自定义的工作空间 :Jenkins 会为每个项目分配一个独立的 工作目录 ,用于拉取代码并执行构建,绝大多数情况下是没必要去变更的,目前实测下来发现,如果是 SVN+Python/Php 这种组合方式最好将其直接指定到项目目录中去;
5.构建

构建 通常用于在 Jenkins 根据 构建环境 的配置执行完基础构建之后的一些自定义操作。比如,复制配置文件,重启应用等操作。点击 增加构建步骤 ,后选择 执行 Shell。在文本框中,添加响应的shell操作并保存,例如:

#!/bin/bash +x 
/bin/cp -R -f templates /data/web/service/statics/
chmod +x bin/run.sh

在这一步操作时,经常会遇到一些自定义命令或脚本查找不到的错误,这通常是由环境变量读取不到引起,后面会有专门的内容来描述。

管理凭据

凭据,即访问子节点、SCM、SMTP等的身份认证信息。进入 : 系统配置 --> Manage Credentials ,注意不是 凭据配置 。而且,这里并不会管理登录 Jenkins 的账户信息。

然后,点击域一列下的全局链接,进入全局凭据管理。

jenkins的固定agent怎么使用多容器的pipeline jenkins 使用_自定义_02

点击左侧菜单 添加凭据 打开添加凭据页面,如下图:

jenkins的固定agent怎么使用多容器的pipeline jenkins 使用_git_03

凭据的类型选择,一般常见的有:

  • Username with password : 带有密码的用户名凭据,适用性最强,基本SSH登录、SCM等都可以用这种凭据;
  • SSH Username with private key : 使用私钥的SSH登录令牌,注意要在下方输入私钥文本内容和私钥密码;一般访问节点,都是使用此类凭据。

凭据的使用范围,主要包含全局和系统两类:

  • 全局 : 该凭据适用于全局,即可适用于任何需要的地方;
  • 系统 : 该凭据仅用于系统使用,例如登录节点。

这里要注意的是,凭据的使用范围这一选项并不影响凭据的使用。仅仅是在选择凭据的时候,可以简单的过滤,减少干扰而已。

其他任务配置

1.源码管理

任务的源码管理依赖于组件及系统工具。这表示,需要在 Jenkins 中安装相应的组件,并在对应的节点(包含本机)中安装对应的管理工具,例如:gitsubversion

勾选合适的版本管理工具,在 Repository URL 中输入仓库地址,在 Credentials 下选择正确的凭据,当然也可以点击 添加 按钮进行添加。

对于 gitsvn ,有两个不同的选项要输入:

  • 对于 git 来说,需要指定分支,即表示该任务只和对应的分支相关联,当然也可以留空;
  • 对于 svn 来说,需要在 Local module directory 选项中输入 . ,该值对应任务基本配置中的 使用自定义的工作空间 选项。
2.构建触发器

构建触发器意为在何种情况下触发构建,根据不同公司的管理规定,可以用也可以不用。根据我们的管理流程,对于非生产环境,均配置了自动触发,即在 gitee 上提交了代码之后,会自动触发任务构建。为了实现目标,仅需做如下配置即可(前提是安装了gitee插件):

  • 勾选 Gitee webhook 触发构建 ,复制后面的 url备用;
  • 允许触发构建的分支 选项中,选择 根据分支名过滤 , 根据具体情况输入分支名;
  • Gitee WebHook 密码 选项中, 点击右下方的 生成按钮, 生成密码并复制备用。

访问 gitee 上对应的项目,进入管理中的 WebHooks ,在 URLWebHook 密码/签名密钥 中输入上面复制出来的两段值,选择事件中保持默认的勾选 Push 即可。这里的配置,表示在代码 Push 时会自动推送到 Jenkins 中触发响应的构建。

注意,构建触发器 和前面的 源码管理 有一定的关联,注意前后的匹配!!!

3.构建环境

构建环境中的工具,默认会继承自 Jenkins 系统配置中的 全局工具配置 ,当然也可以在此处指定该节点自定义的配置。对于 nodejs 编译项目,只需要勾选下 Provide Node & npm bin/ folder to PATH 选项并选择合适的版本即可。

对于需要编译的 nodejs ,在 构建 环节的 执行 Shell 中方可执行构建操作。

npm config set "chromedriver_cdnurl" "https://npm.taobao.org/mirrors/chromedriver"
npm install
npm run build
4.Maven项目的构建

Maven 项目构建的重点,主要是在 Build 环节中,选择项目的 pom 文件路径以及构建目标。例如:

jenkins的固定agent怎么使用多容器的pipeline jenkins 使用_Jenkins_04

节点管理

所谓节点,是可以由 Jenkins 管理的服务器,可以任务绑定在任意节点中进行构建。节点的配置,可大致分为:一般配置、启动方式(或者叫连接方式)和节点属性这三大部分。

  • 一般配置中,远程工作目录为客户端机器的构建项目根目录,用法一般选择为 只允许运行绑定到这台机器的Job
  • 启动方式中,连接 Linux 主机使用 Launch agents via SSH,连接 Windows 主机使用 通过Java Web启动代理 ,在高级选项中可以指定 SSH 的连接端口;
  • 节点属性中,工具位置可以指定不同于系统配置中全局工具配置的自定义值,环境变量可以指定该节点自定义的一些变量。

注意:

Jenkins 管理Linux和Windows的方式略有不同,Windows可以理解为被动式的。需要开启 系统管理-->全局安全配置 中的代理并指定端口,用于Windows节点的反向链接。

jenkins的固定agent怎么使用多容器的pipeline jenkins 使用_Jenkins_05

在添加完 Windows 节点之后,初始会报错,表示无法连接,如下图,右键保存 Launch 按钮对应的 jnpl 文件。

jenkins的固定agent怎么使用多容器的pipeline jenkins 使用_Jenkins_06

在对应的节点服务器运行这个 jnlp 文件,当然前提是安装了 jdk ,如果提示权限问题,可以按照详细信息里的描述,将 Jenkins 服务器加入 java 的安全允许站点。运行成功则如下图所示,File 菜单,可以将其添加为系统服务。

jenkins的固定agent怎么使用多容器的pipeline jenkins 使用_自定义_07

曾经我以为我是个程序员攻城狮,,现在我发现,必须要要前面加上“广告公司”四字。