參考資料:java
http://blog.csdn.net/wuxuehong0306/article/details/50016547mysql
https://www.ibm.com/developerworks/cn/opensource/os-autotesting-jenkins-testing/linux
http://www.imooc.com/article/12626nginx
http://aoyouzi.iteye.com/blog/2294990c++
https://jenkins.io/git
資源包:連接:http://pan.baidu.com/s/1qYibCAS 密碼:u4m7github
一. 安裝環境 web
System: CentOS 6.8x64 (deploy.example.com)sql
Jenkins: Jenkins ver. 1.650shell
Ansible: Ansible 2.1.0
Gitlab: GitLab 7.14.3
Svn安裝
[root@bogon ~]# yum install subversion (SVN服務器)
mysql-server (用於codestriker)
httpd mod_dav_svn mod_perl (用於支持WEB方式管理SVN服務器)
sendmail (用於配置用戶提交代碼後發郵件提醒)
wget gcc-c++ make unzip perl* (必備軟件包)
ntsysv vim-enhanced (可選)
基本的SVN服務器配置
新建一個目錄用於存儲SVN全部文件
# mkdir /mnt/svn
新建一個版本倉庫
#svnadmin create /mnt/svn/project
在conf目錄下的文件的意義
authz文件是權限控制文件
passwd是賬號密碼文件
svnserve.conf SVN服務配置文件
(1)svnserve.conf: svn服務配置文件。
其中關於svnserve.conf的文件配置項分爲如下5項 並且這寫是須要打開的,詳細解釋以下
anon-access = read #匿名用戶可讀
auth-access = write #受權用戶可寫
password-db = passwd #使用哪一個文件做爲帳號文件
authz-db = authz #使用哪一個文件做爲權限文件
realm = /var/svn/svnrepos # 認證空間名,版本庫所在目錄建議使用相同的用戶名口令數據文件
下面是本機配置
[root@bogon conf]# cat svnserve.conf | grep -v '^#' | grep -v '^$'
[general]
anon-access = none
auth-access = write
password-db = /mnt/svn/project/conf/passwd
authz-db = /mnt/svn/project/conf/authz
realm = /mnt/svn/project
(2)passwd: 用戶名口令文件
在[users]塊中添加用戶和密碼,格式:賬號=密碼,如quwenzhe=123456
在svnserve.conf文件裏啓用這個文件。而後配置以下:
[root@bogon conf]# cat passwd | grep -v '^#' | grep -v '^$'
[users]
text=123456
pm=123456
server_group=123456
client_group=123456
text_group=123456
(3)authz: 權限配置文件
[root@bogon conf]# cat authz | grep -v '^#' | grep -v '^$'
[aliases]
[groups]
project_p=pm,text
project_s=server_group
project_c=client_group
project_t=test_group
[project:/]
@project_p=rw
* =
[project:/server]
@project_p=rw
@project_s=rw
* =
啓動svn
[root@bogon conf]# svnserve -d -r /mnt/svn
完成後測試svn是否正常
Linux端測試
#檢測版本庫
svn checkout svn://172.16.110.233/project/ --username=text --password=123456
#刪掉不要的版本svn cl --remove 文件名
[root@bogon db]# svn --username=pm co svn://172.16.110.233/project
Win端測試
回到svn能夠看到
Linux客戶端(清除本地緩存)
方法一:
linux下刪除~/.subversion/auth便可清除以前的用戶名和密碼:rm -rf ~/.subversion/auth
之後再操做svn會提示你輸入用戶名,這時就可使用新的了
方法二:
svn操做時帶上–username參數,好比svn –username=smile co svn_path local_path
創建Jenkins到svn的帳號
帳戶: svn
密碼: qpmall2017
完成以上操做後,安裝web工具支持apache和nginx均可以,爲了方便,咱們直接
yum -y install http*
完成後咱們須要對配置文件進行修改
若是有subversion.conf 這個文件就最好,沒有的話,本身建立
[root@bogon conf.d]# vim subversion.conf
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath /mnt/svn #svn的根目錄
AuthType Basic #Basic認證方式
AuthName "Authorization" #認證時顯示的信息
AuthUserFile /mnt/svn/project/conf/passwd #用戶文件
AuthzSVNAccessFile /mnt/svn/project/conf/authz #訪問權限控制文件
Require valid-user #要求真實用戶,不能匿名
</Location>
而後看看apache是否支持svn模塊
最後看看apache默認的端口,能夠直接使用80,也能夠修改默認端口,爲了不衝突,我作了修改
#vim /etc/httpd/conf
以上作完後,咱們能夠啓動服務看下效果了
儘管svn在以前的測試時是好的,可是和apache服務搭配後,無限循環在下面的頁面,直到報錯,全部的svn用戶都進不去(svn的conf文件中的passwd記錄的用戶)
通過排查,發現是apache的自動模塊的用戶沒有加入到svn的passwd文件中
這個文件在svn服務建立的時候自帶的,因此咱們須要在這個文件中加入相關的用戶和密碼
因此咱們在svn的conf目錄下
執行#htpasswd -c passwd svn
輸入密碼123456
——————————
備註htpasswd -c passwd username 增長用戶
只有第一個用戶加-c,其他用戶不用-c
htpasswd -D passwd username 刪除用戶
htpasswd -m passwd username 修改密碼
加[user]很是重要,由於用htpasswd的方式加用戶會負載掉[users],因此每次加完用戶,都須要補一下該節點, 以下圖:
————————————————
此時svn用戶已經備加入用戶組了,咱們從新啓動服務
[root@bogon ~]# service httpd restart
[root@bogon ~]# svnserve -d -r /mnt/svn
雖然安全進入,可是此時又報錯了
看提示是由於沒有權限被拒絕了,因此咱們須要給這個svn用戶一個權限,此時就須要修改
/mnt/svn/project/conf/authz文件中的權限了,修改完成後以下:
完成後咱們從新啓動服務後,效果以下
此時說明咱們成功的創建了svn和apache服務的聯繫
三. Jenkins配置
# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
# rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
# yum -y install jenkins
#vim /etc/sysconfig/jenkins
[root@bogon ~]# cat /etc/sysconfig/jenkins | grep -v '^#'| grep -v '^$'
JENKINS_HOME="/home/qpmall/jenkins"
JENKINS_JAVA_CMD=""
JENKINS_USER="root"
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
JENKINS_PORT="8080"
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"
JENKINS_HANDLER_MAX="100"
JENKINS_HANDLER_IDLE="20"
JENKINS_ARGS=""
登陸網頁(http://IP:8080),出現以下界面
按照提示打開密碼文件
在登錄頁中的password處輸入7df23528ef4b42e685718c5fd645d9f3
後出現
咱們爲了偷懶選擇安裝全部
完成後界面
這裏有2個選擇,一個是用原先他給你的那個用戶名和密碼(點擊左下方as admin),一個是創建本身的,咱們這裏本身建立一個
用戶名:qpmall
密 碼:qpmall123
電子郵件:qpmall@qpmall.com
完成後點擊Save and finsh
此時會提示你完成
完成後的界面,以下,中文的,開心嗎,O(∩_∩)O哈哈~
如今開始安裝自動化須要的插件Publish Over和SVN Publisher
過程以下
在這個頁面進行配置的修改,程序的設定和維護
如今要保證jenkins和引用服務器的聯通性
在Jenkins服務器中作以下操做
[root@bogon ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
30:95:9a:43:ed:4e:a3:ad:0a:b7:72:e2:8e:74:66:77 root@bogon
The key's randomart image is:
+--[ RSA 2048]----+
| ... |
| ..o |
| .o+ |
| +o+ |
| *S. |
| . o |
| ..+.. E |
|..*oo.o |
|.oo+o. |
+-----------------+
完成後有如下文件
在jenkinsfs服務器的家目錄~/.ssh/下會有私鑰id_rsa和公鑰id_rsa.pub
在應用服務器上建立~/.ssh文件夾和~/.ssh/authorized_keys文件,並將jenkins服務器的公鑰id_rsa.pub中的內容複製到authorized_keys文件
應用服務器上重啓ssh服務,service sshd restart
如今jenkins服務器可免密碼直接登錄應用服務器,以下圖
Passphrase:密碼(key的密碼,若是你設置了)
Path to key:key文件(私鑰)的路徑
SSH Server Name:標識的名字(隨便你取什麼)
Hostname:須要鏈接ssh的主機名或ip地址,此處填寫應用服務器IP(建議ip)
Username:用戶名
Remote Directory:遠程目錄(根據須要填寫文件傳到此目錄下)
「Use password authentication, or use a different key」:使用密碼驗證(這裏使用了密鑰認證因此不開啓)
配置完成後可點擊「Test Configuration」測試到目標主機的鏈接,出現」success「則成功鏈接
如果有多臺應用服務器,能夠點擊」增長「,配置多個「SSH Servers」
點擊「保存」以保存配置
系統配置好ssh鏈接後,到項目配置中配置構建後發佈的步驟
點擊(項目名「fin_test1」–>左側菜單的「配置」)來更改項目的配置
在配置最後找到「增長構建後操做步驟」,選擇"Send build artifacts over SSH"
能夠選擇git或者svn倉庫,可是咱們用svn
——————————————————————
PS:這裏介紹下如何添加 Credentials
在 jenkins 上設置 Credentials,而後再新建job的時候使用設置的 Credentials 便可
在jenkins界面,依次點擊: Credentials -> System -> Add domain:
Domain Name: 填寫你git服務器的地址,如 github.xxx.com
Description: 隨便寫一點描述,如 This is the Credential for github
點擊 ok 後,在點擊 「adding some credentials?」
進入頁面後,能夠選擇 Username with password 或者 SSH Username with private key, 根據你的狀況選擇,這裏咱們選擇 Username with private key:
Username: 隨便起一個名字,以便在建立 Job 的時候使用該 Credential
Private Key:能夠指定文件,也可使用默認的 ~/.ssh,固然也能夠直接將私鑰複製粘貼到此處。
Passphrase: 若是你在建立 ssh key 的時候輸入了 Passphrase 那就填寫相應的Passphrase,爲空就不填寫
ID: 空
Description: 空
點擊 ok 後 Credential 就建立好了。
若是你再新建 Job 就能夠看到咱們的 Credential 選項了:
——————————————————————————————————
而後保存,執行。
如今一套自動跟新系統完成了,若是是代碼上線,這個很合適。
若是是java上線的話,這個架構須要在優化一下,好比比對文件和重啓tomcat
關於Jenkins的自動打包(這個是自動化部署的前提)
當你創建好一個job後,會有一個工做空間,以下圖
這個pom.xml文件很重要,關係到maven是否打包成功,記得問開發要,理論上開發給你的是正確版的(他們本身打包測試過),裏面會有各類聚會和私服地址,還有模塊等內容
要告訴Jenkins把pom.xml放到這裏,不然會在job裏面提示找不到相關文件(這裏能夠自動放,也能夠手動放,看須要)
文件內容大體以下
在你的job裏面選擇以下
而後在命令欄中輸入你想要的操做
若是不想使用shell,也能夠用別的好比ant等
這裏我用的shell命令和腳原本完成包java包的備份和部署
完成後能夠執行job了
此版本是測試環境,還有須要完善的地方,等正式線上沒有問題後,會再次更新本文檔