简介

Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。

开源的java语言开发持续集成工具,支持CI,CD;

易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理;

消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告;

分布式构建:支持Jenkins能够让多台计算机一起构建/测试;

文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等; 

丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

Jenkins的安装

通过Docker安装

mkdir -P /opt/data/jenkins_home 
sudo docker run -d -p 8099:8080 -v /opt/data/jenkins_home:/var/jenkins_home --name my_jenkins jenkins:latest
 
-d 是后台启用jenkins服务
-p 是端口映射
-v 是数据挂载
--name 是为容器命名

为Jenkins添加Github账号

  • 需要安装GitHub插件
  • 系统管理 >> 系统设置 >> GitHub Plugin Configuration

设置Github钩子

如何让github访问到在内网的Jenkins

Nginx

介绍

(from wiki)

Nginx可以部署在网络上使用FastCGI脚本、SCGI处理程序、WSGI应用服务器或Phusion Passenger模块的动态HTTP内容,并可作为软件负载均衡器[11]

Nginx使用异步事件驱动的方法来处理请求。Nginx的模块化事件驱动架构[12]可以在高负载下提供更可预测的性能。[13]

Nginx是一款面向性能设计的HTTP服务器,相较于Apachelighttpd具有占有内存少,稳定性高等优势。与旧版本(<=2.2)的Apache不同,Nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑从而削减了上下文调度开销,所以并发服务能力更强。整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活。 在Linux操作系统下,Nginx使用epoll事件模型,得益于此,Nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于epoll的高效事件模型kqueue

安装

Nginx 可以在Linux上自行编译安装也可以通过docker进行执行,这里提供docker-compose的脚本

# docker-compose up -d 
version: '2'


services:

    nginx: 
        image: nginx
        restart: always
        volumes: 
            - ./nginx.conf:/etc/nginx/nginx.conf
        ports:
            - 80:80
            - 8086:8086
        networks:
            - glodon_network
# file_name:nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
    worker_connections 1024;
}
http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    log_format main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log /var/log/nginx/access.log  main;
    sendfile on;
#tcp_nopush     on;
    keepalive_timeout 65;
#gzip  on;
    server {

        listen 80;
        server_name fuzhou20.vicp.net;
        #location ^~/github-webhook/  {
        #    proxy_pass http://192.168.31.246:5700;
        #    if ($request_method !~ ^(POST)$) {
        #        return 444;
        #    }
        #}
    location /  {
            proxy_pass http://192.168.31.246:5700;
        }
        
    }

}

以上两个配置文件会在nginx文件夹里体现

花生壳

介绍

花生壳在这里作为内网穿透 内网端口映射的工具的,因为公司内部的网络没有暴露在公网上需要花生壳作为间接的内网映射工具使得可以接收到github 发过来的hook信息

下载安装后启动 配置花生壳映射到 部署Nginx的 80端口上

花生壳 3.0 for Linux 相关安装使用文档

准备工作

安装GitHub插件

  • 安装插件
    系统管理>插件管理>available
    搜索安装 GitHub plugin

配置SFTP主机

  • 安装
    系统管理>插件管理>available
  • 配置

    系统管理>系统配置> Publish over SSH >Add
    image-20191210160109356.png

填写必填项、点击Advanced勾选使用密码验证填写密码选择验证

Remote Directory 一般设定为用户目录

配置Node环境

  • 插件安装

    系统管理>插件管理>available

    NodeJS Plugin

  • 插件配置

    系统管理>全局工具配置> NodeJS

image-20191211161726231.png

创建项目

1. 创建一个新的任务

image-20191210162808972.png

2. 构建一个自由风格的软件项目

image-20191210163008705.png

3. 配置代码源

​ Repository URL 源地址为 https://github.com/TangUsers/...

image-20191210163255104.png

如果你的账号没有在内可以选择ADD添加你的账号密码
image-20191210163600572.png

4. 配置编译

image-20191210173926622.png

这里介绍的是以Node为基础的的编译 需要选择配置Nginx版本
image-20191211162019076.png

由于磁盘空间有限,开发环境下需要将
image-20191211162109241.png
否则工件占满空间

5. 编译脚本

# 跳转到代码目录
cd frontend
# 覆盖配置脚本
echo "export let ROOT" > ./src/config/url.js
echo "ROOT = 'http://192.168.31.54:8000' // dev" >> ./src/config/url.js
# npm 依赖安装
npm install
# 编译包
npm run build

编译上选择
image-20191211163632130.png

image-20191211163719204.png
的连接用于上传编译过的包

根据前面配置的SFTP主机 将编译后的工件上传到对应的目录

image-20191211172206493.png
当前目录以gitpull下来后的工作空间的目录为准

Remove prefix 上传后的目录

Remote directory 远程目录

这里最终工件会上传到 /home/emsoft/jyjy_front_end/new-build

SFTP主机的当前目录是前面主机配置的目录

rm -rf ~/jyjy_front_end/build
mv -f ~/jyjy_front_end/new-build ~/jyjy_front_end/build
sudo nginx -s reload

emsoft
29 声望6 粉丝

英迈软件技术团队