jenkins+svn安裝


參考資料:

http://blog.csdn.net/wuxuehong0306/article/details/50016547

https://www.ibm.com/developerworks/cn/opensource/os-autotesting-jenkins-testing/

http://www.imooc.com/article/12626

http://aoyouzi.iteye.com/blog/2294990

https://jenkins.io/

資源包:鏈接:http://pan.baidu.com/s/1qYibCAS 密碼:u4m7

. 安裝環境

System: CentOS 6.8x64 (deploy.example.com)

Jenkins: Jenkins ver. 1.650

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

 

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM