天天看點

持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

概念

持續 (Continuous):不斷的擷取回報,響應回報。

內建 (Integration):編譯、測試、打包;

部署 (Deployment):應用元件或基本設施的代碼或配置變更在産品環境生效稱為“部署”;

釋出 (Release):具有業務影響的功能變化對最終使用者可見稱為“釋出”。

傳遞 (Delivery):可以了解為從 Deployment 到 Release之間的階段,更多的強調的是一種能力。開發有能力頻繁的部署,業務有能力随時釋出。

相關連接配接:

知乎:如何了解持續內建、持續傳遞、持續部署? 阮一峰:持續內建是什麼? 使用Jenkins進行持續內建 coding.net:ci 使用 Jenkins 建構 Coding 項目

達到的目标

名詞說的那麼多,扯的天花亂墜也沒什麼卵用,達到實際的效果才行。

我要達到的目的:開發人員送出代碼到git,剩下的事情軟體自動完成,打開浏覽器可以直接看到程式界面

開始搭建持續內建環境

這裡講兩種,1.Java語言,Springboot架構為主開發時Jenkins持續內建,2.Js或Ts語言,以angualr架構或nodejs等為主開發,Jenkins內建。

當然持續內建軟體有很多,比如git-ci等等,這裡選Jenkins因為全面而且友善。

第一種:記錄使用Jenkins,Git私庫進行持續內建一個Java語言項目

環境

Java版本:jdk8

架構:springboot

作業系統: centos

協同開發:Git (私庫)

關于環境題外話

版本控制現在用的比較多的就是svn和git。

推薦git,使用一次就再也不想用svn了。

免費好用的廠商提供的協同工具:

github :

https://github.com/

毋庸置疑,老牌王牌,缺點是國内網速不好,且私有項目收費,聽說最近被微軟收購了,不知道會不會有大的改動。

碼雲:

https://gitee.com/

開源中國git版,國内速度快,缺點是私有項目隻能有5個人,超過收費。

coding:

https://coding.net/

伺服器在香港,國内外通路速度都挺好,私有項目可以達到20人,目前還是比較不錯的選擇。小公司可以選擇這個,基本不花錢。

自建git,很多公司為了代碼安全,都是找台伺服器自建git服務。大公司或者純粹為了安全,推薦這種。

安裝持續部署環境 Jenkins

建立新使用者

好習慣是給每一個特殊的服務提供一個新的linux使用者,當然你可以選擇root

-- 添加使用者
adduser  ci
-- 修改密碼 
passwd ci 
-- 輸入密碼ci
--切換到ci預設目錄
cd /home/ci
           

安裝jdk

有時候一天linux伺服器可能跑多個版本的jdk,你可能會遇到,解決辦法有兩種,第一,安裝最高版本的jdk,第二,安裝多個版本的jdk。考慮到你可能會遇到問題,這裡記錄單系統裝多個版本jdk。

Linux 解除安裝JDK并安裝新版本JDK (rpm,tar) ubuntu或者linux下解除安裝和安裝多個jdk版本,1.6,1.7和1.8版本 oracle官網下載下傳JDK位址

安裝jenkins

首先,我們從Jenkins官方網站

https://jenkins.io/

下載下傳最新的war包。雖然Jenkins提供了Windows、Linux、OS X等各種安裝程式,但是,這些安裝程式都沒有war包好使。我從未見過Jenkins這樣把Java包做得如此簡單的項目。隻需要運作指令:

java -jar jenkins.war
           

Jenkins就啟動成功了!它的war包自帶Jetty伺服器,剩下的工作我們全部在浏覽器中進行。

假如你想讓該程式背景運作

-- 設定為背景運作并修改端口
nohup java -jar jenkins.war --httpPort= 8888 &
           

安裝過程

第一次啟動Jenkins時,出于安全考慮,Jenkins會自動生成一個随機的按照密碼。注意控制台輸出的密碼,複制下來,然後在浏覽器輸入:

http://IP

位址:端口/

比如:

http://localhost:8080/

運作成功後,打開浏覽器,一般要粘貼密碼,安裝插件,如果你第一次安裝不是懂的很多,這裡選擇預設的推薦安裝插件即可,安裝完成後可以在設定中增删插件,登陸後建立使用者,一般是admin超級管理者即可,這裡也是登陸成功後可以進行使用者管理,不喜歡的後邊随時可以改。然後點選下一步下一步,基本就完成了安裝。

安裝成功後可以大體浏覽下界面。

配置Springboot項目持續化內建

配置Maven插件

持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了
持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

然後,在Jenkins首頁選擇“建立”,輸入名字,選擇“建構一個maven項目”:

持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

new-job

在配置頁中,源碼管理選擇Git,填入位址:

持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

git-config

私鑰配置

複制你私鑰的文本粘貼在此即可。

私鑰生成代碼:

一 、

設定Git的user name和email:

$ git config --global user.name "xuhaiyan"
$ git config --global user.email "[email protected]"


二、生成SSH密鑰過程:
1.檢視是否已經有了ssh密鑰:cd ~/.ssh
如果沒有密鑰則不會有此檔案夾,有則備份删除
2.生存密鑰:
$ ssh-keygen -t rsa -C “[email protected]”
按3個回車,密碼為空。


Your identification has been saved in /home/tekkub/.ssh/id_rsa.
Your public key has been saved in /home/tekkub/.ssh/id_rsa.pub.
The key fingerprint is:
………………



最後得到了兩個檔案:id_rsa和id_rsa.pub


           
持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了
持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

預設使用master分支。如果需要密碼,在Credentials中添加使用者名/密碼,或者使用SSH Key。

建構觸發器指定了觸發一次建構的條件。推薦使用最簡單的配置“Poll SCM”,它的意思是,定時檢查版本庫,發現有新的送出就觸發建構。這種方式對git、SVN等所有版本管理系統都是通用的。

我們在日程表中填入:

* * * * *

           
持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

trigger

表示每分鐘檢查一次。如果你覺得太頻繁,可以改成“每3分鐘檢查一次”:

*/3 * * * *

           

在“Build”中,預設的Root POM是

pom.xml

。如果

pom.xml

不在根目錄下,就填入子目錄,例如:

wxapi/pom.xml

在Goals and options中,填入需要執行的mvn指令:

clean package

,Jenkins将執行如下指令,或者不填

mvn clean package
特殊參數也在這裡填寫,如`-DskipTests=true clean package`。
           

儲存後,就可以執行自動化建構了。

點選一個建構任務,可以在Console Output中看到控制台詳細輸出,便于出錯排查:

持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

console-output

如何部署

如果要部署建構好的war包,可以在Post Steps中填上shell指令,直接用腳本部署。

另一種方式是建立另外一個建構項目,手動觸發部署。

無論用哪種方式,都是為了確定編譯、部署是通過CI伺服器完成的,而不是某台開發機器。

由于Springboot項目打包為jar,運作非常友善,這裡就使用jar包釋出。為了友善,我寫了幾段腳本,腳本如下:

shell方式

--啟動腳本start.sh
#!/bin/bash
nohup java -jar ../../apidoc-1.0.0.jar &


--停止腳本stop.sh
#!/bin/bash
PID=$(ps -ef | grep apidoc-1.0.0.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo Application is already stopped
else
    echo kill $PID
    kill $PID
fi


--run.sh內建啟動和停止的sh
#!/bin/bash
echo "停止應用"
source ./stop.sh
echo "啟動應用"
source ./start.sh


--為jennkins專門使用,主要原因是他必須使用絕對路徑,run4jenkins 為jenkins的run.sh
#!/bin/bash
cd /home/ci/.jenkins/workspace/apidoc/target/classes/shell 這裡是你的項目的絕對路徑
echo "停止應用"
source ./stop.sh
echo "啟動應用"
source ./start.sh


           
-- 注意防止殺死程序 and 必須用絕對路徑
BUILD_ID=DONTKILLME
sh /home/ci/.jenkins/workspace/apidoc/target/classes/shell/run4jenkins.sh 
           
持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

幾個注意點

jenkins運作shell腳本必須使用絕對路徑,這個跟linux是一緻的,如果你想用相對路徑,可以先cd切換到目錄下在運作shell腳本。

jenkins啟動的程序會被預設殺死,防止程序被殺死可以加這個參數

BUILD_ID=DONTKILLME

我第一建構項目的時候,由于項目為Maven多子產品,Jenkins不熟悉,建構了36次才成功,哈哈,是以你别急。程式設計開發,踩坑太正常了。

jenkins預設工作路徑為/home/user/.jenkins,做遷移時,拷貝這個目錄即可。

記錄一個問題,我這裡使用阿裡雲伺服器,預設home檔案夾為20G磁盤大小,後來磁盤滿了,做了一次遷移。被耽誤好多時間。

修改Jenkins預設工作路徑:

vim /etc/profile
-- 增加 JENKINS_HOME 即可
JENKINS_HOME=/local/jenkins
export JENKINS_HOME
           
持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

如何建立Linux服務

有了Jenkins,我們就可以在内網或者租用一台EC2伺服器來搭建CI環境,每月費用不到¥100。推薦Ubuntu Linux系統。因為我們不想每次登入到Linux去啟動Jenkins,也不想寫腳本來啟動服務。推薦安裝JDK後,配合supervisor,把Jenkins直接變成一個服務。

可以在Linux上建立一個

ci

使用者,然後,用supervisor啟動并指定9001端口:

# /etc/supervisor/conf.d/ci.conf

[program:ci]
command=java -jar /home/ci/jenkins.war --httpPort=9001
user=ci
autostart=true
autorestart=true
startsecs=30
startretries=5

           

Jenkins預設在目前使用者的主目錄下建立

.jenkins

目錄,所有的配置檔案、資料庫都存放在裡面,隻需要備份這個目錄就備份了整個CI配置。

這樣,一個CI環境就搭建完畢。

建構Angular等前端開發項目的持續內建

安裝angular運作環境

這裡可以使用docker,一個指令就可以啟動一個運作環境,推薦使用。

我這台伺服器有其他用途,是以我安裝angular開發環境。

安裝nodejs

centos6.5安裝nodejs有些坑,我踩過了你就不要踩了。

1.yum源安裝,nodejs沒用最新版,angualr無非運作

2.官方推薦下載下傳源代碼,自動編譯安裝,但是centos6.5的c++變壓器版本過老,無法編譯最新版nodejs源碼,需要替換c++編輯器,想想替換過程就操蛋。幹脆放棄。

3.下載下傳官方編譯好的安裝包。配置環境變量,我采用的這種

下載下傳最新版

https://nodejs.org/en/download/
持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了
cd /local/src
mkdir nodejs
cd nodejs
wget https://nodejs.org/dist/v8.11.2/node-v8.11.2-linux-x64.tar.xz
-- 解壓
xz -d ***.tar.xz
tar -xvf  ***.tar

--配置環境變量
vim /etc/profile
--增加如下
# nodejs
export NODE_HOME=/local/nodejs/node-v8.11.2-linux-x64
export PATH=$NODE_HOME/bin:$PATH
儲存退出,重新整理生效
source /etc/profile

--測試
node -v 
npm -v
輸出版本資訊,即安裝成功
           

做一些優化配置

npm太慢, 淘寶npm鏡像使用方法

淘寶 npm 位址:

http://npm.taobao.org/
如何使用 有很多方法來配置npm的registry位址,下面根據不同情境列出幾種比較常用的方法。以淘寶npm鏡像舉例:

1.臨時使用

npm --registry https://registry.npm.taobao.org install express

           

2.持久使用

npm config set registry https://registry.npm.taobao.org

           
  • 配置後可通過下面方式來驗證是否成功

    npm config get registry

    npm info express

3.通過cnpm使用

npm install -g cnpm --registry=https://registry.npm.taobao.org

           
  • 使用

    cnpm install express

安裝anglular-cli

anglular-cli是angular的開發手腳架,使用cli開發angular程式非常友善,不得不說google的工程師真的是非常牛!

更新安裝npm
npm install npm -g
檢視npm版本
npm -v
安裝TypeScript
npm install -g typescript
檢視TypeScript版本
tsc -v
安裝 angular-cli
npm install -g @angular/cli
檢視angular-cli 版本
ng -v
           

看到如下資訊表示成功

持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

備注:

圖省事的話,其實就安裝nodejs和angular-cli即可

到此,angular運作環境搭建完成。

配置Jenkins持續內建任務

建立一個 ‘自由風格的任務’

持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

配置git

持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

配置nodejs插件

持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了
持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了
持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了
持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

配置觸發器和定時掃描,這裡是每分鐘檢測git一次,随你改

持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

儲存,然後建構任務

等待輸出成功,檢視日志列印如下

持續內建、持續部署、持續傳遞、持續釋出概念達到的目标開始搭建持續內建環境環境關于環境題外話安裝持續部署環境 Jenkins安裝jdk安裝jenkins安裝過程配置Springboot項目持續化內建配置Maven插件私鑰配置幾個注意點建構Angular等前端開發項目的持續內建做一些優化配置npm太慢, 淘寶npm鏡像使用方法安裝anglular-cli配置Jenkins持續內建任務配置nodejs插件踩坑和問題這段你就當看不到就行了

然後登陸linux,進入jenkins的工作目錄,類似這裡

/local/jenkins/workspace/cloud_front

執行項目初始化,這裡跟angular開發操作無異,不展開細講

npm install
然後運作項目
ng server
           

編譯成功後,通路http:ip:4200 檢視沒什麼錯誤,就可以知道建構腳本怎麼寫了

如果安裝失敗,請删除node_modules,重寫npm install

rm -rf node_modules/

-- 如果你使用了scss而不是css,安裝scss編譯環境可能會出錯
請嘗試如下操作
-- 安裝node編譯c++擴充的工具dode-gyp
npm install -g node-gyp
-- 安裝時嘗試跳過錯誤
npm install  --unsafe-perm
--測試是否成功,可以單獨安裝node-scss
删除
npm uninstall node-sass
重新安裝
npm install node-sass
-- node-sass安裝失敗,多少是網絡原因,國内被牆了
首先要知道的是,安裝 node-sass 時在 node scripts/install 階段會從 github.com 上下載下傳一個 .node 檔案,
大部分安裝不成功的原因都源自這裡,因為 GitHub Releases 裡的檔案都托管在 s3.amazonaws.com 上面,
而這個網址在國内總是網絡不穩定,是以我們需要通過第三方伺服器下載下傳這個檔案
嘗試cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org

# cnpm install [email protected] --save
或者在項目下建一個檔案.npmrc 輸入如下代碼
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
phantomjs_cdnurl=https://npm.taobao.org/mirrors/phantomjs/
electron_mirror=https://npm.taobao.org/mirrors/electron/
registry=https://registry.npm.taobao.org

# 或者這樣解決

npm install  --registry http://registry.npmjs.org/ -unsafe-perm
mac或者linux安裝報錯可能要帶這個參數  -unsafe-perm

           

踩坑和問題

enkins下執行 ng build 指令會提示“指令未找到”,但是執行如 ls 等原生指令沒有任何問題。在Linux主機是通過修改 /etc/profile 檔案來配置環境變量,則問題可能是Jenkins在執行shell腳本時沒有加載 /etc/profile 檔案,是以找不到 ng 指令,會提示“指令未找到”。

● Jenkins預設情況下執行shell腳本是使用非登入方式,然而非登入方式不會加載 /etc/profile 檔案,在 Execute shell 中 添加如 #!/bin/sh -l 指令修改為登入方式即可解決問題。

搞了好久,還是報錯指令找不到,各種費勁。于是機智的我把這個問題跳過了,先湊合用吧。

這段你就當看不到就行了

啊,呸,讓你費勁,我跳過這一步。

分析:angular-cli提供了各種友善的編譯環境,我為什麼不能用一下。

比如使用其下優勢:

1.自動代理插件 ,解決跨域問題

2.伺服器功能,解決另外部署伺服器功能

3.自動檢測檔案改動,自動編譯後拉起浏覽器。使用這個功能,就不需要jenkins建構完了執行shell腳本了。直接ng server後,有檔案更新cli會自動編譯,萬一有重大更新,比如增加了node 的依賴庫或者依賴插件,那麼登陸伺服器執行如下腳本即可

cd /local/jenkins/workspace/cloud_front
npm install

nohup sh run.sh >run.log 2>1 &

其中run.sh腳本如下
#!/bin/sh -l
ng serve --port 4201 --base-href  --proxy-config proxy.conf.json --host 0.0.0.0

運作的日志就在run.log中,如果你想檢視可以tail
tail -f run.log
# 機智如我,呵呵。啊,呸,浪費我兩個小時解決指令行找不到

-- 擴充指令
檢視關閉/背景任務
jobs
kill %job程序号

           
4.記得修改端口,防止占用或沖突,綜上所述,ng腳本如下

ng serve --port 4201 --base-href --proxy-config proxy.conf.json --host 0.0.0.0