配置push gitlab觸發(fā)jenkins自動打包發(fā)布記錄

前提:承接上篇 flutter1.9 + vscode + Andorid SDK + java JDK實踐,用flutte-web做了一個簡單的導(dǎo)航網(wǎng)頁(這里推薦老孟的組件庫),現(xiàn)在發(fā)布一個flutter-web做的門戶導(dǎo)航,導(dǎo)航資源(常用地址)在項目json文件中

目的: 任何有權(quán)限的人更改項目的json文件(增減常用網(wǎng)站資源)后,提交代碼到git就能自動發(fā)布

準(zhǔn)備工作和配置

? ?1. 服務(wù)器一臺(安裝flutter,jenkins,nginx)

? ?2. 登錄服務(wù)器工具(我用secureCRT? => 用到這個就想到j(luò)ava大神--陳濤)?

? ?2. 配置jenkins, 配置gitlab

? ?3. 配置nginx訪問頁面


第一步: 安裝secureCRT

crt詳細(xì)破解教程? 就不贅述了??赐赕溄佑浀眠@兩個點:?

1. 輸入name和company 用截圖圖片上的?

?2. 點擊generate重新生成license key 再粘貼過去否則不會成功

第二步: 在linux上安裝flutter

?前提:我推薦先看一篇關(guān)于linux環(huán)境變量的文章? 環(huán)境配置文件的區(qū)別?

?了解了基礎(chǔ)知識,我們來操作

? 1.? 安裝flutter

? ? 我選在在home目錄下, git clone? https://github.com/flutter/flutter

? ?很慢的話,我就直接在下載到本地(鏈接要是打不開,就去上面的github上下載)

? ?2. 如果是下載到本地,就用CRT上傳本地安裝包到服務(wù)器??

? ? ? ? (1)在 CRT? 按ALT+P進入sftp

? ? ? ? (2)pwd查看當(dāng)前所在目錄

? ? ? ? (3)cd? /home (我下載在home目錄)

? ? ? ? ?(4)put? 本機文件路徑(put? C:\Users\Downloads\flutter_linux_1.17.3-stable.tar.xz)

? ? ? ? ?(5) 在服務(wù)器home目錄下查看是否上傳成功

? ? ? ? ? (6)?

? ? ? ? ? ? ? ? ? ?將xz文件解壓成tar文件 xz -d filename (壓縮xz -z filename)

? ? ? ? ? ? ? ? ? ?將tar文件解壓? tar -xvf filename (壓縮tar -cvf filename)

? ? ? ? ? ? ? ? ? ? 或者一次性到位tar xvJf filename

? 3.? 解壓了安裝包出現(xiàn)了flutter文件夾,接下來就是配置環(huán)境變量?

? ?進入 vi ~/.bash_profile

? ?按 i? 進行插入編輯

? export PUB_HOSTED_URL=https://pub.flutter-io.cn

? export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

? export PATH=/home/flutter/bin:$PATH

按 esc? 退出插入模式? :wq保存退出

source ~/.bash_profile 使保存生效

4.驗證是否有了flutter命令

執(zhí)行 flutter doctor -v

如果可以了 查看分支? flutter channel

切換分支flutter channel beta? (web項目才需要到beta)

嘗試一下flutter build? web打包可不可以

提示我暫時不支持,所以切記要開啟web支持 , 執(zhí)行:flutter config --enable-web?

執(zhí)行 flutter doctor -v 能看到有devices就ok 了



第三步: 在服務(wù)器上安裝jenkins

完美的安裝教程點這里

service jenkins start? 提示service 命令找不到,那就安裝一個

bash: service: command not found

1. yum list | grep initscripts

2. yum install initscripts -y


第四步:配置gitlab push觸發(fā)jenkins自動打包

? 注意:三個插件:gitlab(只有有這個插件才會出現(xiàn)下圖圖一鉤子,如果是github觸發(fā)就需要相應(yīng)的github插件,下面的鉤子名稱也會有所區(qū)別),gitlab hook,?Build Authorization Token Root

圖一

下圖中的token是點問號生成的,注意了。

圖二

??參考鏈接?1??參考鏈接?2?

這里我只描述問題。按照第一篇就可以配置成功,第二篇輔助

問題1:gitlab 10.6 版本以后為了安全,不允許向本地網(wǎng)絡(luò)發(fā)送webhook請求,如果想向本地網(wǎng)絡(luò)發(fā)送webhook請求,則需要使用管理員帳號登錄


解決1:下圖圈出來的地方,管理員有一個扳手樣的設(shè)置,進入admin area后選擇---setting ---network---找到下圖中的outBound request 勾選 allow requests to the local network from hooks services



問題二: 下載插件總是失敗,gotlab hook 依賴的ruby-runtime提示不支持java11

現(xiàn)在高版本jenkins都支持java11,甚至?xí)崾灸闵墶5遣寮]跟上兼容。但是在虛擬機上查看java版本java -version看到的是8.? ? 讓后一度困惑。

后來發(fā)現(xiàn)烏班圖上面有兩個java版本,一個11,一個8. 切換java版本后gitlab hook安裝成功

```

//此命令將列出Ubuntu存儲庫中可用的所有JDK軟件包,系統(tǒng)上僅安裝帶有“i”前綴的軟件包

sudo aptitude search jdk? // 查看所有安裝的jdk

which java? // 安裝目錄

sudoupdate-alternatives --config java??// 切換java版本

```


如果是下面的錯誤,多下載幾次吧。要不就去官網(wǎng)下載后上傳

java.net.UnknownHostException: updates.jenkins.io


配置成功后,點擊test測試,返回200代表成功,或者修改代碼push,看見jenkins有構(gòu)建記錄,那代碼在哪里呢

/usr/lib/jenkins/jenkins.war WAR包

/etc/sysconfig/jenkins 配置文件

/var/lib/jenkins/ 默認(rèn)的JENKINS_HOME目錄

/var/log/jenkins/jenkins.log Jenkins日志文件

代碼已經(jīng)可以自動化部署到我們的jenkins所在的服務(wù)器,目錄為jenkins的workspace目錄

在這里

/var/lib/jenkins/workspace

這個工作目錄包含代碼 和打包后的文件,可以指定到其他文件夾,按照下面的設(shè)置代碼就會被放到指定文件夾

jenkins部署到多臺服務(wù)器,有興趣可以參考鏈接

問題2:?當(dāng)服務(wù)器有了flutter命令后,打包卻不成功,jenkins構(gòu)建錯誤記錄:提示找不到flutter命令

這里就要注意??jenkins執(zhí)行shell環(huán)境變量問題,需要知道jenkins找環(huán)境變量的順序

解決2:

在執(zhí)行命令前都去刷一遍變量文件:source ~/.bash_profile 就可以了


可以發(fā)現(xiàn)構(gòu)建前會出來一堆的文件信息,最下面就是我們配置的環(huán)境變量,找到了環(huán)境變量就可以構(gòu)建了


第五步 :在服務(wù)器安裝nginx,配置好后訪問頁面

安裝很簡單

在安裝nginx前首先要確認(rèn)系統(tǒng)中安裝了

安裝: yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

(1) 下載 wget http://nginx.org/download/nginx-1.12.2.tar.gz

? ? ? ? # 如果沒有安裝wget

? ? ? ? # 下載已編譯版本

? ? ? ? $ yum install wget

? ? (2) 解壓 tar.gz 使用tar命令進行解壓 : tar -zxvf nginx-1.12.2.tar.gz

tip:解壓到指定的文件夾 :tar -zxvf nginx-1.12.2.tar.gz? -C /usr/java

? ? gz文件的解壓 gzip 命令: gzip -b nginx.gz

? ? (3) 進入解壓后的文件夾 cd nginx-1.12.2

? ? (4) 執(zhí)行 ./configure? 來查看是否可以執(zhí)行安裝

安裝報錯誤的話比如:“C compiler cc is not found”,這個就是缺少編譯環(huán)境,安裝一下就可以了 yum -y install gcc make? ? ? ? gcc-c++ openssl-devel wget

? ? ? ? 安裝Nginx時報錯

? ? ? ? ./configure:? error: the HTTP rewrite module requires the PCRE library.

解決:yum -y install pcre-devel openssl openssl-devel

? ? ? ? 如果沒有error信息,就可以執(zhí)行下邊的安裝了:

? ? (5) 安裝? make -j4 && make install

? ? (6) 此時已經(jīng)有nginx文件夾生成,返回進入到nginx目錄,執(zhí)行sbin/nginx -t 看結(jié)果是否成功 (在/usr/local/nginx)

(7) 編輯nginx配置文件

到nginx目錄??

cd?usr/local/nginx

vim conf/nginx.conf? ?配置端口和打包后的路徑

:wq保存退出后,在nginx目錄下重啟nginx??

重啟服務(wù) sbin/nginx -s reload

? 問題:在重啟時報錯? 提示 nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"

? 解決: [root@localhost nginx]/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

? 再重啟即可


curl 127.0.0.1:8324 嘗試訪問本地文件,可行就很nice

問題:如果在瀏覽器打不開,要考慮是不是防火墻沒開這個8342 端口

? ? ? 檢查系統(tǒng)版本cat /etc/redhat-release

? ? ? 顯示? CentOS Linux release 7.5.1804 (Core)

? ? ? CentOS7 默認(rèn)使用firewalld防火墻,也有的是iptables防火墻,去這里仔細(xì)看看命令檢查,開啟端口 傳送門

? ? ? 查看端口是否開啟 : firewall-cmd --query-port=8324/tcp

? ? ? 開啟端口 : firewall-cmd --add-port=8324/tcp --permanent? (?--permanent ? #永久生效,沒有此參數(shù)重啟后失效)

? ? ? ?重啟防火墻:?systemctl restart firewalld

問題:訪問頁面提示403 forbidden

修改nginx配置文件第一行: vim? conf/nginx.conf

user root; 給nginx 用戶root權(quán)限

tips:重啟服務(wù)器后記得要重啟jenkins 和 nginx? ,當(dāng)然你也可以配置開機自啟動

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容