android CI 持續(xù)集成 gerrit+gitee+jenkins


1、安裝系統(tǒng)、配置環(huán)境與工具

在centos官網(wǎng)下載centos7的鏡像文件,安裝系統(tǒng),這里可以根據(jù)公司或者個(gè)人的需求進(jìn)行安裝,安裝過程一路默認(rèn)就好,使用普通電腦搭建和公司服務(wù)器的虛擬機(jī)中搭建都是OK的。如果搭建成功后沒有網(wǎng)絡(luò),可以檢查虛擬機(jī)網(wǎng)卡的激活情況,需要配置虛擬機(jī)和主機(jī)在同一局域網(wǎng)中,記得把網(wǎng)絡(luò)配置設(shè)置為橋接模式。

服務(wù)器系統(tǒng):centos7.8

ssh工具:xshell

root賬號(hào): root? 密碼:root

系統(tǒng)用戶暫不創(chuàng)建

2、配置centos7固定ip,開啟ssh

系統(tǒng)安裝完成并啟動(dòng)后,先找到路徑/etc/sysconfig/network-scripts,其中的ifcfg-(網(wǎng)卡名稱)文件里存放的就是IP配置信息。而且是只可讀的,于是我們用終端來配置該IP信息。

su root

[root]#?vi? /etc/sysconfig/network-scripts/ifcfg-ens33(網(wǎng)卡名稱)

在centos7里默認(rèn)是不啟動(dòng)網(wǎng)卡的,需要修改下配置。

ONBOOT=yes

然后再加上以下幾個(gè)參數(shù)的設(shè)置 :

IPADDR=192.168.1.168(你想設(shè)置的IP地址)

NTSMASK=255.255.255.0GATEWAY=192.168.1.1(默認(rèn)網(wǎng)關(guān))

DNS1=8.8.8.8(首選DNS地址,可與默認(rèn)網(wǎng)關(guān)一樣)

:wq 保存退出

重新啟動(dòng)網(wǎng)絡(luò)服務(wù)

[root]#??service network restart

通過SSH工具連接虛擬機(jī)中的CentOS7

1、?首先,要確保CentOS7安裝了 ?openssh-server,在終端中輸入 ?yum list installed | grep openssh-server

此處顯示已經(jīng)安裝了openssh-server,如果又沒任何輸出顯示表示沒有安裝 ?openssh-server
通過輸入 ?yum install openssh-server來進(jìn)行安裝openssh-server

2、 ?找到了 ?/etc/ssh/ ?目錄下的sshd服務(wù)配置文件?sshd_config,用Vim編輯器打開將文件中,關(guān)于監(jiān)聽端口、監(jiān)聽地址前的#號(hào)去除

去掉Port前的#
開啟允許遠(yuǎn)程登錄
開啟使用用戶名密碼來作為連接驗(yàn)證

:wq 保存退出

[root]#?systemctl start sshd.service

3、在SSH工具(此處使用的XShell)中,新建連接,輸入 ?CentOS ? 的 ?IP ?地址、用戶名、密碼即可連接成功,為了免去每次開啟CentOS時(shí),都要手動(dòng)開啟 ?sshd 服務(wù),可以將 sshd 服務(wù)添加至自啟動(dòng)列表中,輸入

[root]#?systemctl enable sshd.service

可以通過輸入systemctl list-unit-files | grep sshd,查看是否開啟了sshd 服務(wù)自啟動(dòng)

3、配置JDK

[root]#?yum -y install vim 先安裝vim文本編輯工具,后面使用方便一些

1、查看系統(tǒng)自帶的OpenJDK版本信息,如果版本不符合需要移除的可以使用 rpm -qa | grep java移除

2、創(chuàng)建java目錄并安裝,jdk可根據(jù)自己的需要自行下載,通過xshell的-窗口-傳輸新建文件傳到指定目錄

[root]#?mkdir /usr/java/

[root]#?tar -zxvf jdk-8u212-linux-x64.tar.g

3、設(shè)置全局變量,打開文件???vim /etc/profile 在末尾添加

配置環(huán)境變量

保存并退出,使環(huán)境變量生效執(zhí)行 source /etc/profile

4、準(zhǔn)備所需軟件

1、安裝gitweb(Gitweb提供了git版本庫的圖形化web瀏覽功能)

[root]#?yum install gitweb

2、安裝git-review(通過git-review向gerrit提交review請(qǐng)求)

[root]#?yum install git-review? 我這里使用的默認(rèn)的centos源,找不到這安裝包,這里我們需要添加其他源來下載

首先進(jìn)入/etc/yum.repos.d/目錄下,新建一個(gè)default目錄,用于保存系統(tǒng)中原來的repo文件

[root]#?cd /etc/yum.repos.d/

[root]#?mkdir default

[root]#?mv *.repo default/

[root]#?yum -y install epel-release?

[root]#?yum clean all???? #清除系統(tǒng)所有的yum緩存

[root]#?yum make cache # 生成yum緩存

3、安裝git

使用git --version查看是否安裝過,如果版本過老(內(nèi)置一般是1.18.3版本)或者環(huán)境已經(jīng)用yum裝過git, gitweb,或 git-review,則不能用yum remove git來卸載git, 因?yàn)檫@樣會(huì)同時(shí)卸載依賴包gitweb, git-review,卸載老git而不卸載依賴包gitweb, git-review :

[root]#?rpm -e --nodeps git

[root]#?yum-y install wget 安裝wget下載工具

[root]#?mkdir /usr/git/ 創(chuàng)建一個(gè)git的安裝目錄,并進(jìn)入此目錄中cd mkdir /usr/git/?

[root]#?wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.26.2.tar.gz? 下載新版的git壓縮包

[root]#?tar -zxf git-2.26.2.tar.gz? 解壓縮后出現(xiàn)git-2.26.2文件夾

[root]#?cd?git-2.26.2? 進(jìn)入git-2.26.2文件夾

[root]#?./configure prefix=/usr/git/? ? 配置git的安裝路徑

[root]#?make&&makeinstall? 安裝完成后會(huì)在/usr/git下生成bin目錄

[root]#?vim /etc/profile? 為git配置環(huán)境變量

配置git環(huán)境變量

[root]#?source /etc/profile 生效后可通過git --version查看當(dāng)前安裝的版本是否配置成功

4、安裝數(shù)據(jù)庫mysql

由于CentOS 的yum源中沒有mysql,需要到mysql的官網(wǎng)下載yum repo配置文件。

[root]#?wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

[root]#?rpm -ivh mysql57-community-release-el7-9.noarch.rpm?進(jìn)行repo的安裝

[root]#?yum install mysql-server 安裝

[root]#?systemctl start mysqld??啟動(dòng)MySQL? 通過ps -e | grep mysqld 查看是否啟動(dòng)

[root]#?systemctl enable mysqld? 設(shè)置開機(jī)啟動(dòng)

[root]#?systemctl daemon-reload??設(shè)置開機(jī)啟動(dòng) 通過

mysql安裝完成之后,在/var/log/mysqld.log文件中給root生成了一個(gè)臨時(shí)的默認(rèn)密碼。

[root]#?vim? /var/log/mysqld.log

這里的密碼是e!e)>tmf.0Ml

[root]#?mysql -u root -p 使用root賬戶打開mysql,輸入上面查到的臨時(shí)密碼e!e)>tmf.0Ml就可以

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root123!'? ? 修改密碼為Root123! (密碼必須是大小寫字母? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?數(shù)字特殊字母的組合,至少8位)

[root]#?vim /etc/my.cnf? 配置默認(rèn)編碼為utf-8

在配置文件下增加這兩行

[root]#?systemctl restart mysqld? 重啟mysql

mysql> show variables like '%character%';? 再次登錄msql,查看當(dāng)前的編碼

創(chuàng)建gerrit數(shù)據(jù)庫

mysql>create database gerritdb CHARACTER SET utf8 COLLATE utf8_general_ci; 創(chuàng)建gerritdb?數(shù)據(jù)庫

mysql>grant all on gerritdb.* to 'gerrit'@'localhost' identified by 'gerritPwd123!';? 給用戶授權(quán)

mysql>flush privileges;? 命令生效

5、安裝Apache服務(wù)并啟動(dòng)

[root]# yum-y install httpd? ? 后面配置gerrit的時(shí)候需要使用htpasswd命令

5、安裝gerrit

在官方下載最新的Gerrit版本 (https://www.gerritcodereview.com/)

[root]#?useradd gerrit? ? ? 添加gerrit用戶

[root]#?passwd gerrit123? 設(shè)置gerrit用戶的密碼

創(chuàng)建用戶gerrit,密碼gerrit123

將下載好的文件 放到/home/gerrit目錄下

[gerrit]#?java -jar gerrit-3.0.3.war init -d review_site? 安裝選項(xiàng)如下

*** Gerrit Code Review 3.0.3

***

Create '/usr/gerrit/review_site' [Y/n]? y

*** Git Repositories

***

Location of Git repositories? [git]: /home/gerrit/git

*** Index

***

Type? ? ? ? ? ? ? ? ? ? ? ? ? [lucene/?]:

The index must be rebuilt before starting Gerrit:

? java -jar gerrit.war reindex -d site_path

*** User Authentication

***

Authentication method? ? ? ? ? [openid/?]: http

Get username from custom HTTP header [y/N]? n

SSO logout URL? ? ? ? ? ? ? ? :

Enable signed push support? ? [y/N]? y

*** Review Labels

***

Install Verified label? ? ? ? [y/N]? y

*** Email Delivery

***

SMTP server hostname? ? ? ? ? [localhost]: smtp.163.com

SMTP server port? ? ? ? ? ? ? [(default)]: 25

SMTP encryption? ? ? ? ? ? ? ? [none/?]:

SMTP username? ? ? ? ? ? ? ? ? [root]: gerritxr@163.com

gerritxr@163.com's password? ? :xr123456? ?!我們暫填郵箱密碼,這個(gè)密碼無效

? ? ? ? ? ? ? confirm password :xr123456? ?!需要配置smtp授權(quán)碼,后面修改

*** Container Process

***

Run as? ? ? ? ? ? ? ? ? ? ? ? [gerrit]:

Java runtime? ? ? ? ? ? ? ? ? [/usr/java/jdk1.8.0_212/jre]:

Copy gerrit-3.0.3.war to review_site/bin/gerrit.war [Y/n]? y

Copying gerrit-3.0.3.war to review_site/bin/gerrit.war

*** SSH Daemon

***

Listen on address? ? ? ? ? ? ? [*]:?

Listen on port? ? ? ? ? ? ? ? [29418]:

Generating SSH host key ... rsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done

*** HTTP Daemon

***

Behind reverse proxy? ? ? ? ? [y/N]? y

Proxy uses SSL (https://)? ? ? [y/N]? n

Subdirectory on proxy server? [/]:

Listen on address? ? ? ? ? ? ? [*]: 192.168.1.110

Listen on port? ? ? ? ? ? ? ? [8081]: 9015

Canonical URL? ? ? ? ? ? ? ? ? [http://192.168.1.110/]:http://192.168.1.110:9010/

*** Cache

***

*** Plugins

***

Installing plugins.

Install plugin codemirror-editor version v3.0.3 [y/N]? y

Installed codemirror-editor v3.0.3

Install plugin commit-message-length-validator version v3.0.3 [y/N]? y

Installed commit-message-length-validator v3.0.3

Install plugin delete-project version v3.0.3 [y/N]? y

Installed delete-project v3.0.3

Install plugin download-commands version v3.0.3 [y/N]? y

Installed download-commands v3.0.3

Install plugin gitiles version v3.0.3 [y/N]? y

Installed gitiles v3.0.3

Install plugin hooks version v3.0.3 [y/N]? y

Installed hooks v3.0.3

Install plugin plugin-manager version v3.0.3 [y/N]? y

Installed plugin-manager v3.0.3

Install plugin replication version v3.0.3 [y/N]? y

Installed replication v3.0.3

Install plugin reviewnotes version v3.0.3 [y/N]? y

Installed reviewnotes v3.0.3

Install plugin singleusergroup version v3.0.3 [y/N]? y

Installed singleusergroup v3.0.3

Install plugin webhooks version v3.0.3 [y/N]? y

Installed webhooks v3.0.3

Initializing plugins.

-----安裝完成

切換到root下再啟動(dòng),否則會(huì)報(bào)錯(cuò)

[root]#?/home/gerrit/review_site/bin/./gerrit.sh start

安裝完成后直接跳到 6、安裝及配置nginx,配置完成后再接著下面的步驟操作

創(chuàng)建gerrit用戶 "-c"參數(shù)為創(chuàng)建,僅限第一次添加用戶時(shí)使用,用戶名和密碼均為admin

[gerrit]#?htpasswd -cb ?/home/gerrit/review_site/etc/passwords admin admin

配置完成后訪問192.168.1.110:9010一直報(bào)500錯(cuò)誤,原因是gerrit用戶使用的是root創(chuàng)建,然而home/gerrit用戶只有700的權(quán)限,導(dǎo)致其他用戶無法訪問,所以chmod 755 /home/gerrit放開權(quán)限就可以了

admin郵箱配置,新建gerritxr@163.com的郵箱,并進(jìn)行設(shè)置

登錄163郵箱-設(shè)置smtp
開啟后,新增授權(quán)密碼:HNEKTKIRFUVSFZTM

[gerrit]#?vim /home/gerrit/review_site/etc/gerrit.config? ??配置gerrit郵箱服務(wù)

[gerrit]#?vim /home/gerrit/review_site/etc/secure.config? ? 配置secure.config,smtpPass為上面在163郵箱新增的授權(quán)密碼

smtpPass = HNEKTKIRFUVSFZTM

[root]#??/home/gerrit/review_site/bin/./gerrit.sh restart? ?重啟gerrit服務(wù)

gerrit啟動(dòng)失敗的問題可以到?/home/gerrit/review_site/logs/error_log文件中查看原因

打開gerrit地址192.168.1.110:9010,登錄admin賬號(hào)進(jìn)行郵箱驗(yàn)證,在驗(yàn)證通過后配置完畢。

郵箱驗(yàn)證

生成用戶公私鑰并進(jìn)行配置

1)切換到需要配置公私鑰的用戶,執(zhí)行生成公私鑰操作

[root]#?su ?gerrit

[gerrit]#?ssh-keygen -t rsa -C gerritxr@163.com ????????//產(chǎn)生公私鑰,公鑰存在/home/gerrit/.shh

生成公鑰和私鑰

[gerrit]#?cat /home/gerrit/.ssh/id_rsa.pub? ? 查看生成的公鑰

獲取用戶公鑰

使用admin賬號(hào)登錄gerrit系統(tǒng),將生成的公鑰添加到用戶的SSH Public keys

Gerrit添加用戶SSH Public keys

這里插一句,由于我們需要使用gerrit同步gitee上的代碼,所以在gitee倉庫中需要添加一個(gè)gerrit賬戶并配置成管理員(gitee賬號(hào)自行注冊(cè)),并且將本地gerrit用戶的id_rsa.pub 配置到倉庫的公鑰管理中去。

Replication 配置??replication,是 Gerrit 的一個(gè)插件,在安裝 Gerrit 時(shí)候默認(rèn)安裝了這個(gè) Plugin,它可以自動(dòng)地將 Gerrit Code Review 對(duì)它所管理的 Git 倉庫創(chuàng)建的任何 changes push 到另外一個(gè)系統(tǒng)里。Gerrit 本身提供了兩大功能:一是 Code Review;二是 Git 倉庫。Replication 插件通常用于提供 changes 的鏡像,或熱備份。

[root]#?vim /home/gerrit/review_site/etc/replication.config

[gerrit]#vim /home/gerrit/.ssh/config? ??

設(shè)置的~/.ssh/config文件的權(quán)限已定要設(shè)置成600,不然會(huì)報(bào)錯(cuò):“Bad owner or permissions on .ssh/config“

設(shè)置gerrit用戶的 ~/.ssh/config

[root]#?/home/gerrit/review_site/bin/./gerrit.sh restart? 重啟gerrit

創(chuàng)建項(xiàng)目,保證項(xiàng)目名稱和遠(yuǎn)程的項(xiàng)目名稱一致。

[root]#??htpasswd -b /home/gerrit/review_site/etc/passwords zhoufu zhoufu? ?在gerrit中創(chuàng)建zhoufu用戶,將創(chuàng)建的項(xiàng)目歸屬到這個(gè)用戶

登錄并配置zhoufu用戶的郵箱及shh公鑰到gerrit上

創(chuàng)建項(xiàng)目xrzs_app,(不要填寫圖上的owner,后面刪除的時(shí)候會(huì)報(bào)錯(cuò))

[root]#?ls /usr/gerrit/git

查看到新建的xrzs_app

現(xiàn)在我們就需要偷梁換柱,刪除掉創(chuàng)建的xrzs_app.git,然后從遠(yuǎn)程倉庫拷貝碼云對(duì)應(yīng)項(xiàng)目的純倉庫下來

[root@localhost git]# rm -rf xrzs_app.git/

[root]#?cd /usr/gerrit

[root@localhost git]# su gerrit

[gerrit]#?git clone --bare git@gitee.com:zhou_fu/xrzs_app.git? ? ?拷貝碼云上的git到gerrit中

上面的xrzs_app是我們創(chuàng)建的,下面的是我們從遠(yuǎn)程倉庫拷貝下來的

接下來就嘗試去下載,因?yàn)橹芭渲脄houfu用戶的ssh公鑰到gerrit,所以我們采用ssh的下載方式。

在gerrit中查看

OK,可以看到我們下載成功

git clone成功

接著就是測(cè)試下提交代碼,commit后執(zhí)行push發(fā)現(xiàn)權(quán)限不夠,gerrit默認(rèn)關(guān)閉普通用戶直接push master的權(quán)限

這是通過git命令

添加gerrit成員的group:android_dev(開發(fā)組)。這里的工作組是為后面給項(xiàng)目配置各種操作權(quán)限進(jìn)行分類

新建android_dev分組
添加成員zhoufu

接下來配置xrzs_app項(xiàng)目的權(quán)限,常見的權(quán)限設(shè)置可參考http://www.itdecent.cn/p/d95faa9f8b05,詳細(xì)的權(quán)限介紹可以在Gerrit鏈接中,找到頂部DOCUMENTATION-ACCESS一欄中查看

編輯權(quán)限的步驟

最終的權(quán)限設(shè)置如圖,gerrit默認(rèn)是沒有權(quán)限push的

這里需要注意refs/for/*中需要配置push權(quán)限

下面這部分權(quán)限是配置codeView,Verfied,Submit權(quán)限,分別是打分,核實(shí),提交。

打分只有+2后才可以提交,如果配置了jenkins,則還需要通過jenkins編譯通過后給Verfied+1分才能提交

這里解釋下為什么設(shè)置refs/for/*的原因,push命令的格式為:$ git push <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名>,我這里是本地提交時(shí)的用法,git push??origin dev_1.5.0:refs/for/dev_1.5.0 ,?refs/for 的意義在于我們提交代碼到服務(wù)器之后是需要經(jīng)過code review 之后才能進(jìn)行merge的,而refs/heads 不需要

提交時(shí)遇到的問題,沒有change_id是無法push的,報(bào)錯(cuò)如下

,我們根據(jù)提示在項(xiàng)目的根目錄執(zhí)行,提示命令,意思就是幫我們?cè)谔峤粫r(shí)默認(rèn)帶上change_id

默認(rèn)添加change id
把修改追加到上次的提交中

按照修改后再次push,OK成功了。這時(shí)候可以送審給有權(quán)限打分的人,打分合入。

這是打分合入后的樣子,由于配置了replication_config,我們?cè)趫?zhí)行了submit后,gerrit就會(huì)幫我們合入到遠(yuǎn)程分支上,這樣就可以在碼云上看到我們合入的代碼了

打分合入完成
這是碼云上同步的代碼

接下來是配置多個(gè)項(xiàng)目,修改replication.config文件

[root@localhost git]# vim?/home/gerrit/review_site/etc/replication.config? ? ? ? ?添加新增項(xiàng)目的[remote ...]

[remote "android_xr_app"]

projects = android_xr_app

url = git@gitee.com:xuan_rui/android_xr_app.git

push = +refs/heads/*:refs/heads/*

push = +refs/tags/*:refs/tags/*

push = +refs/changes/*:refs/changes/*

threads = 3

配置完成后,重啟下gerrit

[root]#?/home/gerrit/review_site/bin/./gerrit.sh restart? 重啟gerrit

然后重復(fù)第一次的創(chuàng)建項(xiàng)目的操作就行

1、在gerrit服務(wù)器上創(chuàng)建項(xiàng)目android_xr_app

2、在碼云上創(chuàng)建android_xr_app的項(xiàng)目

3、刪除gerrit的android_xr_app.git??

??[root]#?rm -rf /home/gerrit/git/android_xr_app.git

4、在?/home/gerrit/git下下載碼云上的git

[root]#??git clone --bare git@gitee.com:zhou_fu/xrzs_app.git

5、配置權(quán)限,保持和第一個(gè)項(xiàng)目一樣就行

6、在本地下載gerrit的git地址 git clone "ssh://zhoufu@192.168.1.110:29418/android_xr_app"

7、修改并提交,第二個(gè)項(xiàng)目還是會(huì)出現(xiàn)沒有change-id的提示, 我們還是按照提示在本地項(xiàng)目的目錄中輸入提示的命令即可

8、成功push后,打開gerrit的鏈接,打分合入

9、登錄碼云查看是否同步提交,確認(rèn)沒有問題

新建分支同步到gerrit和遠(yuǎn)程倉庫

1:需要切換到被拉取的分支,并且拉取項(xiàng)目,命令如下:

$git checkout master?

$git pull

2:接著創(chuàng)建一個(gè)新分支,并且切換到新的分支:

$git branch newbranch

$git checkout newbranch

3:把本地分支push到遠(yuǎn)端:

1$git push origin newbranch

4:拉取遠(yuǎn)端分支

$git pull? ?

5:如果報(bào)錯(cuò)這說明,當(dāng)前分支還沒有和本地分支進(jìn)行關(guān)聯(lián),下面進(jìn)行關(guān)聯(lián)

git branch?--set-upstream-to=origin/newbranch

6:再次拉取,完成任務(wù)。

$git pull

合并分支gerrit和遠(yuǎn)程倉庫,合并的三種方式cherry pick , merge , rebase

如果newbranch上有我們新開發(fā)的需求,開發(fā)上線后要將newbranch的修改全部合入到master中

1、切換到領(lǐng)先提交的分支

$git checkout newbranch? ? ??

$git pull

2、切換到master

$git checkout master? ? ??

$git pull

3、合并分支

$git git?merge?newbranch? ? ??

6、安裝及配置nginx

[root]#?yum -y install nginx? ?安裝nginx

[root]#?cd /etc/nginx/conf.d? ? ?配置nginx反向代理

[root]#?vim gerrit.conf? 在conf.d中創(chuàng)建并編輯gerrit.conf

添加內(nèi)容:

server {

?????listen 9010;

?????server_name localhost;

?????auth_basic "Welcomme to Gerrit Code Review Site!";

?????auth_basic_user_file /home/gerrit/review_site/etc/passwords;

?????location / {

?????????proxy_pass ?http://192.168.1.110:9015;

?????????proxy_set_header X-Forwarded-For $remote_addr;

?????????proxy_set_header Host $host;

?????}

}

[root]#?systemctl start nginx??啟動(dòng)nginx服務(wù)

經(jīng)檢查發(fā)現(xiàn)是selinux導(dǎo)致報(bào)錯(cuò)??

[root]#?getenforce   #查詢selinux狀態(tài):Enforcing

[root]#?setenforce 0? ? ? ? #臨時(shí)將selinux關(guān)閉,重啟nginx服務(wù),發(fā)現(xiàn)報(bào)錯(cuò)已經(jīng)解除,如果需要永久關(guān)閉selinux,請(qǐng)編輯/etc/selinux/config文件,將SELINUX=disabled。之后將系統(tǒng)重啟一下即可。

[root]#?systemctl enable nginx??加入開機(jī)啟動(dòng)項(xiàng),完成配置

可在其他機(jī)器上輸入192.168.1.110:9010測(cè)試nginx是否可用

如果無法訪問的話,請(qǐng)先關(guān)閉防火墻

[root]#?firewall-cmd --state? ? ? ? ? ? ? ? ? ? ? ? ? ##查看防火墻狀態(tài),是否是running

[root]#?systemctl stop firewalld.service? ? ? ? ? ? #停止firewall

[root]#?systemctl disable firewalld.service? ? ? ? #禁止firewall開機(jī)啟動(dòng)

注意:配置完成后訪問192.168.1.110:9010一直報(bào)500錯(cuò)誤,原因是gerrit用戶使用的是root創(chuàng)建,然而home/gerrit用戶只有700的權(quán)限,導(dǎo)致其他用戶無法訪問,所以chmod 755 /home/gerrit放開權(quán)限就可以了

Nginx服務(wù)的啟動(dòng)/停止/刷新配置文件/查看狀態(tài)的命令

systemctl start nginx.service?啟動(dòng)nginx服務(wù)?

systemctl stop nginx.service?停止服務(wù)

systemctl restart nginx.service?重新啟動(dòng)服務(wù)

systemctl list-units --type=service?查看所有已啟動(dòng)的服務(wù)

systemctl status nginx.service??查看服務(wù)當(dāng)前狀態(tài)

systemctl enable nginx.service?設(shè)置開機(jī)自啟動(dòng)

systemctl disable nginx.service?停止開機(jī)自啟動(dòng)

查看本地端口命令

ss -ntl

7、Jenkins部署配置

[root]#?useradd jenkins?添加jenkins用戶

[root]#?passwd jenkins123設(shè)置jenkins用戶的密碼

創(chuàng)建用戶jenkins?,密碼jenkins123

fffe3609bc0d4371952f7f266d8ed3cf

This may also be found at: /home/jenkins/.jenkins/secrets/initialAdminPassword

下載安裝方式1:

[root]# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.repo

[root]#?rpm --import http://pkg.jenkins.io/redhat-stable/jenkins.io.key

[root]#?yum install -y jenkins

下載安裝方式2:

如果下載很慢并且經(jīng)常失敗,則通過其他工具到http://pkg.jenkins.io/redhat-stable下選擇最新的版本下載,

或者國內(nèi)清華的鏡像https://mirrors.tuna.tsinghua.edu.cn/jenkins/將下載好的文件 放到/usr/jenkins目錄下,

我下載的是jenkins-2.235.1-1.1.noarch.rpm?

[root]#?rpm -ivh jenkins-2.235.1-1.1.noarch.rpm? ? 執(zhí)行安裝命令

安裝完成jenkins后默認(rèn)端口是8080

[root]#?vim /etc/sysconfig/jenkins? ?可以通過修改JENKINS_PORT修改端口號(hào)

修改默認(rèn)端口

[root]#?systemctl enable jenkins? ? ? 開機(jī)啟動(dòng)

[root]#?systemctl start jenkins? ? ? ? ?啟動(dòng)jenkins

啟動(dòng)失敗

從?/usr/bin/java: No such file or directory?可以看出 java 路徑不對(duì)

[root]#?vim /etc/init.d/jenkins? ? 修改jenkins配置中的java路徑,java安裝路徑可以通過java -version查看

配置java的安裝路徑

[root]#?service jenkins start? ? 再次啟動(dòng),成功

打開jenkins首頁看到提示輸入密碼

[root]#? cat /var/lib/jenkins/secrets/initialAdminPassword? ?查看jenkins初始密碼,復(fù)制出來后填入就行

安裝默認(rèn)的插件

自動(dòng)安裝推薦的插件

根據(jù)頁面提示創(chuàng)建管理員賬號(hào)jenkins,創(chuàng)建完成后進(jìn)入jenkins的配置界面

管理員賬號(hào):admin密碼:admin

配置郵件功能 Manage Jenkins - Manage Plugins

安裝郵件功能插件
推薦安裝插件的時(shí)候已經(jīng)默認(rèn)安裝了

配置郵箱服務(wù)器進(jìn)入?Manage Jenkins 找到 jenkins location

郵箱創(chuàng)建及配置參考gerrit的郵箱配置,下面簡(jiǎn)單介紹

配置管理員郵件地址

設(shè)置發(fā)件人等信息,這里的發(fā)件人郵箱地址切記要和系統(tǒng)管理員郵件地址保持一致(當(dāng)然,也可以設(shè)置專門的發(fā)件人郵箱,不過不影響使用,根據(jù)具體情況設(shè)置即可)

郵箱配置

配置郵件內(nèi)容模版

郵箱內(nèi)容模版(Default Content):自行網(wǎng)絡(luò)搜索

設(shè)置郵件觸發(fā)機(jī)制

勾選允許發(fā)送給未注冊(cè)用戶

配置郵件通知的參數(shù)并測(cè)試,參照gerrit郵箱的配置就行

smtp認(rèn)證的賬號(hào):jenkinsxr@163.com? ? 密碼:LPFYFZQSNMXRKEXB

測(cè)試發(fā)送成功

如果測(cè)試發(fā)送郵件的時(shí)候發(fā)生403錯(cuò)誤,可以修改下安全配置,或者使用無痕模式進(jìn)行測(cè)試

上面的幾步完成后,點(diǎn)擊應(yīng)用,保存即可。

相關(guān)插件安裝Gerrit事件觸發(fā)器Gerrit Trigger

Gerrit Trigger插件

碼云Gitee這個(gè)插件通過偽造Gitee CI服務(wù)器將Gitee集成到Jenkins中。這個(gè)插件允許Gitee在提交代碼或打開/更新pull請(qǐng)求時(shí)觸發(fā)Jenkins中的構(gòu)建。它還可以將構(gòu)建狀態(tài)發(fā)送回Gitee。

Gitee插件

插件安裝完成后暫不配置,接下來先完成android環(huán)境的配置,其實(shí)就是android_sdk和gradle環(huán)境的配置

[root]# mkdir?/usr/android/android_sdk? ? ? 創(chuàng)建sdk 的下載目錄,之前下載的java和git也在usr目錄下

[root]# cd /usr/android/android_sdk? ??

[root]#?wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip? ? //下載android sdk

[root]#?unzip sdk-tools-linux-4333796.zip? ?//解壓,沒有unzip命令的安裝一個(gè)就好了yum install -y unzip zip

解壓后會(huì)出現(xiàn)一個(gè)tools的文件夾

[root]#?vim /etc/profile? ? ? 配置環(huán)境變量

export ANDROID_HOME=/usr/android/android_sdk

export PATH=$PATH:${ANDROID_HOME}/tools/bin

[root]#?source /etc/profile? ?使配置生效

[root]#?sdkmanager --list?查看已安裝信息

[root]#?sdkmanager "build-tools;29.0.3"

安裝build-tools29.0.3

[root]#?sdkmanager "platform-tools"

出現(xiàn)了一個(gè)警告:Warning: File /root/.android/repositories.cfg could not be loaded.?

說是是在目錄 /root/.android/ 下沒有找到文件repositories.cfg

解決辦法:

使用touch命令在根目錄下新建1一個(gè)repositories.cfg文件就可以了

[root]#?touch ~/.android/repositories.cfg

然后執(zhí)行sdkmanager xxxx就沒問題了。

需要安裝的東西比較多,下面給出清單(這里可以根據(jù)自己的項(xiàng)目需要自行安裝,也可以根據(jù)編譯過程中的報(bào)錯(cuò)再針對(duì)性的安裝):

[root]#?sdkmanager "platform-tools"? ?sdk里面的工具

[root]#?sdkmanager "build-tools;29.0.3" 這個(gè)上面已經(jīng)安裝了,編譯工具

[root]#sdkmanager "platforms;android-28"? ? android版本對(duì)應(yīng)的sdk版本

[root]#sdkmanager "platforms;android-29"? ??android版本對(duì)應(yīng)的sdk版本

查看下安裝后的目錄

是不是很熟悉,和本地的sdk一樣

接下來把a(bǔ)ndroid 的sdk的環(huán)境變量去完善

[root]#?vim /etc/profile? ? ? 配置環(huán)境變量,在前面android配置的基礎(chǔ)上修改,結(jié)果如下

export ANDROID_HOME=/usr/android/android_sdk

export PATH=$PATH:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools

[root]#source /etc/profile? ? 環(huán)境變量生效

最后驗(yàn)證下adb version

大功告成

接著配置gradle

[root]# mkdir /usr/gradle? ? ? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建gradle下載的目錄

[root]# cd /usr/gradle? ? ? ? ? ? ??

下載gradle,這里要注意下載與你項(xiàng)目編譯使用的gradle版本保持一致,否則不能正常編譯

[root]#?wget https://services.gradle.org/distributions/gradle-5.4.1-all.zip

解壓到當(dāng)前目錄

[root]#?unzip gradle-5.4.1-all.zip

配置環(huán)境變量

[root]#?vim /etc/profile

編輯文件最后添加

export GRADLE_HOME=/usr/gradle/gradle-5.4.1

export PATH=$PATH:${GRADLE_HOME}/bin

使配置生效

[root]#?source /etc/profile

[root]#?gradle -version命令查看gradle版本?驗(yàn)證gradle安裝成功

gradle配置成功

在jenkins/configure system中配置android全局環(huán)境變量

配置全局工具配置項(xiàng)git,jdk,gradle工具的路徑

不知道git的路徑可以通過命令查找

[root]# whereis git

配置完成如下圖

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容