Jenkins version 2.277.4
Docker version 20.10.5
Jenkins中文官網->https://www.jenkins.io/zh/java
docker 安裝一切都是那麼簡單,注意檢查8080是否已經佔用!git
docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
若是沒改端口號的話
安裝完成後訪問地址-> http://{部署jenkins所在服務IP}:8080
docker
詳情見官網教程->https://www.jenkins.io/zh/doc...shell
小試牛刀,先建立簡單的任務,任務內容:執行服務器的shell腳本或Linux命令。
因爲jenkins 部署在docker容器內,沒辦法直接執行宿主機上的shell腳本,須要ssh登陸到宿主機上執行。這就須要Publish Over SSH插件。(若是Jenkins不是用docker部署的就不會有這個煩惱)一樣的道理,若是jenkins和項目不在一臺服務器也能夠使用這個插件,遠程拷貝打包的文件或者執行腳本等。segmentfault
首頁->系統管理->插件管理->搜索Publish Over SSH並安裝.服務器
首頁->系統管理->系統配置->ssh
首頁->新建任務->填寫任務名稱->選擇:構建一個自由風格的軟件項目
直接在切到【構建】選項卡,點擊【添加構建步驟】選擇Send files or execute commands over SSH
在SSH service下面選擇剛剛在【系統配置】配置的服務器。
Exec command一欄直接輸入命令便可,不妨能夠試試echo $(pwd)
命令。maven
保存,第一個任務建成功了,回到任務詳情頁,點擊當即構建,找到【控制檯輸出】能夠看到執行詳情。工具
原理:jenkins用git插件將項目拉下來,用Maven Integration插件打包,用Publish Over SSH插件將打包的jar或者文件夾發送到部署項目的服務器,並執行shell腳本啓動~spa
先決條件:
一樣建立任務,來到配置頁面,切到【源碼管理】選項卡配置倉庫地址和密鑰:
這個時候能夠保存並點擊當即構建看看代碼可否拉下來。
切到【構建】選項卡,點擊【添加構建步驟】選擇「調用頂層 Maven 目標
」
maven版本選擇在【全局工具配置】裏面配置的maven,若是沒有就是你不配,不,是你沒配!
目標一欄填寫打包命令:clean install -Dmaven.test.skip=true,或者根據狀況填寫。
這個時候能夠保存並點擊當即構建看看代碼可否正常打包。
代碼拉下來了,jar也打包好了,可是jar包在容器裏面,能夠在【構建】模塊添加個Send files or execute commands over SSH
,使用Source files和Remote directory傳輸jar文件,可是我部署jenkins的docker和部署項目的服務器是同一臺,使用命令docker cp 命令就能夠將docker容器裏面的jar文件拷貝出來,並和啓動項目的腳本寫在一塊兒。就省去了文件傳輸,直接執行腳本便可。
docker cp詳見《蠻吉學 Docker》
一個自動化部署maven項目的任務就建立完了
Source files(任務的工做空間目錄):就是代碼拉下來的根目錄,若是要傳輸文件夾用**
表示
Remote directory(登陸項目服務器的家目錄):ssh登陸的家目錄,好比root登陸這個目錄就是/root,且文件只能傳輸到這個目錄下或這個目錄的下級目錄!
Exclude files:不傳輸的文件。能夠過濾不須要的文件好比README.md
和.gitignore
多個用逗號隔開,保證Pattern separator配置的是[, ]+
nohup: failed to run command java: No such file or directory
,前面加一行source /etc/profile
能夠解決。