1. 程式人生 > >jenkins持續整合過程中的一些技術積累

jenkins持續整合過程中的一些技術積累

Jenkins

Jenkins2

全新的jenkins 2 釋出了,新版本更好的支援Pipeline,和老版本完全相容.
最簡單的升級方法就是採用

yum install jenkins

這種方法.
由於jenkins2不支援部分容器,因此,簡單的下載jenkins.war替換以前的,可能會導致啟動不了。

Jenkins使用者密碼填錯的後果

問題:
最近辦公電腦總是被鎖定,無法正常工作。
原因:
Jenkins的svn操作賬號密碼被人改動了。
在中興,凡是使用域賬號的軟體,如svn等,如果密碼錯誤,都會導致域賬號鎖定。
最明顯的效果,就是辦公電腦被鎖定,無法辦公。
由於svn大家使用的很多是免費版本,無法通過日誌追查密碼錯誤的電腦。
因此,如果一個人很無聊,通過軟體不斷將一個人的賬號密碼輸錯,這個人幾乎就無法辦公了。
這樣的域賬號鎖定設計,其實也算是一個bug.。
解決:
Jenkins將自己的svn賬號密碼填對即可解決。

Jenkins電視牆不鎖屏方法

問題:
Jenkins的電視牆,需要持續在顯示中輸出,但是公司的策略是強制鎖屏的(公司的系統預設10分鐘鎖屏,還強制無法修改),開一會電視牆就被鎖屏。
解決:
我採用python寫了模擬滑鼠,鍵盤的操作, 來避免鎖屏發生.
經過測試, 僅移動滑鼠是無法阻止鎖屏, 最有效的就是模擬鍵盤.

import win32api, win32con
win32api.keybd_event(144,0,0,0)
win32api.keybd_event(144,0,win32con.KEYEVENT_KEYUP,0)

就可以實現numlock(144)這個按鍵按下和釋放的操作.
讓它週期執行, 就可以阻止鎖屏, 持續電視牆的輸出了.

Jenkins的資料採用JUnit呈現

問題:
jenkins開發了一些程式,如何將輸出資料呈現。
思路:
Jenkins支援JUnit XML的解析和呈現,將資料寫成JUnit XML格式即可。
解決:
那怎麼將資訊寫成junit xml格式呢?
萬能的python庫又來了

pip install junit-xml

那麼就可以很簡單的書寫junit格式的xml了.
然後在jenkins中釋出junit報告,就能將我們需要的資訊通過junit的方式來呈現.
注意, pypi官方的介面文件沒有更新, 如何使用,必須去看它的原始碼才行(不過實現非常簡單).

svn版本號

這是個很易錯的地方,很多新手反覆問我為什麼SVN_REVISION的變數為空。
jenkins預設會有SVN_REVISION這個變數
但是,如果svn的源有多個時,這個變數就會為空.
假設jenkins設定了兩個svn module
SVN_REVISION_1 和 SVN_REVISION_2分別代表兩個module的最新SVN版本.
注意,同一個專案的兩個資料夾裡的SVN_REVISION是不一樣的, svn會分別記錄不同資料夾的最新svn版本號. 這就是為什麼有兩個及以上時,SVN_REVISION無法表達從而變成空的原因。

jenkins的groovy除錯

jenkins支援groovy, groovy的強大在於可以直接和jenkins類(java)打交道,如獲取build的結果等等.
email ext plugin可以採用groovy 模板進行郵件html方式的呈現, 即可以漂亮,又可以做到更多資料的呈現.
如果需要除錯groovy, 可以在瀏覽器中輸入
$JENKINS_URL/script
就可以進入groovy指令碼除錯介面.

刪除build history

jenkins當有很多build history時,需要刪除並從1開始計算.
在$JENKINS_URL/script的groovy指令碼除錯網頁中執行:

item = Jenkins.instance.getItemByFullName("your_job_name") item.builds.each() { build -> build.delete() } item.updateNextBuildNumber(1) 

即可實現

遠端刪除job的build資訊

jenkins的job每build一次,會有將job內容備份下來.如果需要手工刪除裡面的build,可以使用

curl -u user_name:apiToken -X POST JENKINS_URL/job/job_name/[xx-yy]/doDelete 

那麼就可以刪除從xx到yy區間的build了.
注意,這裡的apiToken需要從網頁中獲取
JENKINS_URL/me/configure網頁裡可以檢視使用者的apiToken

jenkins需要重啟來重新載入環境

遇到一個jenkins很坑的地方. 將A使用者加入G組, 從而讓A使用者具備G組的許可權.在伺服器的shell怎麼操作,都是對的.
但是,讓jenkins服務執行,就是沒有許可權.
被坑裡很久後, 才知道 jenkins是不會動態載入環境的, jenkins必須重啟, 才會應用上最新的組資訊. 坑爹啊.

郵件模板

jenkins伺服器的郵件傳送功能,建議採用email-ext外掛,可以定製化的給什麼人傳送什麼內容的郵件,非常強大。
另外,推薦使用郵件模板。在jenkins的系統配置的郵件模板新建一個,設定後。各個專案的各個jobs都可以直接選擇模板,就可以實現郵件傳送了,不需要每個job體力活的修改。
模板一旦修改,使用它的jobs全部按新規則執行,對大規模jobs的jenkins伺服器而言,是非常方便的。

jenkins指令碼需要使用密碼卻不想明文的解決方法

Jenkins持續整合伺服器,需要從SVN update and commit程式碼,其中 commit部分會涉及密碼明文化,誰也不希望自己的人事密碼赤裸裸地被顯示.
比較多種方案後,我選擇了shc.
shc是一個可以將指令碼轉為C語言再編譯為二進位制執行檔案的工具.
將涉及人事密碼的關鍵一句拿出來,單獨寫成一個指令碼再用shc變成二進位制執行檔案,原指令碼呼叫它即可.這樣就可以解決密碼明文化的問題.
還有通過hash將明文密碼加密的方案,這種方式有漏洞,只是防止了明文化而已,如果其他人也具有執行指令碼的許可權時,跟蹤加密密碼解碼後的變數,就可以獲取你的人事密碼

相關推薦

jenkins持續整合過程一些技術積累

Jenkins Jenkins2 全新的jenkins 2 釋出了,新版本更好的支援Pipeline,和老版本完全相容. 最簡單的升級方法就是採用 yum install jenkins 這種方法. 由於jenkins2不支援部分容器,因

Jenkins持續整合介紹及外掛安裝版本更新演示(一)--技術流ken

  Jenkins介紹    Jenkins是一個開源軟體專案,是基於Java開發的一種持續整合工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。 Jenkins功能包括: 1、持續的軟體版本釋出/測試專案。 2、監控外部呼叫執行

系統應用整合過程一些

這次想來講講系統應用整合過程中遇到的一些坑,尤其是 so 檔案相關的坑。 背景 埋這些坑的最初來源是由於測試人員在整合新終端裝置時提了個 bug: app 在這個裝置上無法啟動。 隨後拋來了一份日誌,過濾了下,最重要的其實就一條,crash 日誌: java.lang.UnsatisfiedLinkError

Jenkins持續整合工具安裝

文章目錄 安裝Jenkins 安裝OpenJDK war包方式安裝Jenkins 登入 安裝Jenkins 這裡不建議docker安裝,因為使用Jenkins的時候會依賴很多宿主機的東西,如果使用docker

工作環境下Apache Jmeter + ANT +Jenkins 持續整合環境搭建(續)----Linux伺服器上搭建ant和jmeter

接上文https://blog.csdn.net/be_x_man/article/details/80997740 在本地配置好了jmeter和ant之後,還需要將指令碼放在jenkins上執行,所以也需要在jenkins所在的Linux伺服器上搭建jmeter和ant 配置過程基本上和W

工作環境下Apache Jmeter + ANT +Jenkins 持續整合環境搭建

最近工作需要在公司使用jmeter實現介面自動化測試,我就選取了jmeter+ant+jenkins,搭建環境過程如下 本地環境:win7 64位 雲桌面系統 1,本地電腦上JDK安裝,網上教程很多,這裡不再記錄 2,本地電腦上Apache jmeter下載與安裝 地址:http:/

部署jenkins持續整合工具

1、Linux安裝配置jdk環境 1.1、上傳到 Linux 伺服器;例如: 上傳至: cd /usr/local 1.2、解壓: rpm -ivh jdk-8u111-linux-x64.rpm 1.3、環境變數配置 cd /etc 在etc下,找到 profile檔案,增加如下如下配置:

安裝jenkins centos下搭建Jenkins持續整合環境(安裝jenkins)

1、安裝JDK yum install -y java 2、安裝jenkins 新增Jenkins庫到yum庫,Jenkins將從這裡下載安裝。 1 wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redh

android開發過程一些遇到的問題

記錄android開發過程中遇到的問題。 1.在一個xml中能否使用同一個include多次 http://www.apkbus.com/android-104152-1-1.html android中include標籤的使用 http://

Jenkins持續整合配置(Android)

前言 Jenkins持續整合配置,總共有6個選項 * General * 原始碼管理 * 構建觸發器 * 構建環境 * 構建 * 構建後操作 配置過程 General 原始碼管理 構建觸發器 構建環境 構建

jenkins 持續整合解決方案

jenkins 持續整合解決方案 jenkins 持續整合解決方案 0 緣起 1 環境準備 2 構建指令碼 3 Dockerfile 的編寫 4 流程

jenkins持續整合docker映象構建

映象環境包括: docker docker-compose java tomcat maven sonar-scanner Dockerfile: FROM ubuntu:16.04 MAINTAINER [email protec

在SSH整合過程:org/hibernate/engine/spi/SharedSessionContractImplementor

我之前是用的Spring3+Hibernate5 發現有衝突。 研究後,正確的版本關係是Spring3+Hibernate4 在網上下載Hibernate4的包替換Hibernate5的包 加入lib 然後在配置連線池的時候,需要下載c3p0的jar包  還需要下載o

Jenkins持續整合

Jenkins持續整合 自動化運維   Jenkins所有包下載 連結:https://pan.baidu.com/s/1SXg-Av99xeyR3OdvJhv7Dg 提取碼:dara   Jenkins環境搭建 由於Jenkins是依賴於ja

Linux下搭建Git伺服器 Jenkins持續整合環境部署

1、安裝Git 見 Jenkins持續整合環境部署 第四節 2、建立Git使用者和使用者組 1 groupadd git 2 useradd git -g git 3、建立證書切換到git使用者建立證書 1 su git 2 cd /home/git 3 mkdir .ssh 4 c

Springboot kafka 整合過程的問題

Q1:Failed to start bean 'org.springframework.kafka.config.internalKafkaListenerEndpointRegistry' A1:是因為沒有在注入時未對其進行配置導致,註冊參照如下 /** * Created by wolf

Jenkins持續整合 之 git常用命令

Jenkins持續整合 之 git常用命令 git本地倉庫命令 git --help 調出git的幫助文件 git +命令 --help 檢視某個具體命令的幫助文件 git --version 檢視git的版本 git init

Jenkins持續整合 之 git檔案狀態

Jenkins持續整合 之 git檔案狀態 git 檔案狀態圖 git檔案狀態展示 kangdeMacBook-Air:cedarhd kang$ git status #git檔案狀態查詢 On branch master Your branch is up to date with

Jenkins持續整合 之 git分支

Jenkins持續整合 之 git分支 什麼是分支 軟體專案中啟動一套單獨的開發線的方法 為什麼使用git 1.可以很好的避免版本相容開發的問題,避免不同版本之間的相互影響。 2.封裝一個開發階段。 3.解決bug的時候新建分支,用於對該bug的研究。 git中跟分支相關的命令 git branc

Jenkins持續整合 之 git更改提交

Jenkins持續整合 之 git更改提交 git reset HEAD 檔名---將不必要的檔案移除暫存區 kangdeMacBook-Air:test1 kang$ echo "222" >> file2 kangdeMacBook-Air:test1 kang$ ls file1 f