在移动端DevOps流构建环节中,我们通常会采用服务器Jenkins进行Android/iOS打包测试、灰度、上线生产等集成操作,以下是Mac终端连接远程Linux安装Jenkins并配置Android构建环境关键步骤记录,可以在实践中作为参考
1.连接远程Linux服务器
通过Mac终端运行下面命令
ssh [email protected]
会提示 :The authenticity of host '00.000.00.00 (00.000.00.00)' can't be established.
ECDSA key fingerprint is SHA256:CjvSLfRn/IeKE6O0+y/6XERGt1m6AHiHRgX76U/W+3E.
Are you sure you want to continue connecting (yes/no/[fingerprint])?表示意思:无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?
所谓"公钥指纹",是指公钥长度较长(这里采用RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,再进行比较,就容易多了。
很自然的一个问题就是,用户怎么知道远程主机的公钥指纹应该是多少?回答是没有好办法,远程主机必须在自己的网站上贴出公钥指纹,以便用户自行核对。
假定经过风险衡量以后,用户决定接受这个远程主机的公钥输入 yes ,会提示 : Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts ,表示host主机已经得到认可,此时输入密码xxxxxxx
如果密码正确,就可以登录了。当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。
每个SSH用户都有自己的known_hosts文件,此外系统也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保存一些对所有用户都可信赖的远程主机的公钥
2.更新CentOS 7 系统
通过Mac终端运行下面命令
sudo yum install epel-release
sudo yum update
sudo reboot
3.安装OpenJDK
通过Mac终端运行下面命令
sudo yum install java-1.8.0-openjdk.x86_64
java -version
sudo vim ~/.bash_profile
JAVA_HOME=/usr/local/java-1.8.0-openjdk.x86_64
PATH=$JAVA_HOME/tools:$PATH
export JAVA_HOME
export PATH
source ~/.bash_profile
4.安装wget命令
通过Mac终端运行下面命令
sudo yum -y install wget
5.通过Linux服务器查看文件路径
通过Mac终端运行下面命令
whereis java
which java
echo $JAVA_HOME
echo $PATH
6.安装Android sdk
下载地址 http://tools.android-studio.org/index.php/sdk/
通过Mac终端运行下面命令
wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
tar -zvxf android-sdk_r24.4.1-linux.tgz
mv android-sdk-linux /usr/local/
7.通过sdkmanager 命令安装Android工具包
- ./sdkmanager packages 其中packages代表需要安装的工具包的path , 查看path 可通过 ./sdkmanager --list 命令,
packages参数 必需要使用引号引起来,可同时添加多个packages参数同时安装多个包(多个包之间用空格隔开,并各自使用引号引起来) - 安装平台工具包(adb 和 fastboot 命令的包)
./sdkmanager "platform-tools" - 同时安装多个包
./sdkmanager "platform-tools" "build-tools;28.0.3" "platforms;android-28" - 更新已安装的包
./sdkmanager --update 卸载已安装的包
./sdkmanager --uninstall "安装包path"卸载单个 ./sdkmanager --uninstall "build-tools;28.0.0"
卸载多个 ./sdkmanager --uninstall "build-tools;28.0.0" "platforms;android-26"
8.配置ANDROID_HOME环境变量
通过Mac终端运行下面命令
sudo vim ~/.bash_profile
ANDROID_HOME=/usr/local/android-sdk-linux
PATH=$ANDROID_HOME/tools:$PATH
export ANDROID_HOME
export PATH
source ~/.bash_profile
9.更新Android各个版本的sdk
通过Mac终端运行下面命令
android list sdk --all
按序列号update
android update sdk -u --all --filter 1,2,19,20,21,22,23,24,25,27,29,35,36,46,47,48,49,50,51,52,53,54,55,56,57,202
10.安装Jenkins
通过Mac终端运行下面命令
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
11.启动Jenkins
通过Mac终端运行下面命令
systemctl start jenkins.service
执行systemctl status jenkins.service查看服务状态,如果出现启动失败,失败错误信息为Starting Jenkins bash: /usr/bin/java: No such file or directory是java环境配置的问题,找到你的jdk目录,创建软链接即可:
ln -s /usr/lib/jdk1.8.0_251/bin/java /usr/bin/java
12.打开Jenkins
浏览器输入地址 http::8080
http://00.000.00.00:8080/login?from=%2F
13.查看解锁密码
通过Mac终端运行下面命令
sudo vim /var/lib/jenkins/secrets/initialAdminPassword
14.卸载Jenkins
卸载yum方式安装的jenkins(默认安装主目录是在/var/lib/jenkins/)
service jenkins stop yum clean all --可以不执行 yum -y remove jenkins
卸载rpm方式安装的jenkins
rpm -e jenkins rpm -ql jenkins find / -iname jenkins | xargs -n 1000 rm -rf
15.上传文件到服务器
上传文件格式:scp - 本地文件路径 - 远程服务器用户名@域名/ip - 冒号/需要保存的路径/需要保存的文件名
scp /Users/xxxx/Downloads/login.keychain [email protected]:/var/lib/jenkins/kpp_upload/login.keychain
上传文件夹格式:scp -r【本地文件的路径】【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】
scp /Users/xxxx/Downloads/test [email protected]:/var/lib/jenkins/kpp_upload/
16.安装Gradle
通过Mac终端运行下面命令
wget https://services.gradle.org/distributions/gradle-6.7.1-bin.zip
17.解压安装包
通过Mac终端运行下面命令
yum install -y unzip zip
unzp gradle-4.4.1-all.zip
18.登录Jenkins
进入Jenkins管理页面,选择系统管理
选择全局配置
配置全局属性键值对 : ANDROID_HOME
配置钉钉通知webhook选择插件管理
安装git、gitlab、钉钉等必要插件
选择全局配置工具
配置JDK目录
配置Git目录
配置Gradle目录
配置Maven目录选择节点管理
配置服务器节点,例如Linux连接远程Mac终端节点
新建构建任务
开启Jenkins构建项目之旅
19.其他Linux操作命令
- 强制退出(注意带:)
:q!+enter - 强制保存
:w!+enter - 退出并保存
:wq+enter