創建任務
登錄Jenkins
,點擊左側列表的新建
選項。輸入任務名稱,選擇構建一個自由風格的軟件項目
,點擊確定
。
配置
在任務配置
界面,可以設置General標簽
中的丟棄舊的構建
選項,設置保持構建的天數
和保持構建的最大個數
。
點擊源碼管理
標簽,選擇git
,在Repository URL
中輸入Git倉庫的鏈接。
如果是HTTP鏈接,選擇Credentials
一行的Add > Jenkins
,在Kind
一行下拉選擇Username with password
,在下方Username
和Password
框中輸入用戶名和密碼。
使用docker jenkins容器里面的ssh-key。
直接使用服務器的ssh key
就可以了。如果指定Path to key
需要使用docker
中的ssh key
。如果使用Source files
那么需要使用docker
容器中的key
, 因為Source files
的相對路徑不是固化到本地的路徑, 而是docker
中的路徑.
如果是SSH
鏈接,選擇SSH Username with private key
,在Username
框中輸入用戶名,Private Key
選擇為Enter directly
,在顯示的key
框中輸入私鑰。(生成秘鑰ssh-keygen -t rsa -C "email.com"
,生成的文件在home
目錄下的.ssh
目錄下,使用命令cat id_rsa
查看私鑰,復制到key
框中)。點擊最下方的Add
按鈕,保存設置。
在Credentials
的下拉選項中選擇剛剛創建Username
。
使用定時任務
在構建觸發器
標簽里選擇Poll SCM
,輸入H/2 * * * *
, 最后點擊保存
。
這是一個定時任務,每隔2分鍾查詢一次代碼,如果有更新,就執行任務。
使用webhook
使用webhook比定時任務更好,webhook只有在push或指定操作時,jenkins會拉取代碼,不用定時訪問,耗費資源。
需要安裝的插件Gitlab Hook、GitLab、Gitlab Authentication、Build Authorization Token Root
配置job
,在構建觸發器
中勾選Build when a change is pushed to GitLab. GitLab CI Service URL: http://服務器IP:8080/project/demo
,URL
后面是回調地址,再點擊高級
,再Secret token
行,點擊Generate
生成token
。
在GitLab
服務器上的相對應的項目的Settings
里面的Integrations
中,配置webhook
,輸入在jenkins中獲取的URL
,和token
,可以根據需要勾選事件,開啟SSL,點擊Add webhook
。會在Add webhook
按鈕下生成一個webhook
,點擊test
,會彈出勾選的事件,選擇相應的事件,會在頁頂彈出Hook executed successfully: HTTP 200
,到此,webhook
配置完成。
注意:在腳本中使用docker exec
執行容器中的命令是, 不要指定-it
, -t
是指定tty
, 而jenkins
中沒有tty
, 只需要指定-i
即可.
1 將代碼部署到遠程服務器
不需要使用容器中的ssh-key。
在jenkins服務器上生成keyssh-keygen -t rsa -C "email.com"
,
使用ssh-copy-id -i ~/.ssh/id_rsa.pub user@ip
(如果端口不是22,可以添加參數-p port
進行修改,port
為端口數值), 將生成的公鑰保存在目標服務器。這樣可以免密碼登錄。
安裝Publish over SSH
插件,在系統管理
-->系統設置
里面找到Publish over SSH
。
配置Jenkins SSH Key
,如果key在生成時設置了密碼,就在Passphrase
里輸入密碼,沒有則忽略。
復制私鑰,粘貼進Key
里面。
配置SSH Servers
,點擊增加
。Name
為SSH的名稱,Hostname
是遠程服務器的IP地址,Username
是登錄的用戶名,Remote Directory
是遠程服務器的目錄,必須是真實存在的,插件不會自動創建。
點擊Test Configuration
測試配置是否成功。成功會顯示Success
。
1.1遠程部署任務
再創建一個構建任務,當有觸發任務時,構建任務運行。
還是點擊新建
,輸入一個任務名稱,不點擊構建一個自由風格的軟件項目
,在最下面的復制框中,輸入剛剛創建的觸發任務名稱。
點擊確定
。如果輸入的任務名不存在,會報錯,並讓你重新輸入一次。
在構建觸發器
中選擇Build after other projects are built
,在其他項目建成后進行構建,Projects to watch
選擇第一個任務,可能會報錯No such project ‘gol’. Did you mean ‘golismero’?
,不用理會,如果是單個任務,可以把最后面的,
逗號和空格刪除,就不會報錯了,不刪也沒有影響。
勾選下面的Trigger only if build is stable
,只有在構建穩定時才觸發。
其他設置不變,構建后操作
中增加構建后操作步驟
,在彈出的選項中選擇Send build artifacts SSH
,輸入SSH Server Name
(是遠程主機IP),然后在Transfers
中的Exec command
中輸入腳本命令,其他選項暫時不用填寫。
Source files
是相對於workspace
下項目目錄的目錄, 是一個相對目錄, 如果在workspace
目錄, 即jenkins
的工作目錄, 那么需要填寫**/
, 后面可以跟工作目錄下的文件或文件夾.
Remove prefix
文件復制時要過濾的目錄.
Remote directory
文件得到到遠程機上的目錄,此目錄是相對於SSH Server
中的Remote directory
的,如果不存在將會自動創建。
保存,即可看到觸發任務和構建任務。
還有另一種方式可以部署
2 SSH插件部署
這種方式需要安裝SSH
插件。
點擊Credentials
-->System
-->Add domain
,在Domain Name
中輸入名稱,Description
描述,可寫可不寫,Specification
保持默認為Add
,點擊ok
。在新頁面點擊左上的Add Credentials
,輸入遠程登錄的Username
和Password
,點擊OK
。
點擊系統管理
-->系統設置
,找到SSH remote hosts
,配置SSH site
,點擊增加
,輸入Hostname
主機IP,Port
遠程連接端口(一般為22),Credentials
選擇剛剛創建Domain
,和Username
相同,點擊Check connection
,顯示Successfull connection
,成功,點擊保存
。
2.1 遠程部署任務
基本和1.1
相同,但是這個是在構建
中增加構建步驟
,在彈出的選項中選擇Execute shell script on remote host using ssh
,默認會自動填寫SSH site
(如果沒有填寫,點擊輸入框看看有沒有,如果沒有可能是前面出現錯誤),可能會有紅字報錯SSH Site not specified
,不用理。在Command
輸入框中輸入shell
腳本。保存
即可。
這種方式沒有第一種構建的快。
配置郵件
可以安裝Email Extension Plugin
插件,擴展郵箱功能。
點擊左側的系統管理
,在管理Jenkins
列點擊系統設置
,在新頁面找到Jenkins Location
,在系統管理員郵件地址
欄中輸入發件人,格式為標題<email.com>
,再找到郵件通知
,點擊高級
按鈕,添加SMTP服務器
,以及郵件后綴(@xxx.com
),使用SMTP
驗證的用戶名為完整的郵箱賬號,密碼是授權碼。(騰訊企業郵箱如果綁定了微信,在設置-微信綁定-客戶端專用密碼,生成授權碼,保存設置。)勾選使用SSL
協議,SMTP
端口是465
, Reply-To Address
填寫收件人地址。
高級版郵件通知
需要安裝Email Extension
插件,安裝好后,點擊系統管理
-->系統設置
找到Extended E-mail Notification
,配置SMTP server
服務器地,格式為smtp.exmail.qq.com
(這里用騰訊企業郵箱作為例子).
Default user E-mail suffix
設置郵箱后綴,就是@及后面的字符@xxx.com
.
Default Content Type
默認發送的內容類型選擇HTML/(text/html)
.
Default Recipients
默認收件人,可以設置多個收件人,中間用,
隔開,英文狀態下的符號.
Default Subject
默認主題不用改,也可以在最前面加一些文字,比如構建通知
.
Default Content
這里面是默認模板,可以在網上找模板更改,也可以自己寫,html類型。
點擊上面的高級
按鈕,勾選Use SMTP Authentication
,輸入Username
和Password
,Password
是客戶端授權密碼要和配置郵件
中的授權碼一樣,勾選SSL
,點擊保存
。
為單個的Job
增加構建后步驟
,
選擇Editable Email Notification
, 在Project Recipient List
收件人列表中輸入收件人郵箱, 多個可以用,
分割, 想使用全局默認配置的話, 可以使用$DEFAULT_RECIPIENTS
.
Project Reply-To List
允許回復人列表, 默認值$DEFAULT_REPLYTO
。
Content Type
文檔類型, 可以設置HTML
。
Attach Build Log
發送的郵件是否包含日志。
點擊Advanced Settings
, 在Triggers
中, 刪除Sent To
默認的Developer List
, 點擊Add
添加Recipient List
, 保存完成。