首页 > 其他分享 >Jenkins 编译Android apk 流水线 - 打工人日志 - jobcher

Jenkins 编译Android apk 流水线 - 打工人日志 - jobcher

时间:2023-01-12 12:02:19浏览次数:65  
标签:home gradle apk jobcher sh Jenkins HOME tools def

Jenkins 编译Android apk,上传apk包,生成下载二维码,并推送钉钉

安装Android 环境

# 这里使用的是openjdk 1.8.0版本,有需要的话需要到java官网上进行下载对应的JDK版本。
$ yum install java -y

# 其他版本JDK的安装方式
$ mv jdk1.8.0_161 /usr/local/
$ ln -s /usr/local/jdk1.8.0_161 /usr/local/jdk
$ vim /etc/profile #配置JDK的环境变量
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
$ source /etc/profile #重新加载系统环境变量
$ java -version #查看java版本

Android SDK安装

# 下载sdk工具包
$ wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip

# 创建sdk工具文件夹和解压工具包
$ mkdir -p /opt/android/sdk
$ unzip sdk-tools-linux-3859397.zip -d /opt/android/sdk

# 使用sdkmanager工具配置构建工具和平台版本
$ cd /opt/android/sdk/tools/bin/
$ ./sdkmanager "build-tools;29.0.6" "platforms;android-29" "platform-tools"
$ ./sdkmanager --list #可以查看有哪些版本,自行选择对应的版本

# 增加系统环境变量
$ vim /etc/profile
export ANDROID_HOME=/opt/android/sdk
PATH=$PATH:$ANDROID_HOME:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$ANDROID_HOME/tools/bin

$ adb version
Android Debug Bridge version 1.0.41
Version 29.0.6-6198805
Installed as /opt/android/sdk/platform-tools/adb
$ wget https://downloads.gradle-dn.com/distributions/gradle-6.3-all.zip
$ mkdir /opt/gradle
$ unzip gradle-6.3-all.zip -d /opt/gradle/
$ vim /etc/profile
export PATH=$PATH:/opt/gradle/gradle-6.3/bin
$ source /etc/profile
$ gradle -v
------------------------------------------------------------
Gradle 6.3
------------------------------------------------------------

Build time: 2020-03-24 19:52:07 UTC
Revision: bacd40b727b0130eeac8855ae3f9fd9a0b207c60

Kotlin: 1.3.70
Groovy: 2.5.10
Ant: Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM: 1.8.0_201 (Oracle Corporation 25.201-b09)
OS: Linux 3.10.0-693.el7.x86_64 amd64
#!/bin/sh
source /etc/profile
# /home/编译目录
cd /home/编译目录 && gradle clean
cd /home/编译目录 && gradle assembleRelease
# 打包编译完成,在项目的app/build/outputs/apk中可以找到debug版本或者是release版本。
pipeline {
//使用标签 'master' 的节点
agent {label 'master'}
//环境变量
environment {
//成功运行特征
JEN_FEATURE = ''
//日志路径
JEN_LOG = ''
}

stages {
stage ('编译打包'){
steps {
sh 'cd /home/编译目录 && sudo git pull'
sh 'sh gradle-apk.sh'

}
}

stage ('上传'){
steps {
sh 'sshpass -p "password" scp /home/编译目录/app/build/outputs/apk/release/app-release.apk [email protected]:/home/上传目录/app-release.apk'
}
}

stage ('生成qr'){
steps {
echo "生成test qr"
sh "pwd && myqr 'https://www.nginx.com/app-release.apk' -n qrcode-`date +'%Y-%m-%d-%H%M%S'`.png -d /home/code/image"
sh "cd /home/code/image && git add ."
sh "cd /home/code/image && git commit -m 'new images'"
sh "cd /home/code/image && git push origin main"
echo "结束 end"
}
}
}


post {
success {
script {
env.DATETIME = sh(script:"date", returnStdout: true).trim()
env.QRCODE = sh(script:"ls -lhst /home/code/image | awk 'NR==2' | awk '{print \$10}'",returnStdout: true).trim()
def job_name = "# ${JOB_NAME} 流水线 执行成功"
def jenkinsid = """构建: 第 ${BUILD_ID} 次执行"""
def JEN_production = "> 部署节点: jenkins"
def build_url = "> 部署详情: [详情](${BUILD_URL})"
def jen_date = "> 执行时间: ${env.DATETIME}"
def jen_qrcode = "![qr](https://gitlab.com/jobcher/image/-/raw/main/${env.QRCODE})"

dingtalk (
robot: 'e3999649-d3f-钉钉key-4c57333a327b',
type: 'MARKDOWN',
title: job_name,
text: [
job_name,
jenkinsid,
'',
'---',
jen_qrcode,
JEN_production,
'',
build_url,
'',
jen_date
],
at: [
'手机号'
]
)
}
}

failure {
script {
env.DATETIME = sh(script:"date", returnStdout: true).trim()
def job_name = "# ${JOB_NAME} 流水线 执行失败"
def jenkinsid = """构建: 第 ${BUILD_ID} 次执行"""
def JEN_production = "> 部署节点: jenkins"
def build_url = "> 部署详情: [详情](${BUILD_URL})"
def jen_date = "> 执行时间: ${env.DATETIME}"

dingtalk (
robot: 'e3999649-d3f-钉钉key-4c57333a327b',
type: 'MARKDOWN',
title: job_name,
text: [
job_name,
jenkinsid,
'',
'---',
JEN_production,
'',
build_url,
'',
jen_date
],
at: [
'手机号'
]
)
}
}
}
}


欢迎关注我的博客 ​​www.jobcher.com​

标签:home,gradle,apk,jobcher,sh,Jenkins,HOME,tools,def
From: https://blog.51cto.com/u_15939323/6003957

相关文章

  • ubuntu 16.04 Jenkins 更改端口和改变语言设置
    使用ubuntuapt安装jenkins默认的端口是8080 此端口和tomcat的端口一般会有冲突,tomcat的端口一般就不太会改。我们就来改一下jenkins的端口来解决这个问题。一般我们apt......
  • apk签名
    签名工具:网盘压缩包  链接:https://pan.baidu.com/s/1okH9c_mhj-ZQvXqAK_ML1A?pwd=ddbh提取码:ddbh 工具使用:项目源码中找出以下两个文件  替换文件,点击脚本运......
  • Jenkins安装
    @目录1、Jenkins简介2、Jenkins安装2.1安装条件2.2安装JDK2.2.1检索可用包2.2.2安装2.3下载Jenkins的war包2.4启动jenkins并测试3、安装maven1、Jenkins简介Jenkin......
  • cocos creator教程:项目构建工具 - jenkins 搭建及使用
    muzzik教程:项目构建工具-jenkins搭建及使用windows环境搭建流程1.下载及安装官网:https://www.jenkins.io/2.配置jenkins权限打开服务面板找到jenk......
  • Dockerfile制作jenkins
    下载jenkins#wgethttps://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.386/jenkins.warrun_jenkins.sh#!/bin/bashjava-server-Xms1024m-Xmx1024m-Xss512k-ja......
  • Jmeter+Ant+Jenkins接口自动化测试平台
    一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成。Jmeter支持接口的测试,Ant支持自动构建,而Jenkins支持持续集成,所以三者组合......
  • docker 中安装 Jenkins
    ☝️、准备一个ubuntu虚拟机(或者linux服务器,下文简称服务器)服务器中已经配置好docker(默许大家都有了)服务器可以上外网(可以使用镜像加速)✌️、安装一、下载je......
  • jenkins学习
    Jenkins简介及在Windows上的简单使用示例Windows上安装和配置Jenkins ......
  • 关于Jenkins中view的创建以及通过与正则的方式将job-Item添加到指定View中
    在Jenkins中,我们可以通过创建View来分类的管理Job/Item,View在页面上方就像菜单栏一样,里面包含了自己这一类的所有Job/Item默认会有All的View,点击它右边的+可以创建一个自......
  • Jenkins实现代码的部署&回滚
    一、Jenkins介绍   Jenkins是一个独立的开源软件项目,是基于Java开发的一款CI(持续集成)&CD(持续交付)工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台。可......