美文网首页
jenkins持续集成gradle的android流程和主要脚本

jenkins持续集成gradle的android流程和主要脚本

作者: 究天人之际 | 来源:发表于2019-06-20 19:40 被阅读0次

本文系统环境:centos7

持续集成,操作代码主要分两部分,一、环境准备;二、jenkinsfile脚本编写;其它的一些细节基本上没有什么复杂的,多调试一下,应该就可以了。

一、环境准备

环境包括:1、android sdk环境;2、gradle环境安装;3、360加固助手(这一步根据自己项目情况参考或跳过)。

1、android sdk安装

下载android sdk linux版本,如下页面:

https://developer.android.com/studio/index.html

安装android sdk脚本如:

mkdir -p /temp/ && cd /temp/

wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip

mkdir -p /usr/local/android/android-sdk-linux/

unzip sdk-tools-linux-*-zip -d /usr/local/android/android-sdk-linux/

export ANDROID_HOME=/usr/local/android/android-sdk-linux

export PATH=$PATH:$ANDROID_HOME

## 安装版本

./tools/android update sdk -u -a -t 20

## 安装全部版本(如果只需要一种,且成功了,就不要执行这个了)

./tools/android update sdk --no-ui

## 安装 32 位 lib 库及libstdc++,Android SDK需要32位的lib才可以运行(一般服务器都是64位的)。

yum install glibc.i686

yum install zlib.i686

2、准备local.properties文件(编译的时候,需要用到):

在/usr/local/android/目录下,新建文件local.properties,内容如下:

sdk.dir=/usr/local/android/android-sdk-linux

3、gradle安装,下载

mkdir -p /temp/ && cd /temp/

## 根据自己项目,选择合适的版本

wget https://downloads.gradle.org/distributions/gradle-5.5-rc-3-all.zip

unzip gradle-5.5-rc-3-all.zip

mkdir -p /usr/local/gradle/

mv gradle-5.5-rc-3/*  /usr/local/gradle/ -f

export GRADLE_HOME=/usr/local/gradle/

export PATH=$PATH:$GRADLE_HOME/bin

export GRADLE_HOME PATH

## (最后好像不需要安装。。。啊,在逗我?)

4、安装360加固保工具

mkdir -p /temp/  /temp/jiagu_temp && cd /temp/

wget http://down.360safe.com/360Jiagu/360jiagubao_linux_64.zip

mkdir -p  /temp/jiagu_temp && rm -rf /temp/jiagu_temp/

unzip 360jiagubao_linux_64.zip -d jiagu_temp

mkdir -p /usr/local/android/360jiagu/

mv ./jiagu_temp/jiagu/* /usr/local/android/360jiagu/

## 上传keystore签名证书

上传证书appkey.jks到:/usr/local/android/360jiagu/

## 登录360加固保(第一次执行即可,可用本地登录后的jiagu.db文件替换服务器上jiagu.db文件,跳过这一步)

java -jar /usr/local/android/360jiagu/jiagu.jar -login <username> <password>

## 导入签名 keystore 信息(第一次执行即可)

java -jar /usr/local/android/360jiagu/jiagu.jar -importsign /usr/local/android/360jiagu/appkey.jks <keystore_password> <alias> <alias_password>

## 加固测试

java -jar  /usr/local/android/360jiagu/jiagu.jar -jiagu ./app-release.apk ./output -autosign - automulpkg

二、jenkinsfile脚本编写

这里我使用的是jenkins流水线。所以,这里把jenkinsfile脚本记录一下,别的都很简单,就不记录了。

其中,有部分参数是从jenkins传递而来,根据项目情况调整一下就好。最后发布部分,用的的release.sh脚本文件,就是用新版本替换就版本的过程。这里没有往app版本服务添加升级记录的内容,使用的时候大家可以结合自身环境补充。

以下是jenkinsfile的内容:

node {

  def transHost="mytestserver.com"

  def transPort="22"

  def JOB_NAME = ${env.JOB_NAME}

  def JOB_VERSION = ${env.JOB_VERSION}

  def RELEASE = ${env.RELEASE}"

  def repo="git@github.com:app/android_myapp.git"

  def branch="developer"

  def jiaguPath="/usr/local/android/360jiagu/jiagu.jar"

  stage("拉取代码") {

      deleteDir()

      git credentialsId: "cicd",branch: "${branch}", url: """${repo}"""

  }

  stage('编译打包') {

      sh """sudo chmod +x gradlew"""

      sh """cp /usr/local/android/local.properties ./ """

      sh """./gradlew assemble"""

  }

  stage('加固签名') {

      sh "mkdir -p sign-out-dir && rm sign-out-dir/* -f"

      sh "java -jar $jiaguPath -jiagu ./app/build/outputs/apk/myapp/release/app-myapp-release.apk ./sign-out-dir -autosign - automulpkg"

      sh """tar zcf ${env.JOB_NAME}.tar.gz sign-out-dir/*.apk"""

  }

  stage("远程传输") {

      sh """ssh -o StrictHostKeyChecking=no -p $transPort root@$transHost "mkdir -p /app/jenkins/update/${JOB_NAME}/${JOB_VERSION}" """

      sh """rsync -avuP -e "ssh -o StrictHostKeyChecking=no -p $transPort" ${env.JOB_NAME}.tar.gz root@$transHost:/app/jenkins/update/${JOB_NAME}/${JOB_VERSION}"""

  }

  stage("发布") {

      sh """ssh -o StrictHostKeyChecking=no -p $transPort root@$transHost "bash /app/jenkins/scripts/release.sh ${JOB_NAME} ${JOB_VERSION} ${RELEASE}" """

  }

  stage("清理工作空间") {

      cleanWs cleanWhenAborted: false, cleanWhenFailure: false, cleanWhenNotBuilt: false, cleanWhenUnstable: false 

  }

}

相关文章

网友评论

      本文标题:jenkins持续集成gradle的android流程和主要脚本

      本文链接:https://www.haomeiwen.com/subject/zdaplxtx.html