美文网首页
自动拉代码和切换分支bat

自动拉代码和切换分支bat

作者: liguiyun | 来源:发表于2020-12-11 15:41 被阅读0次
::快速编译打包apk脚本

echo  "$$package_begin$$"
sleep 1
::执行打包命令前,需要先定位到项目根目录


::echo %pa%
::rd .idea

::先去Applibs 去切换分支拉取代码
cd ../..
cd AppLibs
git checkout master
git pull
::回到主分支 然后拉取代码
cd ..
cd AndroidLeader
git checkout master
git pull
::开始打包
::gradlew build
::执行打包命令
gradle uploadApk

echo -e "$$package success$$"

::桌面右上角弹出通知
notify-send build.sh "package down!"
pause

import groovy.json.JsonOutput

def uploadApk() {
    def apkFile = getApkPath()
    def twoHyphens = "--"
    def boundary = "*********"
    def end = "\r\n"
    //模拟表单上传 multipart/form-data
    def conn = new URL("https://www.pgyer.com/apiv2/app/upload").openConnection()
    conn.setRequestMethod('POST')
    conn.setRequestProperty("Connection", "Keep-Alive")
    conn.setRequestProperty("Charset", "UTF-8")
    conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary)
//可以允许若干 控件域 同时上传其值,每个域值使用 boundary 分割
    conn.setDoInput(true)
    conn.setDoOutput(true)

    println "*************** start upload file ***************"

    // 添加参数 api_key
    def sb = new StringBuilder();
    sb.append(twoHyphens).append(boundary).append(end)
    sb.append("Content-Disposition: form-data; name=_api_key")
    sb.append(end).append(end)
    sb.append("5e58ea99d93b16451f83793ab74db8fa").append(end)

    //添加 app_key
    sb.append(twoHyphens).append(boundary).append(end)
    sb.append("Content-Disposition: form-data; name=app_key")
    sb.append(end).append(end)
    sb.append("470e351df0e203f2451bde1f73125757").append(end)

    //添加参数:buildInstallType 设置密码安装
    sb.append(twoHyphens).append(boundary).append(end)
    sb.append("Content-Disposition: form-data; name=buildInstallType")
    sb.append(end).append(end)
    sb.append(2).append(end)

    //添加参数:buildPassword 设置密码
    sb.append(twoHyphens).append(boundary).append(end)
    sb.append("Content-Disposition: form-data; name=buildPassword")
    sb.append(end).append(end)
    sb.append("120").append(end)

    //添加参数file: 需要上传的apk文件
    sb.append(twoHyphens).append(boundary).append(end)
    sb.append("Content-Disposition: form-data; name=file;filename=").append(apkFile)
    sb.append(end).append(end)

    println "===========参数============" + sb.toString()

    def dos = new DataOutputStream(conn.getOutputStream())
    dos.writeBytes(sb.toString())
    dos.flush()
    sb.delete(0, sb.length())

    def fis = new FileInputStream(apkFile)
    byte[] bf = new byte[8192]
    int len
    while ((len = fis.read(bf)) != -1) {
        dos.write(bf, 0, len)
    }
    sb.append(end)
    sb.append(twoHyphens).append(boundary).append(end)
    dos.writeBytes(sb.toString())

    dos.flush()
    fis.close()
    dos.close()
    conn.connect()

    def text = conn.getContent().text
    def resp = new groovy.json.JsonSlurper().parseText(text)
    println resp
    println "*************** upload finish ***************"

    //浏览器中打开短连接
    println("测试" + resp.data)
    def url = "https://www.pgyer.com/" + resp.data.buildShortcutUrl
     sendMsgToDing(resp.data)
    println("上传成功,应用链接:" + url)
}
/**
 * 发送到钉钉
 */
class ContentModel {
    String text
    String title
    String picUrl
    String messageUrl
}

def sendMsgToDing(def data) {
    def conn = new URL("https://oapi.dingtalk.com/robot/send?access_token=34e7c8a2bd608cb6d86245ab67de1077b65f90d411a671905a335de0406398d1").openConnection()
    conn.setRequestMethod('POST')
    conn.setRequestProperty("Connection", "Keep-Alive")
    conn.setRequestProperty("Content-type", "application/json;charset=UTF-8")
    conn.setConnectTimeout(30000)
    conn.setReadTimeout(30000)
    conn.setDoInput(true)
    conn.setDoOutput(true)
    def dos = new DataOutputStream(conn.getOutputStream())
    HashMap<String, Object> map = new HashMap<>()
    map.put("msgtype", "link")
    ContentModel contentModel = new ContentModel()
    contentModel.text = "App已经上传至蒲公英, 可以下载使用了${getUpdateContent()}" + data.buildCreated
    contentModel.title = "${getAppName()}App${data.buildVersion}上传提醒"
    contentModel.picUrl = data.buildQRCodeURL
    contentModel.messageUrl = "https://www.pgyer.com/" + data.buildShortcutUrl
    map.put("link", contentModel)
    def JSON = new JsonOutput().toJson(map)
    println(JSON)
    dos.writeBytes(JSON)
    def input = new BufferedReader(new InputStreamReader(conn.getInputStream()))
    String line = ""
    String result = ""
    while ((line = input.readLine()) != null) {
        result += line
    }
    dos.flush()
    dos.close()
    input.close()
    conn.connect()
    println("查看发送钉钉结果" + result)
}

def getApkPath() {
    String buildType = getBuildType().toLowerCase()
    def file = new File(buildDir, "/outputs/apk/${getAreaName()}/${buildType}/app_${getApplicationId()}-${getVersionName()}-${releaseTime()}.apk")
    println('绝对路径' + file.absolutePath)
    return file.absolutePath
}


/**
 *
 * @return
 */
def getApplicationId() {
    return project.property('android').properties['defaultConfig'].properties['applicationId']
}

def getVersionName() {
    return project.property('VERSION_NAME')
}
/**
 * 获取地区名字
 */
def getAreaName() {
    return 'ZhengZhou'
}


//获取编译时间
def releaseTime() {
    return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}

def getAppName() {
    return "领导端"
}

def getUpdateContent() {
    return "更改个人中心到最下面和自动上传打包功能"
}
/**
 * 获取版本类型
 * @return
 */
def getBuildType() {
    return "Release"
}

task uploadApk(group: "upload") {
    dependsOn("assemble${getAreaName()}${getBuildType()}")
//    等待编译完成后再执行上传操作
    doLast {
        uploadApk()
    }
}


相关文章

  • 自动拉代码和切换分支bat

  • git使用

    拉代码 查看远程分支 切换分支

  • git常用命令

    一、基础操作常用 二、切换分支 三、查看版本号和切换版本号 四、从指定分支拉取代码

  • idea使用Git将主干代码合并到分支

    1、更新拉取分支dev代码 2、切换到主干分支,更新拉取主干master代码 3、因为是主干合并到分支,代码都更新...

  • Git常用命令

    拉取代码git pull 提交代码git push 切换分支git checkout dev(分支名称) 查看代码...

  • git命令行

    1.向本地拉取dev分支 2.切换到dev分支 3.查看本地代码分支 4.提交拉取代码

  • git常用操作

    新建分支 切换到新分支 提交分支 切换到主分支 把分支的代码merge到主分支 git push推上去 拉取主干分支

  • git常用命令

    常用命令 拉取代码 创建分支 切换本地分支 切换分支并关联远程分支 查看本地所有分支 查看远程所有分支 删除本地分...

  • git 相关命令学习

    本地分支指向新的远程分支 切换到新的远程分支拉取最新代码 切换到本地分支 git branch --unset-u...

  • GIT流程-结合灰度发布

    合代码 G3 -> develop 切换到 develop 分支 拉取 develop 分支远程代码,更新到本地 ...

网友评论

      本文标题:自动拉代码和切换分支bat

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