轉載:https://www.cnblogs.com/shuoer/p/9471839.html
前言:因爲要搭建Jenkins,試了很多辦法都不行,後來找到這篇博客裝好了,分享下,不過我有個疑問,爲什麼要裝tomcat?
環境說明
兩臺主機
- 本地服務器 192.168.1.17 jenkins服務器及dev環境
- 阿里雲 :112.74.184.170 代碼倉庫及上線環境
思路:
我想實現用本地的jenkins服務器控制dev環境和線上release環境
由於手頭服務器有限,所以jenkins服務器和dev環境在同一臺服務器上
release環境和代碼倉庫在同一臺服務器上
ubuntu 安裝 JDK
ubuntu的安裝我們採取最簡單的方式安裝 直接用apt-get的方式
//添加java的ppa
sudo add-apt-repository ppa:webupd8team/java
//更新軟件源
sudo apt-get update
//安裝java8
sudo apt-get install oracle-java8-installer
安裝器會提示你同意 oracle 的服務條款,選擇 ok
然後選擇yes 即可
ubuntu 安裝tomcat8
通過apt安裝 tomcat8
sudo apt-get install tomcat8 tomcat8-docs tomcat8-examples tomcat8-admin -y
安裝完成後的配置文件放置在/var/lib/
#啓動
service tomcat8 start
#狀態
service tomcat8 status
#停止
service tomcat8 stop
配置管理員的權限
sudo vim /var/lib/tomcat8/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="root" password="123456" roles="manager-gui,admin-gui"/>
重啓服務測試
service tomcat8 restart
安裝Jenkins
參考官網 https://pkg.jenkins.io/debian-stable/
這裏我們使用Jenkins的官方提供的軟件倉庫,要使用官方的軟件倉庫之前必須將軟件倉庫的祕鑰添加到本地
#添加官方軟件倉庫的祕鑰到本地的apt祕鑰中
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
將官方提供的軟件倉庫地址加入到本地的apt軟件源中,本地用於存放軟件源的文件在/etc/apt/sources.list
#將地址添加進本地的軟件源列表
$ deb https://pkg.jenkins.io/debian-stable binary/
更新我們本地的軟件源緩存,然後直接安裝jenkins
$ sudo apt-get update
$ sudo apt-get install jenkins
啓動jenkis
sudo /etc/init.d/jenkins [start|restart|stop]
安裝jenkins
打開我們的瀏覽器輸入jenkins的服務器地址,在這裏我的是192.168.1.17
http://192.168.1.17:8080
但是呢有時候這個端口就會被萬惡的tomcat佔用我們不得不修改jenkins的端口(此時如果你打開的是jenkins此步驟可以省略)
修改jenkins端口
$ sudo vim /etc/default/jenkins
#修改如下內容
HTTP_PORT=8085
#重啓jenkins服務
$ sudo /etc/init.d/jenkins restart
首次進入jenkins如要輸入密碼,密碼位置:/var/lib/jenkins/secrets/initialAdminPassword
插件安裝
點擊“Install suggested plugins”,即安裝推薦的插件:
開始安裝插件,安裝插件比較慢,要多等一會兒
額...***會快很多哦!!!
創建管理員賬戶
創建任務
由於我不需要什麼後臺的編譯只需要編譯node,所以我直接選擇了利用shell腳本去構建,所以我甚至都不需要配置git,全部shell就可以了
填入我們需要執行的shell腳本(本人小白一個shell寫的太爛,大家不要介意,原諒我吧!)
保存之後,點擊立即構建,你會發現死活都編譯不過去,各種失敗!接下來我們逐個擊破它!
沒有權限的問題
在Ubuntu下,當執行apt-get install方式安裝Jenkins的時候,會自動創建jenkins用戶,這是一個沒有用戶目錄的賬號。
可想而知jenkins用戶肯定是沒有什麼權限的,所以我們要想辦法讓jenkins用shuoer賬戶運行
將shuoer用戶添加到jenkins用戶組中,讓shuoer用戶擁有管理jenkins的權限
$ sudo gpasswd -a shuoer jenkins
現在root可以管理jenkins了,我們需要配置jenkins的配置文件讓jenkins用shuoer身份運行,配置文件在/etc/default/jenkins
JENKINS_USER=shuoer
JENKINS_GROUP=shuoer
ok,重啓jenkins
$ sudo /etc/init.d/jenkins restart
由於jenkins的工作目錄在/var/lib/jenkins我們查看下它的所屬用戶和所屬組
這裏顯然是不對的,由於我們把jenkins的默認運行用戶改成了shuoer,接着改
$ sudo chown -R shuoer:shuoer /var/lib/jenkins
再重啓jenkins
$ sudo /etc/init.d/jenkins restart
ok,沒毛病了,開始構建
構建遠程服務器
以上都是構建本地,也可以認爲是dev環境,假如需要構建test環境怎麼辦?(假設test服務器在阿里雲)
可以藉助ssh的強大功能,ssh不僅能登陸遠程主機,還可以在不登陸遠程主機的情況下讓遠程主機執行命令,藉助這個特性我們可以做很多的事情!比如自動化!等等!
ssh 遠程主機用戶名@主機地址 "需要執行的命令"(前提是必須要做到免密登陸哦)
舉個例子:
#這樣就可以在不登陸的情況下把遠程主機的磁盤使用情況給我們輸出出來
ssh [email protected] "df -h"
執行多行命令呢?
ssh [email protected] "pwd; df -h; /home/shuoer/shell.sh"
讓遠程主機執行本地的shell腳本呢?
#前提是你本地得有這個shell.sh腳本
ssh [email protected] < shell.sh
ok,我們新建一個構建遠程服務器的任務