jenkins遠程部署項目

image.png
本文介紹 使用 jenkins部署機來部署項目到 遠程服務器 爲何我要把jenkins裝在單獨的一臺服務器, 一是爲了下降部署和生產環境的耦合性, 二是爲了節約成本, 能夠再本地服務器搭建部署機

1. 安裝jenkins

我使用的是docker安裝的方式, 安裝步驟:jenkins.io/zh/doc/book…git

2. 配置jenkins鏡像的ssh密鑰

此處假設你已經成功登陸進入了jenkins, 能夠看到下圖界面github

jenkins

好, 如今咱們進入鏡像系統命令行中, 生成ssh密鑰docker

  1. 查看當前運行鏡像的id
$ docker ps
複製代碼

docker ps
2. 進入鏡像命令行

docker exec -it 你的鏡像ID /bin/bash
複製代碼

bash
能夠看到, 進入了鏡像的bash 3. 生成SSH密鑰

這裏說明一下爲何配置ssh, 這樣能夠更好的免密使用git 和 免密碼登陸遠程服務器shell

$ cd /root/.ssh
$ ssh-keygen -t rsa -C 你郵箱
$ cat id_rsa.pub
複製代碼

最後一個命令後, 能夠看到這串密鑰 npm

cat id_rsa.pub

隨後咱們分別去github和須要遠程鏈接的服務器的服務商(好比良心雲, 套路雲)那配置ssh, 這玩意我就很少說了.我是一條酸菜魚api

3.配置jenkins的github hook

  1. 進入主界面的 系統管理
    image.png
  2. 進入系統設置
    image.png
  3. 往下拉, 能夠看到github的配置區, 這裏github插件是前期初始化的時候自動安裝的, 沒有的能夠區插件中安裝GitHub plugin
    image.png
    點擊憑據後的Add按鈕, 添加憑據, 就是帳號密碼, 搞好後點擊鏈接測試, 成功便可
    image.png
    鏈接成功
  4. 隨後點擊下面的Advance
    image.png
    選中便可生成hook
    image.png
  5. 到github的項目下配置hook
    image.png
    image.png
    image.png

4.新建一個任務

image.png
image.png
image.png
構建觸發器選擇hook觸發
image.png
構建方式選擇 shell
image.png
填入shell保存便可

5. 如今具體分析一下shell

#!/bin/sh
ssh -tt 遠程服務器用戶名@遠程服務器ip  << remotessh
cd /home/tlgc_server_api
/bin/git pull
npm run stop
npm run start
exit  
remotessh 
複製代碼
  • 第一句, 說明這是個shell腳本
  • 第二句, 防止報錯Pseudo-terminal will not be allocated because stdin is not a terminal.因此給ssh加上-tt參數, 爲了能夠在遠程機器上執行命令, 須要 << remotessh, 這裏注意, 最後兩句, 用來退出遠程機器, 否則的話, 會致使任務沒法終治.
  • 第四句, 這裏須要使用git的完整路徑, 以前寫cron的時候也遇到過, 執行bash, 須要使用/bin/bash, 這裏執行git命令, 也須要完整路徑/bin/git, 昨晚我就用git, 而後也沒加最後兩句終治, 任務就一直卡在那,卡一夜...

6. 最後能夠測試一下, 完美

image.png

7. 總結一下

感受還行, 雖然沒用到jenkins其餘好功能, 可是適合本身的就是最好的 目前體驗過的自動化部署有bash

  • github + docker + dockerhub
  • github + docker + daocloud
  • github + jenkins + ssh
  • gitlab runner

之前以爲daocloud方便, 如今目前開發用的是jenkins, 看我的口味了服務器

相關文章
相關標籤/搜索