Android持续化集成coding自动打包
一、在coding创建DevOps项目模板
1.DevOps模板提供持续化集成相关功能(构建计划、制品库)
二、在创建好的DevOps项目模板里创建代码仓库
1.上传项目代码至代码仓库
三、创建构建计划
1.可选择coding提供的Android构建过程或者自定义构建过程
2.自定义构建过程(选择静态配置的Jenkinsfile)
四、使用coding制品库存放打包好的apk文件
1.创建制品库,使用coding创建项目制品库
2.创建构建计划,使用coding持续化集成创建构建计划,构建计划使用静态Jenkinsfile
3.下图为静态Jenkinsfile代码块
pipeline {
agent any
stages {
stage('检出代码') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: GIT_BUILD_REF]],
userRemoteConfigs: [[
url: GIT_REPO_URL,
credentialsId: CREDENTIALS_ID
]]])
}
}
stage('编译构建APK') {
steps {
sh './gradlew clean && rm -rf ./app/build/'
sh './gradlew assembleRelease'
}
}
stage('上传apk至制品库') {
agent any
steps {
script {
sh "curl -T app/build/outputs/apk/release/*.apk -u ${PROJECT_TOKEN_GK}:${PROJECT_TOKEN} https://${ARTIFACT_IMAGE}-release.apk?version=${GIT_BUILD_REF}"
}
}
}
stage('获取版本名称和版本号') {
steps {
sh '''#!/bin/bash
filepath=`ls /root/workspace/build.gradle`
//获取版本号
versionname=`cat $filepath |grep versionName|awk \'{print $3}\'`
//获取版本code
versioncode=`cat $filepath |grep versionCode|awk \'{print $3}\'`
//获取打包好的apk名称
filePath=`ls /root/workspace/app/build/outputs/apk/release/*.apk`
fileName=${filePath##*/}
//打印相关信息
echo ${versionname//,/}
echo ${versioncode//,/}
echo apkurl=${COS_URL}$fileName
'''
}
}
}
environment {
//腾讯云cos存储桶域名(拼接apk名称就是完整下载链接)
COS_URL = 'https://gyapp-android-1257050538.cos.ap-nanjing.myqcloud.com/'
//项目名
ENTERPRISE = 'gzmpc'
//代码仓库名
PROJECT = 'androidzidonghua'
//制品库名
ARTIFACT = 'android'
//自定义apk名称
CODE_DEPOT = 'gyapp'
ARTIFACT_BASE = "${ENTERPRISE}-generic.pkg.coding.net"
ARTIFACT_IMAGE = "${ARTIFACT_BASE}/${PROJECT}/${ARTIFACT}/${CODE_DEPOT}"
}
}
五、使用腾讯云cos存储桶存放打包好的apk文件
1.创建腾讯云cos存储对象-存储桶,使用腾讯云cos存储桶功能创建存放apk文件地址,配置相关参数
2.创建构建计划,使用coding持续化集成创建构建计划,构建计划使用静态Jenkinsfile
3.使用coding构建计划创建cos环境变量
COS_SECRET_ID - 腾讯云访问密钥 SecretId
COS_SECRET_KEY - 腾讯云访问密钥 SecretKey
COS_BUCKET_NAME - 腾讯云 COS 存储桶名称
COS_BUCKET_REGION - 腾讯云 COS 存储桶地区(在coding上配置环境变量时取值为非中文)
4.下图为静态Jenkinsfile代码块
pipeline {
agent any
stages {
stage('检出代码') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: GIT_BUILD_REF]],
userRemoteConfigs: [[
url: GIT_REPO_URL,
credentialsId: CREDENTIALS_ID
]]])
}
}
stage('编译构建APK') {
steps {
sh './gradlew clean && rm -rf ./app/build/'
sh './gradlew assembleRelease'
}
}
stage('apk上传cos') {
steps {
sh 'sudo pip install --upgrade pip'
sh 'sudo pip install -U coscmd'
sh 'coscmd config -a ${COS_SECRET_ID} -s ${COS_SECRET_KEY} -b ${COS_BUCKET_NAME} -r ${COS_BUCKET_REGION}'
sh 'coscmd upload -r app/build/outputs/apk/release/*.apk /'
}
}
stage('获取版本名称和版本号') {
steps {
sh '''#!/bin/bash
filepath=`ls /root/workspace/build.gradle`
//获取版本号
versionname=`cat $filepath |grep versionName|awk \'{print $3}\'`
//获取版本code
versioncode=`cat $filepath |grep versionCode|awk \'{print $3}\'`
//获取打包好的apk名称
filePath=`ls /root/workspace/app/build/outputs/apk/release/*.apk`
fileName=${filePath##*/}
//打印相关信息
echo ${versionname//,/}
echo ${versioncode//,/}
echo apkurl=${COS_URL}$fileName
'''
}
}
}
environment {
//腾讯云cos存储桶域名(拼接apk名称就是完整下载链接)
COS_URL = 'https://gyapp-android-1257050538.cos.ap-nanjing.myqcloud.com/'
//项目名
ENTERPRISE = 'gzmpc'
//代码仓库名
PROJECT = 'androidzidonghua'
//制品库名
ARTIFACT = 'android'
//自定义apk名称
CODE_DEPOT = 'gyapp'
ARTIFACT_BASE = "${ENTERPRISE}-generic.pkg.coding.net"
ARTIFACT_IMAGE = "${ARTIFACT_BASE}/${PROJECT}/${ARTIFACT}/${CODE_DEPOT}"
}
}