android CI 持续集成 gerrit+gitee+jenkins


1、安装系统、配置环境与工具

在centos官网下载centos7的镜像文件,安装系统,这里可以根据公司或者个人的需求进行安装,安装过程一路默认就好,使用普通电脑搭建和公司服务器的虚拟机中搭建都是OK的。如果搭建成功后没有网络,可以检查虚拟机网卡的激活情况,需要配置虚拟机和主机在同一局域网中,记得把网络配置设置为桥接模式。

服务器系统:centos7.8

ssh工具:xshell

root账号: root  密码:root

系统用户暂不创建

2、配置centos7固定ip,开启ssh

系统安装完成并启动后,先找到路径/etc/sysconfig/network-scripts,其中的ifcfg-(网卡名称)文件里存放的就是IP配置信息。而且是只可读的,于是我们用终端来配置该IP信息。

su root

[root]# vi  /etc/sysconfig/network-scripts/ifcfg-ens33(网卡名称)

在centos7里默认是不启动网卡的,需要修改下配置。

ONBOOT=yes

然后再加上以下几个参数的设置 :

IPADDR=192.168.1.168(你想设置的IP地址)

NTSMASK=255.255.255.0GATEWAY=192.168.1.1(默认网关)

DNS1=8.8.8.8(首选DNS地址,可与默认网关一样)

:wq 保存退出

重新启动网络服务

[root]#  service network restart

通过SSH工具连接虚拟机中的CentOS7

1、 首先,要确保CentOS7安装了  openssh-server,在终端中输入  yum list installed | grep openssh-server

此处显示已经安装了openssh-server,如果又没任何输出显示表示没有安装  openssh-server
通过输入  yum install openssh-server来进行安装openssh-server

2、  找到了  /etc/ssh/  目录下的sshd服务配置文件 sshd_config,用Vim编辑器打开将文件中,关于监听端口、监听地址前的#号去除

去掉Port前的#
开启允许远程登录
开启使用用户名密码来作为连接验证

:wq 保存退出

[root]# systemctl start sshd.service

3、在SSH工具(此处使用的XShell)中,新建连接,输入  CentOS   的  IP  地址、用户名、密码即可连接成功,为了免去每次开启CentOS时,都要手动开启  sshd 服务,可以将 sshd 服务添加至自启动列表中,输入

[root]# systemctl enable sshd.service

可以通过输入systemctl list-unit-files | grep sshd,查看是否开启了sshd 服务自启动

3、配置JDK

[root]# yum -y install vim 先安装vim文本编辑工具,后面使用方便一些

1、查看系统自带的OpenJDK版本信息,如果版本不符合需要移除的可以使用 rpm -qa | grep java移除

2、创建java目录并安装,jdk可根据自己的需要自行下载,通过xshell的-窗口-传输新建文件传到指定目录

[root]# mkdir /usr/java/

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

3、设置全局变量,打开文件   vim /etc/profile 在末尾添加

配置环境变量

保存并退出,使环境变量生效执行 source /etc/profile

4、准备所需软件

1、安装gitweb(Gitweb提供了git版本库的图形化web浏览功能)

[root]# yum install gitweb

2、安装git-review(通过git-review向gerrit提交review请求)

[root]# yum install git-review  我这里使用的默认的centos源,找不到这安装包,这里我们需要添加其他源来下载

首先进入/etc/yum.repos.d/目录下,新建一个default目录,用于保存系统中原来的repo文件

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

[root]# mkdir default

[root]# mv *.repo default/

[root]# yum -y install epel-release 

[root]# yum clean all     #清除系统所有的yum缓存

[root]# yum make cache # 生成yum缓存

3、安装git

使用git --version查看是否安装过,如果版本过老(内置一般是1.18.3版本)或者环境已经用yum装过git, gitweb,或 git-review,则不能用yum remove git来卸载git, 因为这样会同时卸载依赖包gitweb, git-review,卸载老git而不卸载依赖包gitweb, git-review :

[root]# rpm -e --nodeps git

[root]# yum-y install wget 安装wget下载工具

[root]# mkdir /usr/git/ 创建一个git的安装目录,并进入此目录中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  解压缩后出现git-2.26.2文件夹

[root]# cd git-2.26.2  进入git-2.26.2文件夹

[root]# ./configure prefix=/usr/git/    配置git的安装路径

[root]# make&&makeinstall  安装完成后会在/usr/git下生成bin目录

[root]# vim /etc/profile  为git配置环境变量

配置git环境变量

[root]# source /etc/profile 生效后可通过git --version查看当前安装的版本是否配置成功

4、安装数据库mysql

由于CentOS 的yum源中没有mysql,需要到mysql的官网下载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 进行repo的安装

[root]# yum install mysql-server 安装

[root]# systemctl start mysqld  启动MySQL  通过ps -e | grep mysqld 查看是否启动

[root]# systemctl enable mysqld  设置开机启动

[root]# systemctl daemon-reload  设置开机启动 通过

mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个临时的默认密码。

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

这里的密码是e!e)>tmf.0Ml

[root]# mysql -u root -p 使用root账户打开mysql,输入上面查到的临时密码e!e)>tmf.0Ml就可以

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root123!'    修改密码为Root123! (密码必须是大小写字母                                                                                                     数字特殊字母的组合,至少8位)

[root]# vim /etc/my.cnf  配置默认编码为utf-8

在配置文件下增加这两行

[root]# systemctl restart mysqld  重启mysql

mysql> show variables like '%character%';  再次登录msql,查看当前的编码

创建gerrit数据库

mysql>create database gerritdb CHARACTER SET utf8 COLLATE utf8_general_ci; 创建gerritdb 数据库

mysql>grant all on gerritdb.* to 'gerrit'@'localhost' identified by 'gerritPwd123!';  给用户授权

mysql>flush privileges;  命令生效

5、安装Apache服务并启动

[root]# yum-y install httpd    后面配置gerrit的时候需要使用htpasswd命令

5、安装gerrit

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

[root]# useradd gerrit      添加gerrit用户

[root]# passwd gerrit123  设置gerrit用户的密码

创建用户gerrit,密码gerrit123

将下载好的文件 放到/home/gerrit目录下

[gerrit]# java -jar gerrit-3.0.3.war init -d review_site  安装选项如下

*** 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   !我们暂填邮箱密码,这个密码无效

              confirm password :xr123456   !需要配置smtp授权码,后面修改

*** 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下再启动,否则会报错

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

安装完成后直接跳到 6、安装及配置nginx,配置完成后再接着下面的步骤操作

创建gerrit用户 "-c"参数为创建,仅限第一次添加用户时使用,用户名和密码均为admin

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

配置完成后访问192.168.1.110:9010一直报500错误,原因是gerrit用户使用的是root创建,然而home/gerrit用户只有700的权限,导致其他用户无法访问,所以chmod 755 /home/gerrit放开权限就可以了

admin邮箱配置,新建gerritxr@163.com的邮箱,并进行设置

登录163邮箱-设置smtp
开启后,新增授权密码:HNEKTKIRFUVSFZTM

[gerrit]# vim /home/gerrit/review_site/etc/gerrit.config    配置gerrit邮箱服务

[gerrit]# vim /home/gerrit/review_site/etc/secure.config    配置secure.config,smtpPass为上面在163邮箱新增的授权密码

smtpPass = HNEKTKIRFUVSFZTM

[root]#  /home/gerrit/review_site/bin/./gerrit.sh restart   重启gerrit服务

gerrit启动失败的问题可以到 /home/gerrit/review_site/logs/error_log文件中查看原因

打开gerrit地址192.168.1.110:9010,登录admin账号进行邮箱验证,在验证通过后配置完毕。

邮箱验证

生成用户公私钥并进行配置

1)切换到需要配置公私钥的用户,执行生成公私钥操作

[root]# su  gerrit

[gerrit]# ssh-keygen -t rsa -C gerritxr@163.com         //产生公私钥,公钥存在/home/gerrit/.shh

生成公钥和私钥

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

获取用户公钥

使用admin账号登录gerrit系统,将生成的公钥添加到用户的SSH Public keys

Gerrit添加用户SSH Public keys

这里插一句,由于我们需要使用gerrit同步gitee上的代码,所以在gitee仓库中需要添加一个gerrit账户并配置成管理员(gitee账号自行注册),并且将本地gerrit用户的id_rsa.pub 配置到仓库的公钥管理中去。

Replication 配置  replication,是 Gerrit 的一个插件,在安装 Gerrit 时候默认安装了这个 Plugin,它可以自动地将 Gerrit Code Review 对它所管理的 Git 仓库创建的任何 changes push 到另外一个系统里。Gerrit 本身提供了两大功能:一是 Code Review;二是 Git 仓库。Replication 插件通常用于提供 changes 的镜像,或热备份。

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

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

设置的~/.ssh/config文件的权限已定要设置成600,不然会报错:“Bad owner or permissions on .ssh/config“

设置gerrit用户的 ~/.ssh/config

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

创建项目,保证项目名称和远程的项目名称一致。

[root]#  htpasswd -b /home/gerrit/review_site/etc/passwords zhoufu zhoufu   在gerrit中创建zhoufu用户,将创建的项目归属到这个用户

登录并配置zhoufu用户的邮箱及shh公钥到gerrit上

创建项目xrzs_app,(不要填写图上的owner,后面删除的时候会报错)

[root]# ls /usr/gerrit/git

查看到新建的xrzs_app

现在我们就需要偷梁换柱,删除掉创建的xrzs_app.git,然后从远程仓库拷贝码云对应项目的纯仓库下来

[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是我们创建的,下面的是我们从远程仓库拷贝下来的

接下来就尝试去下载,因为之前配置zhoufu用户的ssh公钥到gerrit,所以我们采用ssh的下载方式。

在gerrit中查看

OK,可以看到我们下载成功

git clone成功

接着就是测试下提交代码,commit后执行push发现权限不够,gerrit默认关闭普通用户直接push master的权限

这是通过git命令

添加gerrit成员的group:android_dev(开发组)。这里的工作组是为后面给项目配置各种操作权限进行分类

新建android_dev分组
添加成员zhoufu

接下来配置xrzs_app项目的权限,常见的权限设置可参考https://www.jianshu.com/p/d95faa9f8b05,详细的权限介绍可以在Gerrit链接中,找到顶部DOCUMENTATION-ACCESS一栏中查看

编辑权限的步骤

最终的权限设置如图,gerrit默认是没有权限push的

这里需要注意refs/for/*中需要配置push权限

下面这部分权限是配置codeView,Verfied,Submit权限,分别是打分,核实,提交。

打分只有+2后才可以提交,如果配置了jenkins,则还需要通过jenkins编译通过后给Verfied+1分才能提交

这里解释下为什么设置refs/for/*的原因,push命令的格式为:$ git push <远程主机名> <本地分支名>:<远程分支名>,我这里是本地提交时的用法,git push  origin dev_1.5.0:refs/for/dev_1.5.0 , refs/for 的意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的,而refs/heads 不需要

提交时遇到的问题,没有change_id是无法push的,报错如下

,我们根据提示在项目的根目录执行,提示命令,意思就是帮我们在提交时默认带上change_id

默认添加change id
把修改追加到上次的提交中

按照修改后再次push,OK成功了。这时候可以送审给有权限打分的人,打分合入。

这是打分合入后的样子,由于配置了replication_config,我们在执行了submit后,gerrit就会帮我们合入到远程分支上,这样就可以在码云上看到我们合入的代码了

打分合入完成
这是码云上同步的代码

接下来是配置多个项目,修改replication.config文件

[root@localhost git]# vim /home/gerrit/review_site/etc/replication.config         添加新增项目的[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

然后重复第一次的创建项目的操作就行

1、在gerrit服务器上创建项目android_xr_app

2、在码云上创建android_xr_app的项目

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、配置权限,保持和第一个项目一样就行

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

7、修改并提交,第二个项目还是会出现没有change-id的提示, 我们还是按照提示在本地项目的目录中输入提示的命令即可

8、成功push后,打开gerrit的链接,打分合入

9、登录码云查看是否同步提交,确认没有问题

新建分支同步到gerrit和远程仓库

1:需要切换到被拉取的分支,并且拉取项目,命令如下:

$git checkout master 

$git pull

2:接着创建一个新分支,并且切换到新的分支:

$git branch newbranch

$git checkout newbranch

3:把本地分支push到远端:

1$git push origin newbranch

4:拉取远端分支

$git pull   

5:如果报错这说明,当前分支还没有和本地分支进行关联,下面进行关联

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

6:再次拉取,完成任务。

$git pull

合并分支gerrit和远程仓库,合并的三种方式cherry pick , merge , rebase

如果newbranch上有我们新开发的需求,开发上线后要将newbranch的修改全部合入到master中

1、切换到领先提交的分支

$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中创建并编辑gerrit.conf

添加内容:

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  启动nginx服务

经检查发现是selinux导致报错  

[root]# getenforce   #查询selinux状态:Enforcing

[root]# setenforce 0        #临时将selinux关闭,重启nginx服务,发现报错已经解除,如果需要永久关闭selinux,请编辑/etc/selinux/config文件,将SELINUX=disabled。之后将系统重启一下即可。

[root]# systemctl enable nginx  加入开机启动项,完成配置

可在其他机器上输入192.168.1.110:9010测试nginx是否可用

如果无法访问的话,请先关闭防火墙

[root]# firewall-cmd --state                          ##查看防火墙状态,是否是running

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

[root]# systemctl disable firewalld.service        #禁止firewall开机启动

注意:配置完成后访问192.168.1.110:9010一直报500错误,原因是gerrit用户使用的是root创建,然而home/gerrit用户只有700的权限,导致其他用户无法访问,所以chmod 755 /home/gerrit放开权限就可以了

Nginx服务的启动/停止/刷新配置文件/查看状态的命令

systemctl start nginx.service 启动nginx服务 

systemctl stop nginx.service 停止服务

systemctl restart nginx.service 重新启动服务

systemctl list-units --type=service 查看所有已启动的服务

systemctl status nginx.service  查看服务当前状态

systemctl enable nginx.service 设置开机自启动

systemctl disable nginx.service 停止开机自启动

查看本地端口命令

ss -ntl

7、Jenkins部署配置

[root]# useradd jenkins 添加jenkins用户

[root]# passwd jenkins123设置jenkins用户的密码

创建用户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:

如果下载很慢并且经常失败,则通过其他工具到http://pkg.jenkins.io/redhat-stable下选择最新的版本下载,

或者国内清华的镜像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    执行安装命令

安装完成jenkins后默认端口是8080

[root]# vim /etc/sysconfig/jenkins   可以通过修改JENKINS_PORT修改端口号

修改默认端口

[root]# systemctl enable jenkins      开机启动

[root]# systemctl start jenkins         启动jenkins

启动失败

从 /usr/bin/java: No such file or directory 可以看出 java 路径不对

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

配置java的安装路径

[root]# service jenkins start    再次启动,成功

打开jenkins首页看到提示输入密码

[root]#  cat /var/lib/jenkins/secrets/initialAdminPassword   查看jenkins初始密码,复制出来后填入就行

安装默认的插件

自动安装推荐的插件

根据页面提示创建管理员账号jenkins,创建完成后进入jenkins的配置界面

管理员账号:admin密码:admin

配置邮件功能 Manage Jenkins - Manage Plugins

安装邮件功能插件
推荐安装插件的时候已经默认安装了

配置邮箱服务器进入 Manage Jenkins 找到 jenkins location

邮箱创建及配置参考gerrit的邮箱配置,下面简单介绍

配置管理员邮件地址

设置发件人等信息,这里的发件人邮箱地址切记要和系统管理员邮件地址保持一致(当然,也可以设置专门的发件人邮箱,不过不影响使用,根据具体情况设置即可)

邮箱配置

配置邮件内容模版

邮箱内容模版(Default Content):自行网络搜索

设置邮件触发机制

勾选允许发送给未注册用户

配置邮件通知的参数并测试,参照gerrit邮箱的配置就行

smtp认证的账号:jenkinsxr@163.com    密码:LPFYFZQSNMXRKEXB

测试发送成功

如果测试发送邮件的时候发生403错误,可以修改下安全配置,或者使用无痕模式进行测试

上面的几步完成后,点击应用,保存即可。

相关插件安装Gerrit事件触发器Gerrit Trigger

Gerrit Trigger插件

码云Gitee这个插件通过伪造Gitee CI服务器将Gitee集成到Jenkins中。这个插件允许Gitee在提交代码或打开/更新pull请求时触发Jenkins中的构建。它还可以将构建状态发送回Gitee。

Gitee插件

插件安装完成后暂不配置,接下来先完成android环境的配置,其实就是android_sdk和gradle环境的配置

[root]# mkdir /usr/android/android_sdk      创建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命令的安装一个就好了yum install -y unzip zip

解压后会出现一个tools的文件夹

[root]# vim /etc/profile      配置环境变量

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"

出现了一个警告:Warning: File /root/.android/repositories.cfg could not be loaded. 

说是是在目录 /root/.android/ 下没有找到文件repositories.cfg

解决办法:

使用touch命令在根目录下新建1一个repositories.cfg文件就可以了

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

然后执行sdkmanager xxxx就没问题了。

需要安装的东西比较多,下面给出清单(这里可以根据自己的项目需要自行安装,也可以根据编译过程中的报错再针对性的安装):

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

[root]# sdkmanager "build-tools;29.0.3" 这个上面已经安装了,编译工具

[root]#sdkmanager "platforms;android-28"    android版本对应的sdk版本

[root]#sdkmanager "platforms;android-29"    android版本对应的sdk版本

查看下安装后的目录

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

接下来把android 的sdk的环境变量去完善

[root]# vim /etc/profile      配置环境变量,在前面android配置的基础上修改,结果如下

export ANDROID_HOME=/usr/android/android_sdk

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

[root]#source /etc/profile    环境变量生效

最后验证下adb version

大功告成

接着配置gradle

[root]# mkdir /usr/gradle                            创建gradle下载的目录

[root]# cd /usr/gradle              

下载gradle,这里要注意下载与你项目编译使用的gradle版本保持一致,否则不能正常编译

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

解压到当前目录

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

配置环境变量

[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版本 验证gradle安装成功

gradle配置成功

在jenkins/configure system中配置android全局环境变量

配置全局工具配置项git,jdk,gradle工具的路径

不知道git的路径可以通过命令查找

[root]# whereis git

配置完成如下图

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350