Docker+Jenkins發佈GitHub項目(3)-構建GitHub項目|8月更文挑戰

前提-Jenkins配置node環境

1.配置node插件

系統配置-插件管理-可選插件,搜索nodejs,直接安裝html

image.png

2. 配置node版本image.png

General

能夠直接所有選擇不填,可是建議勾選丟棄舊的構建node

這裏丟棄舊的構建是指 丟棄以前的構建記錄。nginx

以下圖,這是Jenkins的構建記錄,能夠選擇保留的天數以及保留的條數。web

image.png

image.png

源碼管理

image.png

這裏爲了解決GitHub使用https,常常報443的問題,使用ssh方式,進行代碼的管理。docker

點擊 添加按鈕,添加私鑰,具體請查看另外一篇文章。shell

若是你不但願使用ssh,那麼請直接選擇npm

image.png

用戶名密碼憑證服務器

image.png

構建觸發器

直接選擇GitHub hook trigger for GITScm pollingmarkdown

image.png

構建環境

image.png

構建

選擇執行shell,這裏請安裝cnpm,構建速度快,且容易報錯。ssh

echo $PATH
node -v
npm -v
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install
npm run build
# 若是部署到服務器的話,建議打包
cd dist
tar -zcvf dist.tar.gz *
複製代碼

image.png

構建後步驟,發佈到遠程服務器

這裏咱們時使用docker安裝的Jenkins, 若是你部署的服務器就是jenkins服務器,那能夠直接經過宿主機-容器共享卷的方式部署。由於比較簡單,這裏簡單的說一下:

  1. 找到jenkins構建後的目錄
  2. 作一個共享卷的操做,是的構建結束以後,宿主機直接擁有打包後的文件,因此最好的方式能夠把宿主機的目錄設置爲nginx的web目錄

可是,會存在發佈到遠程服務器的狀況,下面着重介紹一下:

一、安裝Publish Over SSH插件

首頁 -> 點擊系統管理 -> 管理插件 ->可選插件 -> 過濾:ssh -> 選擇Publish Over SSH插件,點擊直接安裝

image.png

二、配置SSH

系統管理 -> 系統設置 -> 下拉,找到Publish over SSH

image.png

下面有一個test configuration 按鈕,點擊測試,sussess表示鏈接成功。

image.png

  1. 構建後步驟

image.png

cd  /home/share/blog/www
tar -zxvf dist.tar.gz
rm -f  dist.tar.gz
複製代碼

image.png

遠程服務器配置的nginx進行訪問

一、下載鏡像

docker pull nginx
複製代碼

二、啓動nginx容器

docker run -d -p 9999:80 --name nginx  nginx
# 這裏將容器的80端口映射到9999端口,訪問ip:9999 便可
# -d 後臺運行
複製代碼

image.png

三、找到容器中nginx的位置image.png

三、在宿主機和nginx容器之間創建數據卷

nginx.conf 配置文件

logs 日誌文件

www 源代碼部署文件

!!! 若是直接執行下面的命令的話,可能會報錯,Are you trying to mount a directory onto a file or vice-versa,「由於不能掛載文件,只能掛載文件夾,因此先在容器中複製一份配置文件。」

「第一步已經啓動了一個nginx,因此能夠直接拷貝」

mkdir -p /home/share/blog/conf  /home/share/blog/logs

拷貝配置文件到工做目錄
docker cp -a nginx:/etc/nginx/nginx.conf /home/share/blog/conf
複製代碼

宿主機(本身決定) 容器(容器啓動後自動生成的)
/home/share/blog/www /usr/share/nginx/html
/home/share/blog/conf/nginx.conf /etc/nginx/nginx.conf
/home/share/blog/logs /var/log/nginx
首先中止以前的容器並刪除
複製代碼
docker stop nginx
docker rm nginx
複製代碼
從新啓動容器並掛載工做目錄
複製代碼

docker run -d --restart always -p 9999:80 -v /home/share/blog/www:/usr/share/nginx/html -v  /home/share/blog/conf/nginx.conf:/etc/nginx/nginx.conf -v  /home/share/blog/logs:/var/log/nginx --name nginx nginx
// --restart always                                 
// 表示docker重啓時會自動重啓該容器
複製代碼

訪問-成功

image.png

相關文章
相關標籤/搜索