jenkins+svn安裝

參考資料: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服務配置文件

1svnserve.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

 

 

2passwd 用戶名口令文件

[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

 

 

3authz 權限配置文件

[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

 

創建Jenkinssvn的帳號

帳戶:   svn

密碼:  qpmall2017

 

 

完成以上操做後,安裝web工具支持apachenginx均可以,爲了方便,咱們直接

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用戶都進不去(svnconf文件中的passwd記錄的用戶)

 

 

通過排查,發現是apache的自動模塊的用戶沒有加入到svnpasswd文件中

 

 

這個文件在svn服務建立的時候自帶的,因此咱們須要在這個文件中加入相關的用戶和密碼

因此咱們在svnconf目錄下

執行#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文件中的權限了,修改完成後以下:

 

 

完成後咱們從新啓動服務後,效果以下

 

 

此時說明咱們成功的創建了svnapache服務的聯繫

. 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 OverSVN 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 keykey文件(私鑰)的路徑

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是否打包成功,記得問開發要,理論上開發給你的是正確版的(他們本身打包測試過),裏面會有各類聚會和私服地址,還有模塊等內容

 

 

要告訴Jenkinspom.xml放到這裏,不然會在job裏面提示找不到相關文件(這裏能夠自動放,也能夠手動放,看須要)

文件內容大體以下

 

 

 

在你的job裏面選擇以下

 

 

而後在命令欄中輸入你想要的操做

 

 

若是不想使用shell,也能夠用別的好比ant

這裏我用的shell命令和腳原本完成包java包的備份和部署

 

 

完成後能夠執行job

 

 

此版本是測試環境,還有須要完善的地方,等正式線上沒有問題後,會再次更新本文檔

相關文章
相關標籤/搜索