如何使用Jenkins自動部署

簡介

Jenkins是一個開源的、可擴展的持續集成、交付、部署(軟件/代碼的編譯、打包、部署)的基於web界面的平臺。容許持續集成和持續交付項目,不管用的是什麼平臺,能夠處理任何類型的構建或持續集成。php

開源的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)html

Nginx能夠部署在網絡上使用FastCGI腳本、SCGI處理程序、WSGI應用服務器或Phusion Passenger模塊的動態HTTP內容,並可做爲軟件負載均衡器[11]java

Nginx使用異步事件驅動的方法來處理請求。Nginx的模塊化事件驅動架構[12]能夠在高負載下提供更可預測的性能。[13]nginx

Nginx是一款面向性能設計的HTTP服務器,相較於Apachelighttpd具備佔有內存少,穩定性高等優點。與舊版本(<=2.2)的Apache不一樣,Nginx不採用每客戶機一線程的設計模型,而是充分使用異步邏輯從而削減了上下文調度開銷,因此併發服務能力更強。總體採用模塊化設計,有豐富的模塊庫和第三方模塊庫,配置靈活。 在Linux操做系統下,Nginx使用epoll事件模型,得益於此,Nginx在Linux操做系統下效率至關高。同時Nginx在OpenBSD或FreeBSD操做系統上採用相似於epoll的高效事件模型kqueuegit

安裝

Nginx 能夠在Linux上自行編譯安裝也能夠經過docker進行執行,這裏提供docker-compose的腳本github

# 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文件夾裏體現web

花生殼

介紹

花生殼在這裏做爲內網穿透 內網端口映射的工具的,由於公司內部的網絡沒有暴露在公網上須要花生殼做爲間接的內網映射工具使得能夠接收到github 發過來的hook信息docker

下載安裝後啓動 配置花生殼映射到 部署Nginx的 80端口上shell

花生殼 3.0 for Linux 相關安裝使用文檔 npm

準備工做

安裝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
相關文章
相關標籤/搜索