Jenkins安装

摘要:
1、 Jenkins简介1.开源自动化持续集成和部署平台CI、持续集成CD和持续部署2.Jenkins Free风格任务管道Maven项目多配置项目多分支管道任务支持的任务类型,不会执行任何更新;触发器(由Gitlab
 一, Jenkins简介

 1.开源自动化持续集成与部署平台

  • CI, 持续集成
  • CD, 持续部署

2.Jenkins支持的任务类型

  • 自由风格任务
  • 流水线(Pipeline)
  • Maven 项目
  • 多配置项目
  • 多分支流水线任务

3.Jenkins常见的任务功能

  • 定时任务
  • Pull SCM -- 定时检查代码库中的代码有没有更新, 指定的分支或者targe有没有更新, 有更新将继续执行里面的步骤, 没有更新就不会执行;
  • Trigger(by Gitlab, JIRA...) -- 可以被其它的一些服务或插件触发的, 比如 gitlab, jira 有变更就会自动触发其中的任务;
  • 主动/被动触发其它任务
  • 被其它任务触发
  • WEB UI, 命令行, API

4.Jenkins应用场景

  • 将项目的代码拉到本地编译后发布到指定的环境
    • 过程包括
      • 拉代码
      • 预处理(如修改, 替换或删除文件) -- <有的公司可能不需要开发看到数据库的密码等, 在这一步可以替换掉>
      • 编译(如果需要)
      • 通过 Sonar 进行代码审查 -- 第三方开源的代码质量审查软件, 自动扫描代码中的语法, 分析漏洞等, 并且提供一些优化的建议;
      • 构建 Docker 镜像
      • 推送到 Harbor 仓库
      • 控制 K8s 应用更新
      • 自动化测试
  • 执行简单的命令 -- 一般在服务器中运用到的命令, 在 Jenkins 中都可以使用;
二,Jenkins运行环境
  • 系统:Centos 7
  • 域名(自定义):https://jenkins.zxjr.com
  • 防火墙: 开放 443 端口
  • Java: openjdk-1.8
  • Nginx:1.18.0, 启用 SSL 支持
  • Jenkins: 2.120 (非稳定版) <后面实现升级>
  • User:jenkins, uid=1212, gid=1212
  • 目录设置定义  /data/app/jenkins
    • home          JENKINS_HOME--运行的家目录, 主要是一些任务的配置;
    • log                   Jenkins 日志目录
    • run                  Jenkins.jar & 节点启动脚本
    • scripts             Shell, Broovy 脚本目录
    • dockerfiles      Dockerfile & k8s yaml
三,Nginx安装并启用SSL支持

1.首先访问nginx官网,下载稳定版本

           Jenkins安装第1张

2.复制nginx的链接地址, 并在Centos中相应的目录进行下载, 并下载相应的依赖包(pcre/openssl)

// 进入源码包放置目录
cd /usr/local/src
// 下载nginx源码包保存本地
curl -O http://nginx.org/download/nginx-1.18.0.tar.gz
// 下载 openssl 源码包
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
// 下载 pcre 源码包
curl -O ftp://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz

// 解压源码包
for i in `ls /usr/local/src`;do tar xf $i; done

// 编译安装 nginx
yum -y install gcc gcc-c++ make
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-openssl=../openssl-1.1.1g --with-pcre=/usr/local/src/pcre-8.44

    // 报错
    # ./configure: error: the HTTP gzip module requires the zlib library.
    You can either disable the module by using --without-http_gzip_module
    option, or install the zlib library into the system, or build the zlib library
    statically from the source with nginx by using --with-zlib=<path> option.
    // gzip需要依赖zlib库, 需要安装, 
    // 方法一: 使用yum进行安装 --- yum -y install zlib-devel
    // 方法二: 源码安装, zlib-1.2.11.tar.gz 从17年就一直没有再更新了.
    wget http://www.zlib.net/zlib-1.2.11.tar.gz
    tar xf zlib-1.2.11.tar.gz && cd zlib-1.2.11 && ./configure && make && make install

// 安装完成后再执行nginx的与配置        启用ssl模块                用于显示nginx状态(连接数,处理进程的数量, 等待的数量. 一般用于nginx 监控
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-openssl=../openssl-1.1.1g --with-pcre=/usr/local/src/pcre-8.44
make && make install

// 查看nginx 安装目录, 确定安装完毕, 并查看 nginx 命令的大小
ls /usr/local/nginx/
  conf  html  logs  sbin
ll -h /usr/local/nginx/sbin/nginx
  -rwxr-xr-x 1 root root 7.5M May 21 21:53 /usr/local/nginx/sbin/nginx

3.Nginx 配置

// 创建nginx用户,不创建家目录,不能登录系统
useradd -M -s /sbin/nologin nginx

// nginx配置文件放置目录,default结尾的为默认的配置文件(备份)
// 编辑 nginx 配置文件, 重新编写
vim /usr/local/nginx/conf/nginx.conf
user    nginx nginx;
worker_processes    1;
error_log    logs/error.log    info;
pid        logs/nginx.pid;

events {
    use epoll;
    worker_connections    65535;
}

http {
    include            mime.types;
    default_type    application/octet-stream;
    log_format    default '$remote_addr $remote_port $remote_user $time_iso8601 $status $body_bytes_sent '
                        '"$request" "$request_body" "$http_referer" "$http_user_agent" "$http_x_forwarded for"'

    fastcgi_send_timeout            300;
    fastcgi_read_timeout            300;
    fastcgi_buffer_size                64k;
    fastcgi_buffers                8    32k;
    fastcgi_busy_buffers_size        128k;
    fastcgi_temp_file_write_size    128k;

    sendfile            on;
    keepalive_timeout    65;
    gzip                on;
    gzip_min_length        1k;
    gzip_buffers      4 16k;
    gzip_http_version    1.0;
    gzip_comp_level        2;
    gzip_types            text/plain application/x-javascript text/css application/xml text/vnd.wap.wml;
    gzip_vary            on;
    open_file_cache        max=3276 inactive=20s;
    open_file_cache_min_uses    1;
    open_file_cache_valid        30s;

    proxy_ignore_client_abort    on;
    
    client_max_body_size        1G;
    client_body_buffer_size        256k;
    proxy_connect_timeout        30;
    proxy_send_timeout            30;
    proxy_read_timeout            60;
    proxy_buffer_size            256k;
    proxy_buffers             4    256k;
    proxy_busy_buffers_size        256k;
    proxy_temp_file_write_size    256k;
    proxy_http_version            1.1;

    include vhosts/*.conf;
}
// 检查配置文件的正确性
/usr/local/nginx/sbin/nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

// 在放置配置文件的conf目录下创建 ssl 及 vhosts 目录
cd /usr/local/nginx/conf
mkdir ssl vhosts

// 进入ssl目录, 生成证书
cd ssl
openssl genrsa -aes256 -passout pass:111111 -out jenkins.key 2048
openssl rsa -passin pass:111111 -in jenkins.key -out jenkins.com.key
openssl genrsa -aes256 -passout pass:111111 -out jenkins.key 2048
openssl x509 -req -sha256 -days 3655 -in jenkins.com.csr -signkey jenkins.com.key -out jenkins.com.pem

// 进入vhosts目录,创建zxjr.jenkins.com.conf
cd ../vhosts
vim zxjr.jenkins.com.conf
server {
    listen            80;
    server_name        zxjr.jenkins.com;

    rewrite ^(.*)$    https://$host$1 permanent;
}

server {
    listen            443 ssl;
    server_name        zxjr.jenkins.com;
    
    ssl_certificate        /usr/local/nginx/conf/ssl/jenkins.com.pem;
    ssl_certificate_key    /usr/local/nginx/conf/ssl/jenkins.com.key;
    
    access_log            /data/logs/nginx/jenkins_access.log default;

    location / {
        proxy_pass            http://127.0.0.1:8080;
        proxy_http_version    1.1;
        proxy_set_header    Host $host;
        proxy_redirect        off;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout    10s;
        proxy_read_timeout        60s;
        proxy_send_timeout        60s;
    }
}

# 创建日志目录
mkdir -p /data/logs/nginx
四,Jenkins 安装

 1.基于tomcat部署

Ⅰ.下载jenkins的war包及tomcat源码包

// 清华大学开源软件镜像源
https://mirrors.tuna.tsinghua.edu.cn/

// 下载 jenkins.war
wget -P /usr/local/src/ https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/latest/jenkins.war
// 下载 tomcat 源码包
wget -P /usr/local/src/ https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.36/bin/apache-tomcat-9.0.36.tar.gz

Ⅱ.部署 java

// 使用 yum 部署java环境
yum search openjdk
yum -y install java-1.8.0-openjdk

Ⅲ.部署tomcat环境

// 创建 jenkins 用户,指定 uid
useradd -u 1212 jenkins

// 创建Jenkins相应目录
mkdir /usr/local/jenkins/{dockerfile,home,log,run,scripts} -pv

// 解压tomcat到指定目录
tar xf /usr/local/src/apache-tomcat-9.0.36.tar.gz -C /usr/local/jenkins/run/
cd /usr/local/jenkins/run/
mv apache-tomcat-9.0.36/ tomcat

// 修改jenkins目录的属主
chown -R jenkins /usr/local/jenkins/*

// 删除tomcat中无用的文件
cd tomcat
rm -f *.txt *.md LICENSE NOTICE RELEASE-NOTES
rm -f bin/*.bat

// 将jenkins的war包放到tomcat的应用程序目录中
mv /usr/local/src/jenkins.war webapps/

// 添加 JENKINS_HOME 环境变量
echo -e "
export JENKINS_HOME=/usr/local/jenkins/home" >> /etc/profile

// 切换到 jenkins 用户, 启动 tomcat
su - jenkins
/usr/local/jenkins/run/tomcat/bin/startup.sh

2.直接运行 jenkins.war 包 (常用)

Ⅰ.下载 jenkins.war 包

// 从清华大学开源软件镜像源下载 jenkins.war 包
wget -P /usr/local/src/ https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/latest/jenkins.war

Ⅱ.部署 java

// 使用 yum 部署java环境
yum search openjdk
yum -y install java-1.8.0-openjdk

Ⅲ.直接启动 jenkins.war 包

// 创建指定 uid 的 jenkins 目录
useradd -u 1212 jenkins

// 创建Jenkins相应目录
mkdir /usr/local/jenkins/{dockerfile,home,log,run,scripts} -pv

// 将 jenkins.war 移动到 jenkins 下的 run 目录
mv /usr/local/src/jenkins.war /usr/local/jenkins/run

// 修改jenkins目录的属主
chown -R jenkins /usr/local/jenkins/*

// 切换到 jenkins 用户, 并启动 jenkins.war
su - jenkins
cd /usr/local/jenkins/run
java -jar -Xmx1g -Xms1g /usr/local/jenkins/run/jenkins.war >/usr/local/jenkins/log/jenkins.log 2>&1 &
五,Jenkins初次访问及密码

1.初次访问 zxjr.jenkins.com

Jenkins安装第2张

2.管理员密码

Ⅰ.方法一: 启动日志中查看

cat /usr/local/jenkins/log/jenkins.log
    ... ...
    29b9239ef5d4453688468640ec14fca5
    ...

Ⅱ.方法二: 根据web指定的目录查看

cat /usr/local/jenkins/home/secrets/initialAdminPassword 
    29b9239ef5d4453688468640ec14fca5

免责声明:文章转载自《Jenkins安装》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用事务和SqlBulkCopy批量插入数据JRebel 6 破解版及使用方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

nginx源码分析:module机制

 根据nginx官方文档,添加一个module的介绍,当我们需要添加一个module时,需要以下操作: 1、为该module新建一个目录。 2、添加一个config文件,一个module核心代码源文件。 3、为configure添加参数--add-module=/path/to/module,然后重新编译。 这个操作步骤我们都很熟悉,那么为什么这样操作后就...

nginx端口占用案例分享

这里分享一个案例,问题的原因是反向代理使用不当。 现象 首先描述一下问题的现象。当时的问题是应用启动失败,日志里面报错显示端口占用。我们的应用都是通过脚本发布的,之前发布过多次都没有出现过问题。那么同样的脚本、同样的机器,这次怎么就发布失败了呢? 报错信息如下: OSError: [Errno 48] Address already in use 问题排查...

最新版本容器编排工具rancher-v2.3.3的HA高可用部署

一、准备工作 1.1 操作系统版本 CentOS Linux release 7.6.1810 (Core) 1.2 节点信息 节点名称 ip 安装组件 node1 192.168.1.156 etcd, docker, k8s node2 192.168.1.167 etcd, docker, k8s node3 192.168.1.1...

jenkins 新增节点的3种方式

1.通过ssh建立节点(在节点机子上要安装好jdk) (1)通过用户+密码建立ssh连接 (2)通过用户+密钥建立连接 2.通过jnlp,javaweb的方式连接 (1)创建好节点 (2)在节点的机子上,执行上面的语句,要安装好java,agent.jar 要放在节点机子上 3.通过Launch agent via execution of comman...

nginx服务器下 PHP 出现 502 解决方案

https://blog.csdn.net/qq_34625397/article/details/51744859 nginx出现502有很多原因,但大部分原因可以归结为资源数量不够用,也就是说后端php-fpm处理有问题,nginx将正确的客户端请求发给了后端的php-fpm进程,但是因为php-fpm进程的问题导致不能正确解析php代码,最终返回给了...

Nginx实现多域名证书HTTPS

目前公司有2个域名,其中这次涉及到3个子域名需要更改为HTTPS传输,分别为: passport.abc.com www.test.com admin.test.com 那么就涉及到购买ssl证书的问题,由于价格问题使用3个不同的证书(每个域名一个)。 由于实验环境,我们就手动生成3个ssl证书 建立目录,及进入目录 [root@gz122haproxy9...